У меня есть серия полигонов, хранящихся в таблице MySQL, которые мне нужно вернуть как разнесенные полигоны, которые находятся на минимальном расстоянии от оригинала.
ST_Buffer Функция выполняет функцию, очень похожую на ту, которую я выполняю, однако расстояние между этим полигоном и оригиналом должно быть не меньше указанного значения расстояния.
ST_Buffer Возвращает геометрию, которая представляет все точки, чье расстояние от значения геометрии g равно меньше или равно на расстоянии d
Проблема, с которой я сталкиваюсь, заключается в том, что функция ST_Buffer возвращает полигоны, которые местами разрываются только на 2,6 нм вместо минимального расстояния 3 нм, которое я установил.
SELECT ST_AsGeoJSON(ST_Buffer(ST_ExteriorRing(boundary),0.05')) AS `extended_boundary` from boundaries'
Есть ли подобная функция, которая гарантирует минимальное расстояние? Неважно, если он пройдёт на небольшую величину, но он должен быть не меньше указанного расстояния.
EDIT / Решение: В итоге я создал базу данных Postgres, чтобы решить эту проблему с помощью библиотеки PostGIS и типа данных географии. Это кажется излишним — запускать его только для одной таблицы и запроса, но библиотеке MySQL не хватает необходимой функциональности.
Задача ещё не решена.
Других решений пока нет …