3

我正在使用OSMSharp(C# OpenStreetMap 库)从 osm.pbf 文件中获取区域(例如城市、州)的边界。我得到的结构是一个包含Ways的Relation ,它由Nodes组成。Ways 包含一组 WGS84 点(纬度、经度),这些点由作为 Ways 一部分的节点表示。组合方式(方式就像具有多个点的线)可以产生一个或多个表示区域区域的多边形。我需要帮助才能到达那里。

方式的顺序不是连续的,并且不清楚哪个方式是哪个区域多边形的一部分(如果有多个)。我认为 C# NetTopologySuite 有一种方法可以将这些方法组合到一个或多个多边形中,以便使用OsmSharp.FilterSpatial方法。但我找不到它。有没有人知道可以执行此操作的 C# 库?

4

1 回答 1

3

找到了解决方案。NetTopologySuite Polygonizer非常适合解决此问题。

List<IGeometry> lines = new List<IGeometry>();
lines.Add(new LineString(new Coordinate[] { new Coordinate(0, 0), new Coordinate(1, 0) }));
lines.Add(new LineString(new Coordinate[] { new Coordinate(1, 0), new Coordinate(1, 1) }));
lines.Add(new LineString(new Coordinate[] { new Coordinate(1, 1), new Coordinate(0, 1) }));
lines.Add(new LineString(new Coordinate[] { new Coordinate(0, 1), new Coordinate(0, 0) }));

Polygonizer polygonizer = new Polygonizer();
polygonizer.Add(lines);

IList<IGeometry> polys = polygonizer.GetPolygons();
于 2020-07-04T17:37:38.800 回答