Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c语言中将KML转换为WKT?_C#_.net_Kml_Wkt_Nettopologysuite - Fatal编程技术网

C# 如何在c语言中将KML转换为WKT?

C# 如何在c语言中将KML转换为WKT?,c#,.net,kml,wkt,nettopologysuite,C#,.net,Kml,Wkt,Nettopologysuite,我可以使用nettopologysuite轻松地将WKT转换为KML,例如: WKTReader wktR = new WKTReader(); GeoAPI.Geometries.IGeometry geom = wktR.Read(wktString); KMLWriter writer = new KMLWriter(); string kml = writer.Write(geom); 但我找不到任何文件或关于如何走另一条路的想法。我想我需要一个来自nettopologysuite I

我可以使用nettopologysuite轻松地将WKT转换为KML,例如:

WKTReader wktR = new WKTReader();
GeoAPI.Geometries.IGeometry geom = wktR.Read(wktString);
KMLWriter writer = new KMLWriter();
string kml = writer.Write(geom);

但我找不到任何文件或关于如何走另一条路的想法。我想我需要一个来自nettopologysuite IO KML的KMLReader对象,但只有一个writer。有没有一种方法我看不到?

你是对的-NetTopologySuite没有任何读取KML的功能。这可能是因为KML主要面向地图覆盖功能,并且有许多结构,如照片和屏幕覆盖,不能转换为更通用的几何结构

KML确实具有等效的通用几何图元,包括点、线、多边形,所以您只需通过某种方式加载它们,然后就可以实现变换


最直接的途径是确定需要哪些KML元素,并实现两步转换。使用诸如SharpKml.Core flatting之类的库加载它们并提取感兴趣的结构,然后实现构建器将它们转换为NTS等价物。关于如何从KML中提取感兴趣的元素的文档可在此处访问:

谢谢,我最后写下了我自己从未听说过的sharpkml!在这里,我只是将kml xsd序列化为一个cs文件,并遍历抽象几何体以构建一个信封,然后从那里导出到几何体。最后并不难,只是出于某种原因认为它已经存在于IO.KML库中