代码之家  ›  专栏  ›  技术社区  ›  ChrisCurrie

谷歌地图折线是否通过我数据库中的任何多边形?

  •  1
  • ChrisCurrie  · 技术社区  · 10 年前

    我正在构建一个C#程序,需要确定旅程是否经过某个区域。

    我有一个存储50+多边形(区域)的数据库,格式如下:

    Lat  |  Lng  |  ZoneName
    

    我正在使用Google Directions API并解码overview_polyline响应以接收Lat&表示“旅程”的长坐标。

    因此,我需要检查路线(旅程)是否与我存储在数据库中的任何多边形区域相交。

    我想知道我是否应该采取以下方法:

    1. 从数据库中拉出区域坐标,以动态表示多边形区域。
    2. 对于每个行程步骤,确定;长坐标在多边形内

    我认为第2点可以实现 here .

    但这可能需要相当长的时间。

    一次短途旅行返回了多段线的大约300多个纬度/经度坐标“步骤”&每个多边形具有包括形状边界的大约10个或更多个纬度/经度坐标。

    请问有没有更有效的方法?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Marcel N.    10 年前

    您可以使用 SQL Server's spatial data types ( like geometry or geography )以存储分区。

    然后可以使用如下函数 STIntersects 根据数据库中的任何内容测试现有多段线。

    在ADO.NET中,可以通过 Microsoft.SqlServer.Types NuGet package .