GeoJSON - GeoJSON
| Extensii de nume de fișier |
.json, .geojson
|
|---|---|
| Tipul media internet | application/geo+json |
| Tipul formatului | Format fișier GIS |
| Extins de la | JSON |
| Standard | RFC 7946 |
| Formatul deschis ? | da |
| Site-ul web | geojson |
GeoJSON este un format standard deschis conceput pentru a reprezenta caracteristici geografice simple , împreună cu atributele lor nespaciale . Se bazează pe formatul JSON .
Caracteristicile includ puncte (deci adrese și locații), șiruri de linii (deci străzi, autostrăzi și limite), poligoane (țări, provincii, zone de teren) și colecții de mai multe părți de acest tip. Caracteristicile GeoJSON nu trebuie să reprezinte doar entități ale lumii fizice; aplicațiile de rutare și navigare mobile, de exemplu, ar putea descrie acoperirea serviciilor lor folosind GeoJSON.
Formatul GeoJSON diferă de alte standarde GIS prin faptul că a fost scris și este menținut nu de o organizație formală de standarde, ci de un grup de lucru pe internet de dezvoltatori.
O descendență notabilă a GeoJSON este TopoJSON , o extensie a GeoJSON care codifică topologia geospațială și care oferă de obicei dimensiuni mai mici de fișiere.
Istorie
Grupul de lucru și discuțiile despre formatul GeoJSON au început în martie 2007, iar specificația formatului a fost finalizată în iunie 2008.
În aprilie 2015, Internet Engineering Task Force a fondat grupul de lucru Geographic JSON care a lansat GeoJSON sub denumirea de RFC 7946 în august 2016.
Exemplu
{
"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" }
}
}
]
}
Geometrii
Punctele sunt [x, y] sau [x, y, z]. Acestea pot fi [longitudine, latitudine] sau [est, nord]. Cota este un al treilea număr opțional. Sunt numere zecimale.
De exemplu, Londra (51.5074 ° Nord, 0.1278 ° Vest) este [-0.1278, 51.5074]
| Tip | Exemple | |
|---|---|---|
| Punct |
|
{
"type": "Point",
"coordinates": [30.0, 10.0]
}
|
| LineString |
|
{
"type": "LineString",
"coordinates": [
[30.0, 10.0], [10.0, 30.0], [40.0, 40.0]
]
}
|
| Poligon |
|
{
"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]]
]
}
|
|
| Tip | Exemple | |
|---|---|---|
| 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]]
]
}
|
| 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]]
]
]
}
|
|
| 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 este o extensie a GeoJSON care codifică topologia . În loc să reprezinte discret geometriile, geometriile din fișierele TopoJSON sunt cusute împreună din segmente de linie partajate numite arce . Arcurile sunt secvențe de puncte, în timp ce șirurile de linii și poligoanele sunt definite ca secvențe de arcuri. Fiecare arc este definit o singură dată, dar poate fi referit de mai multe ori prin diferite forme, reducând astfel redundanța și scăzând dimensiunea fișierului. În plus, TopoJSON facilitează aplicațiile care utilizează topologie, cum ar fi simplificarea formei de conservare a topologiei, colorarea automată a hărților și cartograme .
O implementare de referință a specificației TopoJSON este disponibilă ca instrument de linie de comandă pentru a codifica TopoJSON din GeoJSON (sau ESRI Shapefiles) și o bibliotecă JavaScript partea clientului pentru a decoda TopoJSON din nou în GeoJSON. TopoJSON este, de asemenea, acceptat de instrumentul popular OGR începând cu versiunea 1.11 și PostGIS începând cu versiunea 2.1.0.
Schema TopoJSON
Având o formă GIS aproape de coordonatele latitudine 0 ° și longitudine 0 °, un fișier topojson simplu, dar valid și complet care conține toate metadatele, poligonul , linia , elementele punctelor , arcurile și proprietățile este definit după cum urmează:
{
"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]]
]
}
Vezi si
Referințe
- ^ a b Butler, Howard; Daly, Martin; Doyle, Allan; Gillies, Sean; Hagen, Stefan; Schaub, Tim (august 2016). RFC 7946 . IETF . doi : 10.17487 / RFC7946 .
- ^ „Furnizarea indicațiilor de orientare” . developer.apple.com .
- ^ "Pagina de informații GeoJSON" . lists.geojson.org .
- ^ "Arhiva GeoJSON martie 2007 după fir" . lists.geojson.org .
- ^ "Geographic JSON (geojson) -" . datatracker.ietf.org .
- ^ "GeoJSON RFC # 3.1.1" .
- ^ "topojson / topojson-specification" . 11 decembrie 2020 - prin GitHub.
- ^ "topojson / topojson" . GitHub .
- ^ "Release / 1.11.0-News - GDAL" . trac.osgeo.org .
- ^ "AsTopoJSON" . postgis.net .
Surse
- Andrews, Christopher (18 septembrie 2007). „Tehnologie emergentă: AJAX și GeoJSON” . Arhivat din original la 22 mai 2009.
- „Geoweb Guru: Prezentare tehnică: GeoJSON” . 16 februarie 2009. Arhivat din original la 21.02.2009.
- Lambert, Chris (4 mai 2009). „Blogul Google Geo Developers: construiți-vă deasupra locației publice Latitude cu GeoJSON și KML” .