【发布时间】:2014-02-11 20:50:56
【问题描述】:
我是使用 SQL Server 2012 的初学者。我想确定一个数据库中表 A 中的一组纬度/经度是否落在另一个数据库的表 B 中的多边形内;或者最接近那些纬度/经度的多边形。我知道以前有人问过这个问题,但我可以在这个独特的场景中使用一些指导。
表 A 包含两组位置数据 - 一组是使用第一组纬度/经度创建的 几何 列;第二组位置数据由两列组成,其中包含第二组纬度/经度的纬度/经度地理值。希望这是有道理的。本质上是三列:几何,纬度,经度
表 B 包含几何格式的多边形。
我已经能够使用表 B 的几何列上的表 A 中的几何列进行空间连接:
SELECT
TableB.ID
,TableA.*
FROM
TableB JOIN TableA ON TableA.geometry_column.STWithin(TableB.geometry_column)=1
现在我被困住了。我的问题是:
- 如何将表 A 的地理纬度/经度与表 B 的几何列匹配?我知道我需要转换,但哪种方式?我是否使用转换后的数据创建一个临时表?
- 我假设我可以使用 STIntersect 或 STWithin 来查找多边形中的纬度/经度;有没有一种操作可以找到最接近纬度/经度的多边形?
- 如何在我的查询中嵌入不同的选择,以便吐出一个表,我的结果按 TableB ID 分组?理想情况下,我希望看到 TableB ID 与对应的 TableA Geometry、Table A Lat/Longs inside 以及 Table A lat/longs 最接近。
希望这一切都有意义。这是 ArcGIS 中的五分钟手动操作。我想知道如何在 SQL 中做到这一点。希望有人愿意破解它!我知道我有很多阅读要做。 干杯,并感谢您提供到目前为止对我有帮助的所有信息。
-CM
【问题讨论】:
标签: sql sql-server spatial