我已将美国人口普查形状文件(所有道路)导入到 SQL Serve 2008 R2 中。我想找出特定的纬度/经度坐标落在哪条“道路”上。该查询是什么样的?
我是 GIS 新手;四处寻找,没有运气。谢谢!
以下是前 10 行作为示例数据集:
MULTILINESTRING ((-73.924385 40.865365, -73.92249799999999 40.866064, -73.920611999999991 40.866758999999995, -73.919215 40.867275, -73.918414 40.867584), (-73.92662 40.864525, -73.924385 40.865365))
LINESTRING (-73.91434 40.862521, -73.915523999999991 40.863040999999996, -73.917063 40.863690999999996, -73.918943 40.864463, -73.919361999999992 40.864809, -73.919996 40.865797, -73.920611999999991 40.866758999999995, -73.921213999999992 40.867692999999996, -73.921725999999992 40.868497, -73.922145 40.86915, -73.922343 40.869459)
LINESTRING (-73.91704399999999 40.867025999999996, -73.918414 40.867584, -73.919754 40.868114)
LINESTRING (-73.91911 40.859573, -73.919845999999993 40.859898, -73.921235 40.860476)
LINESTRING (-73.917913 40.869667, -73.918109 40.86987, -73.918269999999993 40.870035, -73.918643 40.870421, -73.919249999999991 40.871010999999996, -73.919671 40.872076)
LINESTRING (-73.917913 40.869667, -73.918109 40.86987, -73.918269999999993 40.870035, -73.918643 40.870421, -73.919249999999991 40.871010999999996, -73.919671 40.872076)
LINESTRING (-73.911771 40.868096, -73.913352 40.868777, -73.915183 40.869551, -73.91588 40.869847)
LINESTRING (-73.911227 40.871655, -73.91268 40.872292)
LINESTRING (-73.911227 40.871655, -73.91268 40.872292)
LINESTRING (-73.932523 40.854538, -73.932092 40.855157, -73.931654999999992 40.855754999999995, -73.929509 40.857341999999996)
最佳答案
以下命令返回距指定搜索点最近的道路。在我们将空间索引添加到道路表中之前,速度有点慢。
DECLARE @search_point GEOGRAPHY, @search_buffer_metres INT = 50
SET @search_point = geography::STGeomFromText( 'POINT(174.083058 -35.410539)',4326 )
SELECT TOP 1
ROAD_NAME,SHAPE.STDistance( @search_point ) AS MetresFromSearchPoint
FROM
ROADS
WHERE
SHAPE.STIntersects( @search_point.STBuffer(@search_buffer_metres) ) = 1
ORDER BY
SHAPE.STDistance( @search_point )
关于sql - 特定的纬度/经度落在什么 "road"上?美国人口普查形状文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9090973/