如何使用NetTopologySuite与MS SQL Server存储笛卡尔坐标系坐标?
SQL Server 直接存储EPSG 3857笛卡尔坐标方案
- 首先明确核心误区:SQL Server 中只有
geography类型要求使用内置预置的经纬度类SRID,你需要使用的geometry类型完全支持自定义SRID存储米制X/Y笛卡尔坐标,不需要数据库预置对应坐标系的投影参数。 - 操作流程完全符合你的要求,无需额外重投影:
- 建表时直接使用
geometry作为空间字段类型,无需额外配置
CREATE TABLE your_spatial_table ( id INT PRIMARY KEY IDENTITY(1,1), geom GEOMETRY NOT NULL )
- 写入数据时直接传入EPSG 3857的坐标,指定SRID为3857即可,示例SQL如下:
-- 示例插入EPSG 3857坐标系下的点坐标 INSERT INTO your_spatial_table (geom) VALUES (geometry::STGeomFromText('POINT (12950000 4860000)', 3857))
- 后端NetTopologySuite对接无需修改原有3857坐标系的处理逻辑,读写数据时不需要做坐标系重投影,EF Core等ORM的NTS空间扩展原生支持该场景的类型映射。
- 配套使用说明:
- 直接调用SQL Server
geometry类型的内置方法计算距离、面积时,返回结果就是3857坐标系对应的米制单位,符合你的距离计算需求。 - 不要误用
geography类型存储3857坐标,该类型仅支持球面经纬度坐标逻辑,会触发坐标范围校验报错。
- 直接调用SQL Server
内容的提问来源于stack exchange,提问作者evrc
相关产品推荐
相关产品推荐

