我希望你们能帮助我,或者至少指出我正确的方向。我有一个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脚本的最终目标是处理每个路径和每个Polygon以确定一个点是否在其中任何一个内部。
我所做的是以下内容:
现在我需要在连续计算后将每个查询分成单独的中继。我该怎么做才能避免使用另一个光标并评估每一行来检测数字的变化?是否有一种查询或指令来实现这一目标?
一旦分开,我就可以将每个Polygon解析成几何对象,并检查一个点是否在多边形的边界内。
答案 0 :(得分:0)
如果我正确地按照你的问题,你可以这样做。它使你的conscutive值增加row_number。只要它们增加1,row_number也增加,下一行将出现在“group”中
select
Grp = PointId - row_number() over (partition by route_id order by pointid),
route_id,
pointid,
lat,
lon
from yourTable