Sql server 2008 r2 SQL Server 2008 R2空间查询

Sql server 2008 r2 SQL Server 2008 R2空间查询,sql-server-2008-r2,spatial,Sql Server 2008 R2,Spatial,我对SQL Server的空间领域非常陌生,需要一些帮助。我有一个航路点组织应用程序,我正在尝试生成一些查询,这些查询遵循查找作为湖泊、河流等地理多边形一部分的航路点的前提。我已经用下载的数据预加载了我的表格。我使用shape2sql.exe将shapefile加载到相应的db表中 表如下: 地下水位-id、名称、地理位置(地理数据类型) 状态表-id、状态名称、状态缩写、geog(地理数据类型) 县表-id、名称、州名称、地理位置(地理数据类型) 航路点表-id、名称、纬度、经度、水id 如何

我对SQL Server的空间领域非常陌生,需要一些帮助。我有一个航路点组织应用程序,我正在尝试生成一些查询,这些查询遵循查找作为湖泊、河流等地理多边形一部分的航路点的前提。我已经用下载的数据预加载了我的表格。我使用shape2sql.exe将shapefile加载到相应的db表中

表如下:
地下水位-id、名称、地理位置(地理数据类型)
状态表-id、状态名称、状态缩写、geog(地理数据类型)
县表-id、名称、州名称、地理位置(地理数据类型)
航路点表-id、名称、纬度、经度、水id

如何对这些表编写查询以返回如下内容:
-“密歇根”的所有航路点
-“密歇根州”蒙特卡姆县“巴斯湖”上的所有航路点(密歇根州和该国有多个巴斯湖,因此为县/州部分)
-通过“处理”一组航路点并查找它们实际属于哪个湖泊,自动分配航路点表的water id列
-等等

谢谢

迄今为止所学:
选择geog.ToString()作为点,选择geog.STArea()作为面积,选择geog.STLength()作为长度 从水里 其中名称为“%bass lake%”,状态为“mi”

将返回巴斯湖和多边形的记录以及湖的实际坐标。

多边形((-87.670498549804691 46.304831340698243, -87.670543549804691 46.307117340698241, -87.676573549804687 46.313480340698241, -87.68120854980468 46.314821340698245, -87.685168549804686 46.315703340698242, -87.6877605498047 46.313390340698241, -87.685051549804683 46.308827340698244, -87.682360549804685 46.305650340698243, -87.677734549804683 46.304768340698246,-87.674440549804686 46.304336340698242,-87.670498549804691 46.304831340698243)1022083.96662664 4027.52433709888从臀部拍摄,这里,但可能是这样:

UPDATE  waypoints
SET waypoints.WaterId = water.Id
FROM    dbo.Waypoints AS waypoints LEFT JOIN
    dbo.Water AS water ON geography::Point(waypoints.Lat, waypoints.Lon, 4326).STIntersects(water.geog)
应将wapoints表上的waterId设置为水位表中匹配的水ID之一

这会让你找到巴斯湖上的所有航路点

SELECT  waypoints.*
FROM    dbo.Waypoints as waypoints INNER JOIN
    dbo.Water AS water ON geography::Point(waypoints.Lat, waypoints.Lon, 4326).STIntersects(water.geog) = 1
WHERE   water.Name = 'BASS_LAKE' -- OR WHATEVER

好的,随学随学,这里是我自己问题的一些答案,供任何想知道的人参考

下面是一个查询,用于查找where子句中具有条件的各种航路点:
从航路点表格wp中选择*
加入地下水位w
在wp.geogcolumn.STIntersects上(w.geogcolumn)=1
其中w.name如“%bass lake%”
w.state='mi'

以下是一个查询,用于根据航路点“适合”的位置将水id分配给航路点:
更新航路点表wp
设置WaterID=(
选择ID
从地下水位
其中geogcolumns.STIntersects(wp.geogcolumn)=1
))


这两个查询都工作得非常好,速度也非常快!喜欢它!

地理::点需要经度,然后是纬度和srid吗?关于经度的某种错误需要在-90和90之间。。。。。。