GeoJSON: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Содержимое удалено Содержимое добавлено
Создана статья на основе английской.
(нет различий)

Версия от 09:27, 12 октября 2015

GeoJSON
Расширение ..json, .geojson
MIME-тип application/vnd.geo+json
Разработчик Инженерный совет Интернета
Тип формата ГИС формат файла
Расширен из JSON
Открытый формат? да
Сайт geojson.org (англ.)

GeoJSON это открытый формат открытого предназначен для хранения географических структур данных, основан основанные на JavaScript Object Notation.

Формат может хранить примитивные типы для описания географических объектов, такие как: точки (адреса и местоположения), линии (улицы, шоссе, границы), полигоны (страны, штаты, участки земли). Также могут храниться так называемые мультитипы, которые представляют собой объединение нескольких примитивных типов.

Формат GeoJSON отличается от других стандартов ГИС тем, что он был написан и поддерживается какой-либо организации стандартов, а с помощью рабочей группы разработчиков.

Дальнейшим развитием GeoJSON является TopoJSON, расширение GeoJSON, который кодирует геопространственную топологию, и, как правило, обеспечивает меньший размер файлов.

История

Формат GeoJSON начал обсуждаться рабочей группой в марте 2007 года[1] и окончательная спецификация стандарта была готова к июню 2008 года.

Пример

{ "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"}
           }
         }
       ]
     }

Объекты

Примитивные типы
Type Examples
Point
{ "type": "Point", 
    "coordinates": [30, 10]
}
LineString
{ "type": "LineString", 
    "coordinates": [
        [30, 10], [10, 30], [40, 40]
    ]
}
Polygon
{ "type": "Polygon", 
    "coordinates": [
        [[30, 10], [40, 40], [20, 40], [10, 20], [30, 10]]
    ]
}
{ "type": "Polygon", 
    "coordinates": [
        [[35, 10], [45, 45], [15, 40], [10, 20], [35, 10]], 
        [[20, 30], [35, 35], [30, 20], [20, 30]]
    ]
}
Мультитипы
Type Examples
MultiPoint
{ "type": "MultiPoint", 
    "coordinates": [
        [10, 40], [40, 30], [20, 20], [30, 10]
    ]
}
MultiLineString
{ "type": "MultiLineString", 
    "coordinates": [
        [[10, 10], [20, 20], [10, 40]], 
        [[40, 40], [30, 30], [40, 20], [30, 10]]
    ]
}
MultiPolygon
{ "type": "MultiPolygon", 
    "coordinates": [
        [
            [[30, 20], [45, 40], [10, 40], [30, 20]]
        ], 
        [
            [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]
        ]
    ]
}
{ "type": "MultiPolygon", 
    "coordinates": [
        [
            [[40, 40], [20, 45], [45, 30], [40, 40]]
        ], 
        [
            [[20, 35], [10, 30], [10, 10], [30, 5], [45, 20], [20, 35]], 
            [[30, 20], [20, 15], [20, 25], [30, 20]]
        ]
    ]
}

Использование

GeoJSON поддерживается множеством картографических и ГИС программных пакетов, включая OpenLayers,[2] Leaflet, MapServer,[3] Geoforge software,[4] GeoServer,[5] GeoDjango,[6] GDAL,[7] Safe Software FME,[8] и CartoDB.[9] Кроме этого, можно использовать GeoJSON с PostGIS[10] и Mapnik,[11], оба работают с форматов с помощью GDAL OGR библиотеке. Bing Maps, Yahoo! и Google также поддерживают GeoJSON в своих API.

Карты Google Maps Javascript API v3 напрямую поддерживают интеграцию слоёв данных GeoJSON [12] по состоянию на 19 марта 2014 года.[13]

GitHub тоже поддерживает GeoJSON [14] и Potrace GeoJSON-экспорт.

TopoJSON

TopoJSON является продолжением GeoJSON. Вместо того, чтобы представлять географические объекты по-отдельности, в TopoJSON они сшиты в единые объекты, называемые дугами (arcs).[15] Дуги - это последовательность точек, в то время как линии и полигоны - являются последовательность дуг. Каждая дуга определяется только один раз, но может быть использована несколько раз в различных формах, тем самым уменьшается избыточность и размер файлов.

Здесь reference implementation можно of the TopoJSON specification доступен инструмент командной строки для кодирования TopoJSON из GeoJSON и JavaScript библиотека для декодирования TopoJSON обратно GeoJSON.

TopoJSON Схема

Описание объекта около координат нулевой параллели и нулевой широты, простое но содержащее все необходимые типы Полигоны(Polygon), Линии(LineString), Точки(Point), Дуги (arcs) и Описания:

Topojson shapes
{
  "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]]
  ]
}

Ссылки

  1. March 2007 Archives by thread
  2. http://openlayers.org/dev/examples/vector-formats.html
  3. http://mapserver.org/output/template_output.html
  4. http://leafletjs.com/reference.html#geojson
  5. http://svn.codehaus.org/geoserver/tags/2.0.0-alpha1/geoserver/release/README.txt
  6. http://geodjango.org
  7. http://gdal.org/ogr/drv_geojson.html
  8. http://www.safe.com/reader_writerPDF/geojson.pdf
  9. http://developers.cartodb.com/documentation/cartodb-js.html
  10. http://pugs.postgresql.org/files/Introduction_to_PostGIS_v1.0.pdf
  11. http://svn.mapnik.org/tags/release-0.6.0/docs/api_docs/python/mapnik-module.html
  12. https://developers.google.com/maps/documentation/javascript/examples/layer-data-simple
  13. http://googledevelopers.blogspot.com/2014/03/maps-made-easier-geojson-in-javascript.html
  14. https://github.com/blog/1528-there-s-a-map-for-that
  15. https://github.com/topojson/topojson-specification

Источники