【问题标题】:how can you convert KML to WKT in c#?如何在 C# 中将 KML 转换为 WKT?
【发布时间】:2019-12-05 22:23:40
【问题描述】:

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

【问题讨论】:

    标签: c# .net kml wkt nettopologysuite


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,我最终自己写了出来(从来没有听说过 sharpkml!),我只是将 kml xsd 序列化为一个 cs 文件,然后遍历抽象几何来构建一个信封,然后导出到从那里开始的几何。最后并不难,只是出于某种原因认为它已经存在于 IO.KML 库中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 2020-12-26
    • 2018-09-29
    • 2011-02-23
    相关资源
    最近更新 更多