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

Jam*_*ner 1 mysql arrays polygon spatial multidimensional-array

我一直在研究一种软件,它允许用户以完成循环和设置地理边界的方式添加指向地图的指针.像这样:

在此输入图像描述

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

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

[
  [
    [68.935,-48.625],
    [69.58,-48.94],
    [70.525,-49.065],
    [70.56,-49.255]
  ]
]
Run Code Online (Sandbox Code Playgroud)

要么

[
  [
    [
      [-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]
    ]
  ]
]
Run Code Online (Sandbox Code Playgroud)

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

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

GeomFromText('MultiPolygon(((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1)))')
Run Code Online (Sandbox Code Playgroud)

无论如何使用从多维数组创建的多面填充表格?就像是:

 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]
                                 ]
                               ]
                             ]
                           ))')
Run Code Online (Sandbox Code Playgroud)

小智 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