Открыть сервис

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 →