在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坐标:
如果marker == 0 我需要选择给定的X,Y坐标将落在多边形内的行或者X,Y坐标在多边形的特定距离内的行。
如果marker == 1 顶点是一条线上的点(即poly = 0的区域),我需要选择X,Y坐标在线的某个距离内的行。
我不知道如何从这里开始。如何使用MySql查询完成此操作?我应该使用其他方法结合多个查询来完成这项工作吗?
答案 0 :(得分:1)
您可以查看以下链接:http://www.sql-statements.com/point-in-polygon.html 它应该是解决问题的基本开端。 我首先创建一个存储过程,用于转换字符串数组中的poly_coords列,每个字符串代表“x,y”(如果考虑使用0,0作为坐标值而不是0.0,则为“x | y”)。之后,您可以对链接中提供的方法进行一些更改,以实现所需的功能。我会提供更多的帮助,但我既没有访问MySql也没有其他sql。 另一种方法是将表设计为链接,这样就不需要实际解析坐标字符串