MySql Geometry:如何使用多维数组中的多面体填充表格?

时间:2016-02-14 21:59:22

标签: mysql arrays multidimensional-array polygon spatial

我一直致力于开发一种软​​件,允许用户以完成循环和设置地理边界的方式添加指向地图的指针。像这样:

enter image description here

然后构建一个多维数组,准备作为MULTIPOLYGON存储在MySql中。

每个阵列都看起来像这样 - 虽然稍微减少了一些。

[
  [
    [68.935,-48.625],
    [69.58,-48.94],
    [70.525,-49.065],
    [70.56,-49.255]
  ]
]

[
  [
    [
      [-77.53466,23.75975],
      [-77.78,23.71],
      [-78.03405,24.28615],
      [-77.53466,23.75975]
    ]
  ],
  [
    [
      [-77.82,26.58],
      [-77.82,26.58]
    ]
  ],
  [
    [
      [-77,26.59],
      [-77,26.59]
    ]
  ]
]

多维数组深度没有限制,只根据用户输入的详细程度和[或]区域被分成多个部分来设置 - 想想岛屿。

我目前对MySql的Spatial功能的理解非常有限,我现在认为用多边形填充表需要使用多个线串参数,例如:

GeomFromText('MultiPolygon(((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1)))')

无论如何使用从多维数组创建的多面体填充表格?类似的东西:

 GeomFromText('MultiPolygon(([
                               [
                                 [
                                   [-77.53466,23.75975],
                                   [-77.78,23.71],
                                   [-78.03405,24.28615],
                                   [-77.53466,23.75975]
                                 ]
                               ],
                               [
                                 [
                                   [-77.82,26.58],
                                   [-77.82,26.58]
                                 ]
                               ],
                               [
                                 [
                                   [-77,26.59],
                                   [-77,26.59]
                                 ]
                               ]
                             ]
                           ))')

1 个答案:

答案 0 :(得分:5)

有两种方法可以做到。

  1. 将multidemenional数组转换为LINESTRINGS数组,然后使用MySQL函数或类似于IMPLODE函数的东西生成与示例中相同的Multipoligon。
  2. 将数组转换为JSON并使用MySQL 5.7 ST_GeomFromGeoJSON函数:https://dev.mysql.com/doc/refman/5.7/en/spatial-geojson-functions.html