也许这是一个新手问题。我是 GIS 新手,到目前为止我无法找到答案。
我正在研究将管理单元(州、县、社区、城市等)作为几何(边界/区域)存储在数据库中的要求,以便能够基于包含操作进行查询,例如包含给定的列表单元点(返回社区、国家和州)或给定多边形(返回包含城市的县,两者都仅编码为多边形,未定义其他关系
在给我的数据中,行政单位是使用MultiSufrace
, SurfaceMembers
, Surfaces
,定义的PolygonPatches
据我所知,SQL 数据库提供程序和 ORM 仅使用基本的 OGC 定义的几何图形(我知道 PostGIS 有一些扩展类型,但我想让解决方案与多个 SQL 提供程序兼容)
该项目正在使用以下技术堆栈
- .NET 5
- 网络拓扑套件 (NTS) 2.3
- 实体框架核心 5.0.8
- 数据存储层需要兼容 SQL Server、SQLite 和 PostgreSQL
假设所有领域都与行政单位相关,是否可以将 GML 几何转换为 EFCore / NTS / SQL 提供程序支持的几何?根据 EF Core 文档,它仅支持以下内容:Geometry
, Point
, LineString
, Polygon
, GeometryCollection
, MultiPoint
, MultiLineString
, MultiPolygon
. CircularString
、CompoundCurve
和CurvePolygon
NTS 不支持。
行政单元 GML 几何示例:
<gml:MultiSurface gml:id="..." srsName="urn:ogc:def:crs:EPSG::2180" srsDimension="2">
<gml:surfaceMember>
<gml:Surface gml:id="..." >
<gml:patches>
<gml:PolygonPatch>
<gml:exterior>
<gml:LinearRing>
<gml:posList>
...
</gml:posList>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing>
<gml:posList>
...
</gml:posList>
</gml:LinearRing>
</gml:interior>
</gml:PolygonPatch>
</gml:patches>
</gml:Surface>
</gml:surfaceMember>
</gml:MultiSurface>