0

也许这是一个新手问题。我是 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. CircularStringCompoundCurveCurvePolygonNTS 不支持。

行政单元 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>
4

0 回答 0