我对 SQL Server 的空间领域非常陌生,需要一些帮助。我有一个航点组织应用程序,我正在尝试生成一些查询,这些查询遵循查找属于地理多边形(如湖泊、河流等)的航点的前提。我已经用我下载的数据预加载了我的表。我使用 shape2sql.exe 将 shapefile 加载到适当的数据库表中。
表格如下:
Water table - id, name, geog(geography data type)
State table - id, state_name, state_abbr, geog(geography data type)
County table - id, name, state_name, geog(geography data type)
Waypoint table - id、name、lat、lon、waterid
我如何针对这些表编写查询以返回以下内容:
- 'michigan' 中的
所有航路点 - 'michigan' 的 'montcalm' 县的 'bass lake' 上的所有航路点(密歇根州和该国有多个 bass 湖,因此县/州部分)
- 通过“处理”一组航点并找到它们实际属于哪个湖来自动分配航点表的水 id 列
- 等等。
谢谢!
到目前为止学到的:
选择 geog.ToString() 作为 Points,geog.STArea() 作为 Area,geog.STLength() 作为 Length from water where name like '%bass lake%' and STATE = 'mi'
将返回 Bass Lake 的记录和带有该湖实际坐标的多边形。
POLYGON ((-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