GeoJSON
Rozszerzenia pliku | .json.geojson |
---|---|
Typ MIME |
|
Otwarty format? | tak |
Strona internetowa |
GeoJSON – otwarty standard format przeznaczony do reprezentowania prostych obiektów geograficznych wraz z ich nieprzestrzennymi atrybutami. Opiera się na formacie JSON.
Obiekty (Feature) obejmują punkty (mogą zwierać adresy i lokalizacje), linie łamane (np. ulice, drogi i granice), wielokąty (np. obszary, miasta, kraje, kontynenty) oraz wieloczęściowe kolekcje różnego typu. Obiekty GeoJSON nie muszą reprezentować tylko fizycznie istniejących obiektów – np. mobilne aplikacje do nawigacji mogą opisywać zasięg swoich usług za pomocą GeoJSON[1].
Format GeoJSON różni się od innych standardów GIS tym, że nie został opracowany przez formalną organizację normalizacyjną, ale przez internetową grupę roboczą programistów[2].
Jednym z rozszerzeń GeoJSON jest TopoJSON, który koduje topologię geoprzestrzenną w postaci połączonych obiektów i zazwyczaj zapewnia mniejsze rozmiary plików.
Format GeoJSON jest wykorzystywany m.in. przez biblioteki do wyświetlania dynamicznych map na stronach internetowych np. OpenLayers, Leaflet.
Historia
Grupa robocza standardu GeoJSON i dyskusja rozpoczęły się w marcu 2007[3], a specyfikacja formatu została ukończona w czerwcu 2008.
W kwietniu 2015 r. Internet Engineering Task Force założył grupę roboczą Geographic JSON[4], która w sierpniu 2016 r. wydała GeoJSON jako RFC 7946 ↓.
Przykład
{ "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" } } } ] }
Obiekty geometryczne (Features)
Punkty są reprezentowane jako [x, y] lub [x, y, z]. Mogą to być długość i szerokość geograficzna lub współrzędne kartezjańskie. Wysokość to opcjonalna trzecia liczba. Zapisywane jako liczby dziesiętne[5].
Na przykład Londyn (51,5074° N, 0,1278° E) to [-0,1278, 51,5074]
Typ | Przykład | |
---|---|---|
Punkt (Point) | { "type": "Point", "coordinates": [30.0, 10.0] } | |
Linia łamana (LineString) | { "type": "LineString", "coordinates": [ [30.0, 10.0], [10.0, 30.0], [40.0, 40.0] ] } | |
Wielokąt (Polygon) | { "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] ] ] } |
Typ | Przykład | |
---|---|---|
Wielopunkt (MultiPoint) | { "type": "MultiPoint", "coordinates": [ [10.0, 40.0], [40.0, 30.0], [20.0, 20.0], [30.0, 10.0] ] } | |
Linie łamane (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] ] ] } | |
Wielokąty (MultiPolygon) | { "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] ] ] ] } | ||
Kolekcja obiektów (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] ] ] } ] } |
Zobacz też
- Język znaczników geograficznych
- Format pliku wektorowego GIS
Przypisy
Źródła
- Christopher Andrews: Emerging Technology: AJAX and GeoJSON. 18 September 2007. [zarchiwizowane z tego adresu (22 May 2009)].
- Geoweb Guru: Technical Overview: GeoJSON. 16 February 2009. [zarchiwizowane z tego adresu (2009-02-21)].
- Chris Lambert: Google Geo Developers Blog: Build on top of your public Latitude location with GeoJSON & KML. 4 May 2009.