Как упростить и удалить перекрытие в полигонах GeoJSON

#node.js #geojson #google-cloud-sql

#node.js #geojson #google-cloud-sql

Вопрос:

Я использую API, который определяет области с использованием полигонов GeoJSON (которые я не контролирую) и использую их для запроса данных в облачной базе данных SQL. Проблема возникает, когда многие полигоны имеют небольшие артефакты, которые перекрываются, а Cloud SQL это не поддерживает.

Я хотел бы получить некоторую помощь в том, как упростить или сгладить эти полигоны, чтобы удалить эти артефакты. Мне определенно не нужен уровень детализации, указанный в этом полигоне для моего варианта использования. В приведенном ниже примере я предполагаю, что около 20-30 точек были бы достаточно точными.

Некоторые идеи, которые приходят на ум, — привязать координаты к сетке и удалить координаты, которые перекрываются, или иметь множество предопределенных областей и использовать этот полигон для выбора, какие области следует включить, но я новичок в этой области и ожидаю, что уже есть несколько хороших алгоритмов или решений этой проблемы.

Пример GeoJSON: https://gist.github.com/kennethlynne/2c94a6b895fe3bac686b397df4405344
пример

Проблемная область с перекрытием, которую я особенно хочу исправить: увеличенный пример

Ответ №1:

Взгляните на метод упрощения в Turf.js библиотеку и посмотрите, является ли это тем упрощением, которое вы ищете:

https://turfjs.org/docs/#simplify

По сути, он вернет упрощенный полигон GeoJSON на основе допуска, который вы передаете в параметре options

введите описание изображения здесь

Комментарии:

1. Спасибо! В итоге я использовал turf.simplify turf.kinks, чтобы уменьшить сложность и выдать мне предупреждение, если после упрощения в моем полигоне все еще существовали перегибы. Пока все хорошо!