GeoJSON (.geojson)

IETF Стандарт

GeoJSON поширений у вебкартографії, але підтримка різниться. GitHub відображає сумісні файли з обмеженнями; RFC 7946 задає порядок довгота, широта.

Конвертувати з GEOJSON у KML

Безкоштовний конвертер з GEOJSON у KML у браузері. Миттєво конвертуйте файли на своєму пристрої.

Аналіз та метадані

Операційні системи та аналізатори файлів ідентифікують файли GeoJSON, перевіряючи початкову послідовність бінарних байтів:

Виберіть або перетягніть файли сюди

Приватно - файли ніколи не залишають ваш пристрій

або вставте Ctrl+V
Гарантія конфіденційності без передавання даних мережею: Жодного байта не передано на зовнішні сервери. Уся обробка відбувалася локально в ізольованому середовищі браузера.

Сигнатура заголовка на байтовому рівні (Magic Bytes)

Операційні системи та аналізатори файлів ідентифікують файли GeoJSON, перевіряючи початкову послідовність бінарних байтів:

ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):

7B 0A 20 20 22 74 79 70 65 22 3A 20 22 46 65 61 74 75 72 65

ПОДАННЯ В ASCII: {\n "type": "Feature

Стандартизація: IETF RFC 7946

Технічні характеристики

Архітектура контейнераДокумент JSON за стандартом RFC 7946, що описує географічні об’єкти (Features), їхні колекції (FeatureCollections) і геометричні фігури (Geometries)
СтисненняТекст без стиснення (легко стискається під час передавання HTTP за допомогою Gzip або Brotli)
Порядок байтів (Endianness)Текстовий потік UTF-8
Колірні просториНе застосовується (географічні дані)
Канали та структураТочки, багатоточкові об’єкти, лінії, багатолінійні об’єкти, полігони, багатополігональні об’єкти, колекції геометрій і користувацькі властивості
Максимальні розміриСистема координат WGS 84: довгота від -180 до +180, широта від -90 до +90
ПрозорістьНемає
Потокове та прогресивне завантаженняGeoJSON із розділенням рядками (GeoJSONL / GeoJSONSeq) дає змогу безперервно передавати мільйони об’єктів

Технічна матриця порівняння: GeoJSON проти конкурентів

Технічний атрибутGeoJSON (Поточний)KMLGPXSHP
Поширення у вебкартографії100% універсальний стандарт веб-ГІС за замовчуваннямСтандарт Google Earth за замовчуваннямСтандарт для GPS-пристроїв та фітнесу за замовчуваннямЗастарілий стандарт настільних ГІС
Порядок координат[Довгота, Широта] (X, Y)Довгота, Широта, ВисотаШирота, ДовготаКоординати X, Y
Стиль синтаксисуЧисті пари ключ-значення JSONБагатослівні теги XML (<kml>)Багатослівні теги XML (<gpx>)Багатофайлові бінарні файли (.shp, .shx, .dbf)
Схема властивостейДовільний об'єкт властивостей JSONТеги схеми ExtendedDataФіксована схема тегів GPXФіксовані стовпчики dBase IV (.dbf)

Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі

Точки на карті з'являються в океані поблизу Антарктиди замість їхнього справжнього розташування.

Першопричина: Значення широти й довготи були випадково перемішані місцями в масиві координат.

Відновлення: Поміняйте місцями позиції координат [lon, lat] за допомогою конвертера GeoJSON від File2File.app.

Аналіз безпеки та векторів атак на парсери

Властивості GeoJSON можуть містити довільні вхідні дані користувача, які необхідно очищати перед виведенням у спливні вікна карти для запобігання атакам XSS.

Відомі вектори атак

  • Міжсайтовий скриптинг (XSS) через неекранований HTML у властивостях географічних об’єктів GeoJSON, відображених у підказках карти.
  • Відмова в обслуговуванні через глибоко вкладені GeometryCollections або полігони з мільйонами вершин.
  • Підробка запитів на серверну сторону (SSRF) через віддалене завантаження об'єктів GeoJSON.

Рекомендації щодо захисту: Перед вставленням у спливні вікна карти очищуйте всі текстові значення властивостей за допомогою DOMPurify.

Історичне походження та віхи

2016IETF офіційно стандартизує формат GeoJSON як RFC 7946, встановлюючи обов’язковим використання системи координат WGS 84.
2014GeoJSON поширений у вебкартографії, але підтримка різниться. GitHub відображає сумісні файли з обмеженнями; RFC 7946 задає порядок довгота, широта.
2008Говард Батлер, Шон Гілліс та спільнота ГІС з відкритим кодом публікують початкову специфікацію GeoJSON 1.0.

Основні переваги

  • Вебстандарт: у бібліотеках карт для браузера (Mapbox GL JS, Leaflet) дані безпосередньо перетворюються на об’єкти JavaScript.
  • Структура JSON, читана людиною, дозволяє без зусиль створювати, фільтрувати та виконувати налагодження програмним шляхом.
  • Довільна схема властивостей: додавайте будь-які користувацькі метадані (кількість населення, назву, швидкість, дохід) безпосередньо до геометричних об’єктів.

Технічні обмеження та недоліки

  • Текстова багатослівність: зберігає координати з рухомою комою як повторювані цифри ASCII, що призводить до більшого розміру файлів порівняно з бінарними Shapefile або FlatGeobuf.
  • RFC 7946 суворо вимагає порядок [Довгота, Широта], що часто плутає розробників, звичних до «Широта, Довгота».
  • Великі полігони з мільйонами вершин можуть спричинити сповільнення рендерингу DOM у веббраузері.

Цікаві технічні факти

  • Офіційний стандарт GeoJSON впорядковує координати як [Довгота, Широта] (декартовий порядок X, Y), що є прямо протилежним до того, як зазвичай кажуть люди ('Широта, Довгота').
  • GeoJSON поширений у вебкартографії, але підтримка різниться. GitHub відображає сумісні файли з обмеженнями; RFC 7946 задає порядок довгота, широта.
  • RFC 7946 вимагає, щоб кільця меж полігонів відповідали «правилу правої руки»: зовнішні кільця мають бути спрямовані проти годинникової стрілки.

Поширені технічні запитання

Чому мої координати GeoJSON впорядковані як [довгота, широта] замість [широта, довгота]?

GeoJSON поширений у вебкартографії, але підтримка різниться. GitHub відображає сумісні файли з обмеженнями; RFC 7946 задає порядок довгота, широта.

Як конвертувати KML або Shapefile у GeoJSON?

Ви можете конвертувати файли Google Earth KML або Esri Shapefiles у чистий GeoJSON, готовий для вебвикористання, за лічені секунди за допомогою File2File.app безпосередньо у браузері.

У чому різниця між GeoJSON та Shapefile?

Shapefile досі широко використовують для обміну даними, і його підтримують ГІС-програми, проте багатофайлова структура й обмеження атрибутів можуть зробити GeoJSON або геобазу доречнішими для певних робочих процесів.