GeoJSON - GeoJSON
Расширения имени файла |
.json , .geojson
|
---|---|
Тип интернет-СМИ | application/geo+json |
Тип формата | Формат файла ГИС |
Расширен с | JSON |
Стандарт | RFC 7946 |
Открытый формат ? | да |
Веб-сайт | geojson |
GeoJSON - это открытый стандартный формат, предназначенный для представления простых географических объектов вместе с их непространственными атрибутами. Он основан на формате JSON .
К функциям относятся точки (следовательно, адреса и местоположения), линейные строки (т.е. улицы, шоссе и границы), многоугольники (страны, провинции, участки земли) и составные части этих типов. Функции GeoJSON не обязательно должны представлять объекты только физического мира; например, мобильные приложения для маршрутизации и навигации могут описывать покрытие своих услуг с помощью GeoJSON.
Формат GeoJSON отличается от других стандартов ГИС тем, что он был написан и поддерживается не официальной организацией по стандартизации, а рабочей группой разработчиков в Интернете.
Заметным потомком GeoJSON является TopoJSON , расширение GeoJSON, которое кодирует геопространственную топологию и обычно обеспечивает файлы меньшего размера.
История
Рабочая группа и обсуждение формата GeoJSON были начаты в марте 2007 года, а спецификация формата была завершена в июне 2008 года.
В апреле 2015 года Инженерная группа Интернета учредила рабочую группу Geographic JSON, которая в августе 2016 года выпустила GeoJSON как RFC 7946.
Пример
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [102.0, 0.5]
},
"properties": {
"prop0": "value0"
}
},
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]
]
},
"properties": {
"prop0": "value0",
"prop1": 0.0
}
},
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
[100.0, 1.0], [100.0, 0.0]
]
]
},
"properties": {
"prop0": "value0",
"prop1": { "this": "that" }
}
}
]
}
Геометрии
Точки: [x, y] или [x, y, z]. Они могут быть [долгота, широта] или [восток, север]. Высота - это необязательное третье число. Это десятичные числа.
Например, Лондон (51,5074 ° северной широты, 0,1278 ° западной долготы) равен [-0,1278, 51,5074].
Тип | Примеры | |
---|---|---|
Точка |
{
"type": "Point",
"coordinates": [30.0, 10.0]
}
|
|
LineString |
{
"type": "LineString",
"coordinates": [
[30.0, 10.0], [10.0, 30.0], [40.0, 40.0]
]
}
|
|
Многоугольник |
{
"type": "Polygon",
"coordinates": [
[[30.0, 10.0], [40.0, 40.0], [20.0, 40.0], [10.0, 20.0], [30.0, 10.0]]
]
}
|
|
{
"type": "Polygon",
"coordinates": [
[[35.0, 10.0], [45.0, 45.0], [15.0, 40.0], [10.0, 20.0], [35.0, 10.0]],
[[20.0, 30.0], [35.0, 35.0], [30.0, 20.0], [20.0, 30.0]]
]
}
|
Тип | Примеры | |
---|---|---|
MultiPoint |
{
"type": "MultiPoint",
"coordinates": [
[10.0, 40.0], [40.0, 30.0], [20.0, 20.0], [30.0, 10.0]
]
}
|
|
MultiLineString |
{
"type": "MultiLineString",
"coordinates": [
[[10.0, 10.0], [20.0, 20.0], [10.0, 40.0]],
[[40.0, 40.0], [30.0, 30.0], [40.0, 20.0], [30.0, 10.0]]
]
}
|
|
Мультиполигон |
{
"type": "MultiPolygon",
"coordinates": [
[
[[30.0, 20.0], [45.0, 40.0], [10.0, 40.0], [30.0, 20.0]]
],
[
[[15.0, 5.0], [40.0, 10.0], [10.0, 20.0], [5.0, 10.0], [15.0, 5.0]]
]
]
}
|
|
{
"type": "MultiPolygon",
"coordinates": [
[
[[40.0, 40.0], [20.0, 45.0], [45.0, 30.0], [40.0, 40.0]]
],
[
[[20.0, 35.0], [10.0, 30.0], [10.0, 10.0], [30.0, 5.0], [45.0, 20.0], [20.0, 35.0]],
[[30.0, 20.0], [20.0, 15.0], [20.0, 25.0], [30.0, 20.0]]
]
]
}
|
||
GeometryCollection |
{
"type": "GeometryCollection",
"geometries": [
{
"type": "Point",
"coordinates": [40.0, 10.0]
},
{
"type": "LineString",
"coordinates": [
[10.0, 10.0], [20.0, 20.0], [10.0, 40.0]
]
},
{
"type": "Polygon",
"coordinates": [
[[40.0, 40.0], [20.0, 45.0], [45.0, 30.0], [40.0, 40.0]]
]
}
]
}
|
TopoJSON
TopoJSON - это расширение GeoJSON, которое кодирует топологию . Вместо того, чтобы представлять геометрию дискретно, геометрия в файлах TopoJSON сшивается из общих линейных сегментов, называемых дугами . Дуги - это последовательности точек, а линейные цепочки и многоугольники - это последовательности дуг. Каждая дуга определяется только один раз, но на нее можно ссылаться несколько раз разными формами, что снижает избыточность и размер файла. Кроме того, TopoJSON облегчает приложения, использующие топологию, такую как упрощение формы с сохранением топологии, автоматическая раскраска карт и картограммы .
Эталонная реализация спецификации TopoJSON доступна в виде инструмента командной строки для кодирования TopoJSON из GeoJSON (или ESRI Shapefiles) и библиотеки JavaScript на стороне клиента для повторного декодирования TopoJSON обратно в GeoJSON. TopoJSON также поддерживается популярным инструментом OGR с версии 1.11 и PostGIS с версии 2.1.0.
Схема TopoJSON
Для данной формы ГИС с координатами 0 ° широты и 0 ° долготы простой, но действительный и полный файл topojson, содержащий все метаданные, Polygon , LineString , элементы Point , дуги и свойства , определяется следующим образом:
{
"type":"Topology",
"transform":{
"scale": [1,1],
"translate": [0,0]
},
"objects":{
"two-squares":{
"type": "GeometryCollection",
"geometries":[
{"type": "Polygon", "arcs":[[0,1]],"properties": {"name": "Left_Polygon" }},
{"type": "Polygon", "arcs":[[2,-1]],"properties": {"name": "Right_Polygon" }}
]
},
"one-line": {
"type":"GeometryCollection",
"geometries":[
{"type": "LineString", "arcs": [3],"properties":{"name":"Under_LineString"}}
]
},
"two-places":{
"type":"GeometryCollection",
"geometries":[
{"type":"Point","coordinates":[0,0],"properties":{"name":"Origine_Point"}},
{"type":"Point","coordinates":[0,-1],"properties":{"name":"Under_Point"}}
]
}
},
"arcs": [
[[1,2],[0,-2]],
[[1,0],[-1,0],[0,2],[1,0]],
[[1,2],[1,0],[0,-2],[-1,0]],
[[0,-1],[2,0]]
]
}
Смотрите также
использованная литература
- ^ a b Батлер, Ховард; Дэли, Мартин; Дойл, Аллан; Гиллис, Шон; Хаген, Стефан; Шауб, Тим (август 2016 г.). RFC 7946 . IETF . DOI : 10,17487 / RFC7946 .
- ^ «Обеспечение направлений» . developer.apple.com .
- ^ "Информационная страница GeoJSON" . lists.geojson.org .
- ^ "GeoJSON, март 2007 г. Архив по ветке" . lists.geojson.org .
- ^ "Географический JSON (geojson) -" . datatracker.ietf.org .
- ^ "GeoJSON RFC # 3.1.1" .
- ^ "топойсон / топойсон-спецификация" . 11 декабря 2020 г. - через GitHub.
- ^ "топойсон / топойсон" . GitHub .
- ^ "Релиз / 1.11.0-Новости - ГДАЛ" . trac.osgeo.org .
- ^ "AsTopoJSON" . postgis.net .
Источники
- Эндрюс, Кристофер (18 сентября 2007 г.). «Новые технологии: AJAX и GeoJSON» . Архивировано из оригинального 22 мая 2009 года.
- «Geoweb Guru: Технический обзор: GeoJSON» . 16 февраля 2009 года в архив с оригинала на 2009-02-21.
- Ламберт, Крис (4 мая 2009 г.). «Блог разработчиков Google Geo: создавайте свои общедоступные данные в Локаторе с помощью GeoJSON и KML» .