Упрощение GeoJSON применяет алгоритм Рамера–Дугласа–Пекера к каждой LineString, MultiLineString, Polygon и MultiPolygon в ваших данных. Алгоритм сохраняет вершину только в том случае, если её удаление сместило бы форму больше, чем заданный допуск — здесь он задаётся в метрах, а долгота корректно масштабируется по широте, поэтому один и тот же допуск означает одно и то же и в Осло, и в Сингапуре. GPS-треки, записываемые каждую секунду, и границы, оцифрованные с точностью геодезической съёмки, обычно уменьшаются на 80–95% без заметных изменений в масштабе карты. Структура остаётся неповреждённой: кольца остаются замкнутыми, полигоны сохраняют минимум четыре точки, точки и свойства проходят без изменений, а исходный объект никогда не изменяется.
Возможности
Алгоритм Дугласа–Пекера с ползунком допуска в метрах
Масштабирование по широте: метры остаются метрами везде
Поддержка LineString, Polygon и их вариантов Multi*
Рекурсивный обход FeatureCollection и GeometryCollection
Кольца остаются замкнутыми и никогда не опускаются ниже допустимого полигона
Отображение числа точек, процента сокращения и размера в байтах
Как использовать Упрощение GeoJSON
Вставьте GeoJSON или загрузите пример
Задайте допуск: 5–20 м для уровня улиц, 100 м и более для стран
Неотличимо на карте; загружается в двадцать раз быстрее.
Частые ошибки и устранение неполадок
Упрощённая форма заметно срезает углы. — Допуск слишком велик для вашего масштаба. Уменьшайте его вдвое, пока артефакты не исчезнут — оптимальная точка — это наибольший допуск, при котором результат всё ещё выглядит идентичным.
Не удалено ни одной точки. — Данные, возможно, уже достаточно грубые относительно заданного допуска. Увеличьте допуск и учтите, что Point никогда не затрагиваются — только у линий и колец есть вершины, которые можно сэкономить.
Два соседних полигона больше не совпадают точно по границе. — Каждое кольцо упрощается независимо, поэтому общие границы могут немного разойтись. Для строгой топологии используйте топологически осведомлённый конвейер обработки; для слоёв отображения такие зазоры составляют доли пикселя.
Часто задаваемые вопросы
Как алгоритм Дугласа–Пекера решает, какие точки сохранить?
Он проводит хорду между концами отрезка, находит вершину, наиболее удалённую от неё, и сохраняет её только в том случае, если расстояние превышает допуск — затем рекурсивно повторяет это для обеих половин. Оставшиеся вершины — это именно те, что формируют линию в вашем масштабе.
Какой допуск использовать для GPS-треков?
Потребительский GPS и без того «блуждает» на 3–10 м, поэтому допуск в 10 м в основном убирает шум, а не полезный сигнал. Отображение уровня улицы выдерживает допуск примерно до 20 м; региональные обзоры терпят 100 м и более.
Не сломает ли упрощение мои полигоны?
Встроенные защиты предотвращают типичные сбои: замыкающая точка сохраняется, а кольца, которые опустились бы ниже четырёх точек, остаются без изменений. Самопересечение при агрессивном допуске на сильно извилистых формах всё же остаётся возможным — проверяйте визуально результаты сильного сокращения.
Почему упрощать в метрах, а не в градусах?
Градус долготы сокращается с ростом широты — 111 км на экваторе, 55 км на 60°с.ш. Допуск в градусах упрощал бы скандинавские данные вдвое сильнее; масштабирование по cos(широта) сохраняет физический смысл допуска.
Связанные инструменты
GeoJSON Viewer — Проверяйте GeoJSON, смотрите его на карте и читайте сводку по объектам.
Рамка GeoJSON — bbox, центр, площадь и длина любого GeoJSON в обоих порядках.
Конвертер GPX в GeoJSON — Конвертируйте GPS-треки, маршруты и путевые точки между GPX и GeoJSON в обе стороны, локально в браузере.
Конвертер GeoJSON в CSV — Конвертируйте GeoJSON в CSV и обратно: координаты становятся столбцами широты и долготы, локально в браузере.
Кодировщик polyline — Кодируйте координаты в Google polyline или декодируйте в lat/lng и GeoJSON.
Конвертер KML в GeoJSON — Конвертируйте KML из Google Earth в GeoJSON и обратно, локально в вашем браузере.