【问题标题】:select row from mysql database based on lat, long coordinates of a polygon根据多边形的经纬度从mysql数据库中选择行
【发布时间】:2011-07-11 00:57:11
【问题描述】:

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

  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. 如果标记 == 0 我需要选择给定 X,Y 坐标将落在多边形内或 X,Y 坐标在多边形一定距离内的行。

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

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

【问题讨论】:

  • 正在重新规范一个选项?照原样,您将不得不解析每个坐标集并在可能的过程中进行一些数学运算。
  • @Randy:不确定你所说的重新规范化是什么意思?你能解释一下吗?
  • 空间扩展也可能有用(标准化后):dev.mysql.com/doc/refman/5.1/en/spatial-extensions.html

标签: mysql sql geospatial spatial


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多