You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL空间查询:判断经纬度坐标点所属多边形区域的实现方法

实现方案

核心使用SQL Server原生空间函数STContains()判断点是否在多边形范围内,配合左关联实现无匹配时返回空值。

第一步:先确认空间参考ID(SRID)

执行以下语句查询tblGeo中SHAPE字段的统一SRID,后续查询需保持SRID一致:

SELECT DISTINCT SHAPE.STSrid FROM tblGeo

常用的WGS84坐标系对应SRID为4326,可根据实际查询结果替换后续代码中的对应参数。

第二步:执行关联查询

SELECT
    p.PID,
    p.LOCATION AS Location,
    p.LAT AS Lat,
    p.LNG AS Lng,
    g.GEOAREA AS GeoArea
FROM
    tblPoint p
LEFT JOIN tblGeo g
    -- 先将经纬度转为和SHAPE字段同SRID的geometry点类型,参数顺序为 经度、纬度
    ON g.SHAPE.STContains(geometry::Point(p.LNG, p.LAT, 4326)) = 1

注意事项

  • 若你导入的SHAPE字段是GEOGRAPHY类型而非GEOMETRY,则点的创建方式改为geography::Point(p.LAT, p.LNG, 4326),注意GEOGRAPHY类型的参数顺序为先纬度、后经度
  • 数据量较大时可给SHAPE字段创建空间索引提升查询效率,参考创建语句:
CREATE SPATIAL INDEX IX_tblGeo_SHAPE
ON tblGeo(SHAPE)
USING GEOMETRY_AUTO_GRID
WITH (BOUNDING_BOX = (XMIN=-180, YMIN=-90, XMAX=180, YMAX=90)) -- 边界范围根据你的实际数据调整
  • 若存在单个点匹配到多个多边形的情况,可根据业务需求添加去重或优先级判断逻辑。

内容的提问来源于stack exchange,提问作者rak11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:06:01