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

GeoJSON

GeoJSON — это открытый формат для представления географических данных, основанный на синтаксисе JSON (JavaScript Object Notation). Он предназначен для кодирования различных географических структур, таких как точки, линии, многоугольники и их коллекции, а также для связывания этих пространственных объектов с произвольными атрибутивными данными (свойствами). Формат широко используется в веб-картографировании, геоинформационных системах (ГИС) и для обмена данными между различными приложениями, поддерживающими работу с геопространственной информацией.

История и развитие

Формат GeoJSON был разработан сообществом разработчиков и специалистов по ГИС как специализация JSON для географических нужд. Первая спецификация была опубликована в 2008 году. В 2015 году была выпущена обновлённая версия спецификации — RFC 7946, которая стала основным стандартом. Этот документ, подготовленный Рабочей группой по инженерным задачам Интернета (IETF), уточнил и упростил многие аспекты формата, в частности, стандартизировал использование координатной системы (WGS 84) и порядок координат (долгота, затем широта). RFC 7946 заменил более ранние, неофициальные версии спецификации и является действующим стандартом на сегодняшний день.

Структура и синтаксис

GeoJSON описывает географические объекты (Feature) и их коллекции (FeatureCollection). Основными элементами формата являются геометрические типы.

Геометрические типы

Согласно спецификации RFC 7946, GeoJSON поддерживает семь типов геометрии:

  • Point (Точка): Одна координата. Используется для обозначения единичных объектов, например, здания, колодца, места происшествия.
  • MultiPoint (Мультиточка): Набор из нескольких точек.
  • LineString (Линия): Последовательность из двух или более координат, образующих линию. Применяется для обозначения дорог, рек, маршрутов.
  • MultiLineString (Мультилиния): Набор из нескольких линий.
  • Polygon (Многоугольник): Замкнутая область, задаваемая списком колец (линейных колец). Первое и последнее кольцо определяют внешнюю границу, последующие (опционально) — внутренние границы (вырезы, например, острова в озере). Используется для обозначения территорий, зданий, участков.
  • MultiPolygon (Мультиполигон): Набор из нескольких многоугольников.
  • GeometryCollection (Коллекция геометрий): Набор из нескольких геометрий разных типов.

Объекты Feature и FeatureCollection

  • Feature (Объект): Представляет собой единичный географический объект, который содержит геометрию (geometry) и свойства (properties). Свойства — это произвольный JSON-объект, содержащий атрибутивную информацию (например, название, высота, население, тип объекта). Каждый Feature может иметь уникальный идентификатор (id).
  • FeatureCollection (Коллекция объектов): Набор объектов Feature. Это наиболее распространённая структура для обмена данными, так как позволяет передавать множество географических объектов в одном файле.

Координаты

Координаты в GeoJSON задаются в порядке [долгота, широта] (в десятичных градусах) и, опционально, высота (третье число). Высота указывается в метрах. Для многоугольников координаты колец задаются в порядке, соответствующем правилу «правая рука» (внешнее кольцо — против часовой стрелки, внутренние — по часовой). Все координаты по умолчанию привязаны к системе координат WGS 84 (EPSG:4326).

Пример GeoJSON

Ниже приведён пример простого файла GeoJSON, описывающего точку (город) и линию (дорогу):

``json { "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [37.6173, 55.7558] }, "properties": { "name": "Москва", "population": 12600000 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [37.6173, 55.7558], [30.3159, 59.9343] ] }, "properties": { "name": "Трасса М-10 «Россия»", "length_km": 700 } } ] } ``

Применение

GeoJSON является одним из основных форматов для обмена географическими данными в веб-среде. Его основные области применения:

  • Веб-картографирование: Библиотеки для отображения карт, такие как Leaflet, OpenLayers, Mapbox GL JS, напрямую поддерживают загрузку и отображение данных в формате GeoJSON. Это позволяет создавать интерактивные карты с маркерами, полигонами и линиями.
  • Геоинформационные системы (ГИС): Многие профессиональные ГИС-приложения, включая QGIS и ArcGIS, поддерживают импорт и экспорт данных в формате GeoJSON.
  • API и веб-сервисы: Многие API, предоставляющие географические данные (например, сервисы погоды, геокодирования, транспорта), используют GeoJSON в качестве формата ответа. Например, API Яндекс.Карт (сервис принадлежит компании «Яндекс», зарегистрированной в Нидерландах) и API OpenStreetMap поддерживают этот формат.
  • Обмен данными: GeoJSON часто используется для обмена данными между различными системами, так как он легко читается человеком и машиной, а также имеет широкую поддержку.
  • Хранение данных: Некоторые базы данных, такие как MongoDB и PostgreSQL (с расширением PostGIS), поддерживают хранение и индексацию данных в формате GeoJSON.

Преимущества и недостатки

Преимущества

  • Простота и читаемость: Основан на JSON, что делает его лёгким для понимания и отладки.
  • Широкая поддержка: Поддерживается практически всеми современными веб-картографическими библиотеками и ГИС-приложениями.
  • Открытость: Является открытым стандартом, не требующим лицензионных отчислений.
  • Легковесность: По сравнению с более старыми форматами, такими как GML или Shapefile, файлы GeoJSON могут быть меньше по размеру.
  • Интеграция с веб-технологиями: Легко обрабатывается с помощью JavaScript, что делает его идеальным для веб-приложений.

Недостатки

  • Отсутствие сжатия: Файлы GeoJSON могут быть большими при работе с большими объёмами данных (например, с детальными границами стран или тысячами объектов).
  • Ограниченная поддержка 3D: Хотя формат поддерживает высоту, он не предназначен для полноценного трёхмерного моделирования.
  • Неэффективность для потоковой передачи: Для очень больших наборов данных может потребоваться разбиение на несколько файлов или использование специализированных форматов, таких как GeoJSON Lines (NDJSON), где каждый объект Feature находится на отдельной строке.

Связанные форматы и технологии

  • TopoJSON: Расширение GeoJSON, которое кодирует топологию (связи между объектами) и использует дельта-кодирование координат для значительного уменьшения размера файла.
  • GeoJSON Lines (NDJSON): Формат, в котором каждый объект Feature (или FeatureCollection) представлен отдельной строкой JSON. Это позволяет обрабатывать большие наборы данных построчно, не загружая весь файл в память.
  • WKT (Well-Known Text): Текстовый формат для представления геометрии, используемый в базах данных и ГИС.
  • KML (Keyhole Markup Language): XML-формат, используемый в Google Earth и других приложениях.

Источники

  1. RFC 7946 — The GeoJSON Format (IETF, 2016).
  2. GeoJSON Specification (2008) — оригинальная спецификация.
  3. Документация библиотеки Leaflet.
  4. Документация библиотеки OpenLayers.
  5. Документация PostGIS (расширение PostgreSQL).
  6. Статья «GeoJSON» на сайте OpenStreetMap Wiki.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →