GeoJSON
Расширения имен файлов | .json , .geojson |
---|---|
Тип интернет-СМИ | application/geo+json [1] |
Тип формата | Формат файла ГИС |
Расширено с | JSON |
Стандартный | RFC 7946 |
Открытый формат ? | да |
Веб-сайт | геоджсон |
GeoJSON [1] — это открытый стандартный формат, предназначенный для представления простых географических объектов вместе с их непространственными атрибутами. Он основан на формате JSON .
К объектам относятся точки (следовательно, адреса и местоположения), строки линий (следовательно, улицы, шоссе и границы), полигоны (страны, провинции, участки земли) и составные коллекции этих типов. Функции GeoJSON не обязательно должны представлять объекты только физического мира; Например, мобильные приложения для маршрутизации и навигации могут описывать покрытие своих услуг с помощью GeoJSON. [2]
Формат GeoJSON отличается от других стандартов ГИС тем, что он был написан и поддерживается не формальной организацией по стандартизации, а рабочей группой разработчиков Интернета. [3]
Заметным потомком GeoJSON является TopoJSON , расширение GeoJSON, которое кодирует геопространственную топологию и обычно обеспечивает файлы меньшего размера.
История
[ редактировать ]Рабочая группа по формату GeoJSON и обсуждение начались в марте 2007 года. [4] а спецификация формата была завершена в июне 2008 года.
В апреле 2015 года Инженерная группа Интернета основала рабочую группу по географическому JSON. [5] который выпустил GeoJSON как RFC 7946 в августе 2016 года.
Пример
[ редактировать ]{ "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]. Это могут быть [долгота, широта] или [восток, север] . Высота, в метрах, [6] необязательное третье число. Это десятичные числа. [7]
Например, Лондон (51,5074° северной широты, 0,1278° западной долготы) равен [-0,1278, 51,5074]
Тип | Примеры | |
---|---|---|
Точка | ![]() | { "type": "Point", "coordinates": [30.0, 10.0]} |
ЛинияСтрока | ![]() | { "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] ] ]} |
Тип | Примеры | |
---|---|---|
Многоточечный | ![]() | { "type": "MultiPoint", "coordinates": [ [10.0, 40.0], [40.0, 30.0], [20.0, 20.0], [30.0, 10.0] ]} |
Мультилинейная строка | ![]() | { "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] ] ] ]} | |
ГеометрияКоллекция | ![]() | { "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] ] ] } ]} |
ТопоJSON
[ редактировать ]TopoJSON — это расширение GeoJSON, которое кодирует топологию . Вместо того, чтобы представлять геометрию дискретно, геометрия в файлах TopoJSON сшивается из общих сегментов линий, называемых дугами . [8] Дуги представляют собой последовательности точек, а строки линий и многоугольники определяются как последовательности дуг. Каждая дуга определяется только один раз, но на нее могут ссылаться несколько раз разные фигуры, что снижает избыточность и уменьшает размер файла. [9] Кроме того, TopoJSON упрощает работу приложений, использующих топологию, например упрощение форм с сохранением топологии, автоматическую раскраску карт и картограммы .
Эталонная реализация спецификации TopoJSON доступна в виде инструмента командной строки для кодирования TopoJSON из GeoJSON (или шейп-файлов ESRI) и клиентской библиотеки JavaScript для повторного декодирования TopoJSON обратно в GeoJSON. TopoJSON также поддерживается популярным инструментом OGR начиная с версии 1.11. [10] и PostGIS начиная с версии 2.1.0. [11]
Схема 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]] ]}
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б Батлер, Ховард; Дейли, Мартин; Дойл, Аллан; Гиллис, Шон; Хаген, Стефан; Шауб, Тим (август 2016 г.). РФК 7946 . IETF . дои : 10.17487/RFC7946 .
- ^ «Указание направления» . разработчик.apple.com .
- ^ «Информационная страница GeoJSON» . lists.geojson.org .
- ^ «Архив GeoJSON за март 2007 г. по веткам» . lists.geojson.org .
- ^ «Географический JSON (geojson) —» . datatracker.ietf.org .
- ^ Батлер, Х.; Дейли, М.; Дойл, А.; Гиллис, Шон; Шауб, Т.; Хаген, Стефан (август 2016 г.). Формат GeoJSON (отчет). Рабочая группа по интернет-инжинирингу.
- ^ Батлер, Х.; Дейли, М.; Дойл, А.; Гиллис, Шон; Шауб, Т.; Хаген, Стефан (август 2016 г.). «GeoJSON RFC #3.1.1» .
- ^ "topojson/topojson-спецификация" . 11 декабря 2020 г. – через GitHub.
- ^ "топойсон/топойсон" . Гитхаб .
- ^ «Релиз/1.11.0-Новости – GDAL» . trac.osgeo.org .
- ^ «АстопоJSON» . postgis.net .
Источники
[ редактировать ]- Эндрюс, Кристофер (18 сентября 2007 г.). «Новые технологии: AJAX и GeoJSON» . Архивировано из оригинала 22 мая 2009 года.
- «Geoweb Guru: Технический обзор: GeoJSON» . 16 февраля 2009 г. Архивировано из оригинала 21 февраля 2009 г.
- Ламберт, Крис (4 мая 2009 г.). «Блог разработчиков Google Geo: создайте общедоступное местоположение в Latitude с помощью GeoJSON и KML» .