折线的左手侧或右手侧

时间:2011-06-27 14:10:39

标签: sql-server-2008 geospatial computational-geometry

相当棘手的一个,因为标题表明我需要在折线的哪一侧工作。

我过去使用角度和预处理方式做到了这一点,但不幸的是需要一个相当快速的解决方案。

任何一个有任何聪明想法的人?

编辑:

目的是计算一系列位置的飓风路径的哪一侧。

1 个答案:

答案 0 :(得分:0)

如果您的表格具有以下形式的结构

| Point_Data |
+------------+
| id   | int |
| lon  | int |
| lat  | int |

您可以按如下方式定义存储过程:

create procedure getPoints (@lat0 int, @lon0 int, @lat1 int, @lon1 int)
as
    select id, lon, lat
           isLeft = (lat1 - lat0) * (lon - lon0)
                  - (lat - lat0) * (lon1 - lon0)
      from Point_Data
GO

isLeft如果是{0}将> 0,如果在线上则为0,如果在线上则为<0;如果在线的右边则为&lt; 0。这取自Area of 2D and 3D Triangles and Polygons