根据多边形的lat,long坐标从mysql数据库中选择行

时间:2011-07-10 16:37:47

标签: mysql sql geospatial spatial

在mysql数据库中,我有一个地理区域表,其中每一行都有一个id和一组坐标(lat,long)构成该区域的多边形顶点(可以是无限数量的顶点)和这样的标记:

  id  |              poly_coords             |    marker
------|--------------------------------------|-------------
  0   | x1,y1|x2,y2|x3,y3|x4,y4|x4,y4|x4,y4| |      0
---------------------------------------------|-------------
  1   | x1,y1|x2,y2|x3,y3|x4,y4|x4,y4|x4,y4| |      0
---------------------------------------------|-------------
  .                      .                          .
  .                      .                          .
  .                      .                          .

我想要做的是给定一个特定的X,Y坐标:

  1. 如果marker == 0 我需要选择给定的X,Y坐标将落在多边形内的行或者X,Y坐标在多边形的特定距离内的行。

  2. 如果marker == 1 顶点是一条线上的点(即poly = 0的区域),我需要选择X,Y坐标在线的某个距离内的行。

  3. 我不知道如何从这里开始。如何使用MySql查询完成此操作?我应该使用其他方法结合多个查询来完成这项工作吗?

1 个答案:

答案 0 :(得分:1)

您可以查看以下链接:http://www.sql-statements.com/point-in-polygon.html 它应该是解决问题的基本开端。 我首先创建一个存储过程,用于转换字符串数组中的poly_coords列,每个字符串代表“x,y”(如果考虑使用0,0作为坐标值而不是0.0,则为“x | y”)。之后,您可以对链接中提供的方法进行一些更改,以实现所需的功能。我会提供更多的帮助,但我既没有访问MySql也没有其他sql。 另一种方法是将表设计为链接,这样就不需要实际解析坐标字符串