MySql 几何:如何使用多维数组中的多面体填充 table?

MySql Geometry: How to populate table with a multipolygon from an multi-dimensional array?

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

这将构建一个多维数组,准备将其作为 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 的空间函数的理解非常有限,我目前认为用多边形填充 table 需要使用多个线串参数,例如:

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

是否可以用从多维数组创建的多面体填充 table?类似于:

 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. 将多维数组转换为 LINESTRINGS 数组,然后使用 MySQL 函数或类似于 IMPLODE 函数的函数生成与示例中相同的 Multipoligon。
  2. 将数组转换为JSON并使用MySQL 5.7 ST_GeomFromGeoJSON函数:https://dev.mysql.com/doc/refman/5.7/en/spatial-geojson-functions.html