我希望你们能帮助我,或者至少为我指明正确的方向。我有一个代表多边形边界的 SQL Server 表。在简化版本中大致如下所示:
=====================================================
Route id | pointId | Lat | Lon
=====================================================
1 | 1 | 19.12873 | -100.01221
1 | 2 | 19.65468 | -100.01221
1 | 3 | 19.65465 | -100.01221
1 | 1 | 19.65468 | -100.01221
1 | 2 | 19.35468 | -100.01221
1 | 3 | 19.68798 | -100.01221
1 | 4 | 19.98785 | -100.01221
2 | 1 | 19.12873 | -100.01221
2 | 2 | 19.12873 | -100.01221
2 | 3 | 19.12873 | -100.01221
如您所见,有些路线中有两个多边形,了解它的方法是查看 pointId 字段的连续数字。如果 id 重置为 1 但路线相同,那么您所拥有的是其中包含两个多边形的路线。我的 SQL 脚本的最终目标是处理每条路线和每个多边形,以确定一个点是否在其中任何一个内部。
我所做的如下:
- 有一个游标,它带来了所有不同的路线 ID
- 处理每一行以过滤并获得每条路线的坐标
现在我需要在连续编号之后将每个查询分成单独的主干。我怎样才能避免使用另一个光标并评估每一行来检测计数的变化?是否有一种查询或指令来完成此操作?
分离后,我可以将每个多边形解析为一个几何对象,并检查一个点是否在多边形的边界内。