首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NettopologySuite和点空间WKTReader

NettopologySuite和点空间WKTReader
EN

Stack Overflow用户
提问于 2018-06-09 04:21:03
回答 1查看 3.7K关注 0票数 6

所以我有一堆WKT来表示一个多多边形。我只使用DotSpatial来操作几何图形。具体地说,我正在尝试从我的WKT中获得一个DotSpatial.Topology.IGeometry。

不幸的是,DotSpatial团队最近将很多东西转移到了NetTopologySuit中,而这正是他们的WKTreader所在的地方。

但是读取器传递回一个GeoAPI.Geometries.IGeometry,您不能简单地将其转换为DotSpatial.Topology.IGeometry,因为它们不是同一个类。实际上,我不得不在三种不同的API (DotSpatial,GeoAPI和NetTopologySuite)之间转换本质上相同的类,这让我有点恼火,因为它们都有类似的名称。

我所要做的就是从熟知的文本中提取一个DotSpatial.Topology.IGeometry。具体来说,这是一个我正在使用的MultiPolygon,但不管怎样。

我真的不希望有一些很棒的条件语句或select语句来弄清楚如何处理GeoAPI IGeometry类,这样我才能使用它。我已经有一个很大的转换器类,可以将各种几何图形类转换成dotSpatial,我宁愿完全去掉它。代码越少越好。

有人可以协助将GeoAPI.Geometries.IGeometry转换为DotSpatial.Geometries.IGeometry吗?我不能只是强制转换它,因为我得到了以下错误:无法将类型为'NetTopologySuite.Geometries.MultiPolygon‘的对象强制转换为类型为'DotSpatial.Topology.IGeometry’。

有什么想法吗?

提前谢谢你,E

EN

回答 1

Stack Overflow用户

发布于 2018-08-15 05:41:25

很抱歉给你造成了混乱。从将IGeometry接口保留在DotSpatial中并将其向下推送到GeoAPI中,有一个过渡。这允许使用一个公共接口在两个库之间传递类信息,而不需要直接依赖,但让NetTopologySuite专注于与来自Java Topology Suite和其他拓扑改进的最新更新保持同步,而无需DotSpatial团队在自己的项目中一直复制源代码。诀窍是将您的变量定义为一个GeoAPI IGeometry,这样两个库都可以使用该对象。我不认为DotSpatial会直接引用NetTopologySuite。另外,这篇文章可能来自于过渡还在开发中的时候,所以希望现在只要你有最新的版本,这篇文章就是直接的。(我在2018年5月22日使用了commit cfb523,可在此处获得:https://github.com/DotSpatial/DotSpatial

代码语言:javascript
复制
       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);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50767900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档