Ed *_*mer 6 c# geoapi nettopologysuite dotspatial
所以我有一堆代表多多边形的 WKT。我专门使用 DotSpatial 来操作几何图形。具体来说,我试图从我的 WKT 中获取 DotSpatial.Topology.IGeometry。
不幸的是,DotSpatial 的家伙最近将很多东西移到了 NetTopologySuit 中,这就是他们的 WKTreader 所在的地方。
但是读取器传回一个 GeoAPI.Geometries.IGeometry,您不能将其强制转换为 DotSpatial.Topology.IGeometry,因为它们不是同一个类。不得不在三个不同的 API(DotSpatial、GeoAPI 和 NetTopologySuite)之间转换本质上相同的类,这让我感到有点恼火,这些 API 都具有类似的名称。
我想要做的就是从众所周知的文本中提取 DotSpatial.Topology.IGeometry。具体来说,它是我正在使用的 MultiPolygon,但无论如何。
我真的不想有一些很好的条件或选择语句来弄清楚如何处理 GeoAPI IGeometry 类以便我可以使用它。我已经有一个很大的转换器类,用于将各种几何类转换为 dotSpatial,我宁愿完全摆脱它。更少的代码是更好的代码。
任何人都可以协助将 GeoAPI.Geometries.IGeometry 转换为 DotSpatial.Geometries.IGeometry 吗?当我收到以下错误时,我不能直接投射它:无法将“NetTopologySuite.Geometries.MultiPolygon”类型的对象投射到“DotSpatial.Topology.IGeometry”类型。
有任何想法吗?
提前致谢,E
对困惑感到抱歉。从将 IGeometry 接口保留在 DotSpatial 并将其下推到 GeoAPI 中,有一个过渡。这允许使用公共接口在两个库之间传递类信息而无需直接依赖,但让 NetTopologySuite 专注于与来自 Java Topology Suite 的最新更新和其他拓扑改进保持同步,而无需 DotSpatial 团队进行复制源一直在他们自己的项目中。诀窍是将变量标注为 GeoAPI IGeometry,以便两个库都可以使用该对象。DotSpatial 不直接引用 NetTopologySuite 我不认为。此外,这篇文章可能是在过渡仍在开发中的时候发布的,所以希望现在只要你有最新版本就可以了。(我在 2018 年 5 月 22 日使用了 commit cfb523,可在此处获得:https://github.com/DotSpatial/DotSpatial
using GeoAPI.Geometries;
using NetTopologySuite.IO;
using DotSpatial.Data;
// From any WKT string
String WKT = "MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 10 30, 10 10, 30 5, 45 20, 20 35),(30 20, 20 15, 20 25, 30 20)))";
// Create a Well Known Text Reader from NetTopologySuite
WKTReader reader = new WKTReader();
// NetTopologySuite passes back a GeoApi IGeometry. This is a shared interface that can be used by both libraries.
IGeometry geom = reader.Read(WKT);
// Create a Feature (a DotSpatial object) using the GeoApi IGeometry from NetTopologySuite.
Feature f = new Feature(geom);
Run Code Online (Sandbox Code Playgroud)