0

我可以使用 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 对象,但只有一个作家。有没有办法做到这一点,我没有看到?

4

1 回答 1

1

您是对的 - NetTopologySuite 没有任何读取 KML 的功能。这可能是因为 KML 主要面向地图叠加功能,并且具有许多结构(如照片和屏幕叠加),这些结构不会转化为更通用的几何结构。

KML 确实具有等效的通用几何图元(点、线、多边形),因此您只需要某种方式来加载它们,然后您就可以实现变换。

最直接的方法是确定您需要哪些 KML 元素,然后实施两步转换。使用 SharpKml.Core 等库加载它们(展平和提取感兴趣的结构),然后实现构建器将它们转换为 NTS 等效项。有关如何从 KML 中提取感兴趣元素的文档可在此处访问:https ://github.com/samcragg/sharpkml/blob/master/docs/ExtractingElements.md

于 2020-01-08T12:15:51.497 回答