GeoJSON: формат обмена геоданными¶
GeoJSON — это открытый текстовый формат для кодирования структур географических данных и их обмена между системами, основанный на стандарте JavaScript Object Notation (JSON). Формат позволяет описывать геометрические объекты (точки, линии, полигоны) вместе с произвольными атрибутивными свойствами, что делает его де-факто стандартом для веб-картографии и геоинформационных систем (ГИС).
¶История и стандартизация
Формат был разработан в 2008 году сообществом разработчиков во главе с Ховардом Батлером (Howard Butler), Мартином Дейли (Martin Daly), Алланом Дойлом (Allan Doyle), Шоном Гиллсом (Sean Gillies), Тимом Шаубом (Tim Schaub) и Кристофером Шмидтом (Christopher Schmidt). Первоначально спецификация существовала как черновик (RFC 7946), опубликованный в августе 2016 года в качестве официального стандарта Internet Engineering Task Force (IETF).
В отличие от более ранних форматов обмена геоданными (например, GML или KML), GeoJSON был ориентирован на простоту и лёгкость интеграции с веб-технологиями, что способствовало его быстрому распространению в таких сервисах, как OpenStreetMap, Leaflet, Mapbox и многих других.
¶Структура и типы объектов
Основой GeoJSON является объект JSON, который содержит поле type. Спецификация определяет девять типов объектов:
- Point (точка) — одиночная координата (долгота, широта);
- MultiPoint (мультиточка) — набор точек;
- LineString (линия) — упорядоченный набор координат, образующих линию;
- MultiLineString (мультилиния) — набор линий;
- Polygon (полигон) — замкнутая область, заданная кольцами координат;
- MultiPolygon (мультиполигон) — набор полигонов;
- GeometryCollection (коллекция геометрий) — набор разнотипных геометрий;
- Feature (объект) — геометрия с привязанными свойствами (
properties); - FeatureCollection (коллекция объектов) — набор объектов
Feature.
Координаты задаются в десятичных градусах в системе WGS 84 (EPSG:4326), где первым числом указывается долгота, вторым — широта, а третьим (опционально) — высота. Полигоны описываются массивами колец: первое кольцо является внешней границей, последующие — внутренними «вырезами» (например, острова внутри озера).
¶Ключевые особенности
¶Свойства объектов (Properties)
Каждый объект Feature может содержать произвольный набор атрибутов в поле properties. Это позволяет хранить вместе с геометрией любые данные: названия, числовые показатели, ссылки, строки. Формат не ограничивает структуру свойств, что обеспечивает гибкость при интеграции с базами данных и API.
¶Bounding Box
Опциональное поле bbox позволяет задать ограничивающий прямоугольник (минимальные и максимальные координаты) для всего набора данных или отдельного объекта. Это ускоряет пространственные запросы и отрисовку карт.
¶Вложенность и совместимость
Поскольку GeoJSON является подмножеством JSON, он легко парсится любым языком программирования и передаётся через HTTP без специальных расширений. Формат полностью совместим с REST API и часто используется как ответ серверов геообработки.
¶Применение
GeoJSON широко применяется в следующих областях:
- Веб-картография — отображение данных на интерактивных картах (Leaflet, OpenLayers, Yandex Maps API);
- Геоинформационные системы — импорт и экспорт данных в QGIS, ArcGIS и других ГИС;
- Мобильные приложения — передача геометрии маршрутов и зон на устройства;
- Открытые данные — публикация границ административных единиц, результатов переписей, экологических наблюдений;
- Логистика и транспорт — описание маршрутов, зон доставки, геозон.
Например, OpenStreetMap позволяет экспортировать данные в формате GeoJSON, а сервисы геокодирования (например, Nominatim) возвращают результаты поиска в виде объектов Feature.
¶Критика и ограничения
Несмотря на популярность, формат имеет недостатки:
- Размер файла — текстовый формат без сжатия может быть значительно тяжелее бинарных аналогов (например, TopoJSON или FlatGeobuf);
- Отсутствие поддержки 3D-геометрий — спецификация допускает хранение высоты, но не определяет сложные трёхмерные поверхности;
- Точность координат — использование десятичных градусов без ограничения точности может приводить к накоплению ошибок при больших масштабах;
- Нет потоковой обработки — весь документ должен быть загружен в память для разбора.
Для решения проблемы размера был разработан формат TopoJSON, который устраняет дублирование координат между соседними полигонами.
¶Инструменты и библиотеки
Существует множество библиотек для работы с GeoJSON на всех популярных языках:
- JavaScript: Turf.js (геоаналитика), Leaflet, Mapbox GL JS;
- Python: GeoPandas, Shapely, Fiona;
- Java: GeoTools, Jackson с модулем GeoJSON;
- C++: GDAL/OGR.
Большинство современных баз данных с пространственными расширениями (PostGIS, SQL Server Spatial, MongoDB) поддерживают импорт и экспорт GeoJSON напрямую.
¶Заключение
GeoJSON остаётся одним из самых простых и универсальных форматов обмена геоданными в вебе. Его интеграция с JSON и широкая поддержка в программном обеспечении обеспечили ему статус стандарта для лёгких геопространственных приложений, несмотря на конкуренцию со стороны более новых бинарных форматов.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


