特定纬度/长度的“道路”是什么?美国人口普查Shapefiles

时间:2012-02-01 04:52:36

标签: sql sql-server-2008 geolocation geospatial shapefile

我已将US Census Shapefiles(All Roads)导入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)

2 个答案:

答案 0 :(得分:2)

这是一个非常重要的问题,可能不会在这里给你一个满意的答案。尝试使用老虎数据解决房屋街道的问题在于,没有足够的信息可以做出明确的确定性判断 - 老虎文件提供的所有信息都是路段每一端的地理坐标,以道路的名称和其他一些信息。

我的房子是一个很好的例子,说明为什么这很困难。该物业以住宅道路,三级公路和州际公路为界。我的房子远远落后于地段,因此屋顶纬度/经度在地理位置上比其他两条道路更接近高速公路。我的地址当然是在住宅街道,但你无法从你拥有的数据中确定。

答案 1 :(得分:2)

以下内容返回指定搜索点的最近道路。在我们向道路表添加空间索引之前,它有点慢。

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 )