Що таке файл GeoJSON?
GeoJSON — це формат на основі JSON, призначений для представлення географічних об’єктів з їх непросторовими атрибутами. Цей формат визначає різні об’єкти JSON (JavaScript Object Notation) і спосіб їх об’єднання. Формат JSON представляє сукупну інформацію про географічні об’єкти, їх просторові масштаби та властивості. Об’єкт цього файлу може вказувати на геометрію (Точка, рядок ліній, багатокутник), об’єкт або набір об’єктів. Об’єкти відображають адреси та місця у вигляді вулиць точки, головні дороги та кордони у вигляді ліній, а країни, провінції та земельні регіони у вигляді багатокутників. Використовуючи GeoJSON, різні мобільні додатки для маршрутизації та навігації можуть вказувати покриття своїх послуг. Розширенням GeoJSON є TopoJSON, який має менший розмір і кодує геопросторову топологію.
Коротка історія
Інженерна робоча група Інтернету (IETF) у співпраці з авторами формату сформувала Робочу групу GeoJSON для випуску GeoJSON у квітні 2015 року. Замінивши 2008 Специфікація GeoJSON, RFC 7946, нова стандартна специфікація формату GeoJSON, опублікована в серпні 2016 року.
Формат файлу GeoJSON
Координат
Координата є основним елементом будь-яких географічних даних. Це єдиний вимір (довгота, широта), що представляє одне число (у десятковому форматі), а також іноді записує координату висоти. Час також є виміром, але його складність ускладнює запис його як координати. Координати в обох JSON GeoJSON відформатовані як числа.
Позиція
Упорядкований масив координат представляє позицію. Це найменша одиниця, яка може позначати точку на землі.
[Довгота, широта, висота]
До випуску поточної специфікації GeoJSON дозволяв записувати три координати на позицію, але це заборонено новою специфікацією.
Геометрія
Геометрії — це прості форми (точки, криві та поверхні) у GeoJSON, які складаються з типу та набору координат. Точка - це найпростіша геометрія, яка представляє одну позицію
{ "тип": "Точка", "координати": [0, 0] }
LineStrings
Для представлення лінії використовуються принаймні дві з’єднані точки.
{ "type": "LineString", "coordinates": [[10, 30], [10, 10]] }
Точкові та лінійні рядки є двома найпростішими категоріями геометрії. Обидва типи геометрії не турбують багатьох геометричних правил. Точка може бути представлена в будь-якому місці, а лінія може мати більше однієї точки, навіть якщо точки перетинаються між собою.
Багатокутники
Геометрії GeoJSON здаються значно складнішими в Polygons. Багатокутники мають внутрішню та зовнішню зони та можуть містити отвори всередині.
{
"type": "Polygon",
"Coordinates": [
[
[30, 10], [10, 10], [10, 0], [20, 40]
]
]
}
Порівняно з LineStrings, у багатокутниках список координат є ще одним вкладеним рівнем і може мати вирізи, як пончики.
Рівень координат
У форматі GeoJSON властивість координат має чотири рівні глибини.
Особливості
Геометрії є центральною частиною GeoJSON, отже, дані реального світу — це більше, ніж ці прості форми, що мають ідентифікацію та атрибути. Функції записують геометрію, а також їхні властивості.
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [20, 10]
},
"properties": {
"name": "fortune island"
}
}
Властивості функції можуть бути типом об’єкта JSON, який містить зіставлення значень ключа однієї глибини.
FeatureCollection
На верхньому рівні файлів GeoJSON FeatureCollection — це найпоширеніша річ, яка виглядає так:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [20, 10]
},
"properties": {
"name": "null island"
}
}
]
}
Велика кількість пакетів картографічного та ГІС-програм підтримують GeoJSON, включаючи програмне забезпечення GeoDjango, OpenLayers і Geoforge. Він також сумісний з PostGIS і Mapnik. Сервіси API карт Google, yahoo і Bing також підтримують GeoJSON.