# GeoJSON

| *GeoJSON* |
| --- |
| Jatorria |
| Ezaugarriak |
| Media mota | application/geo+json eta application/vnd.geo+json |
| Deskribapena |
| Oinarritua | JavaScript Object Notation |
|  |
|  |
|  |
|  |
| Ekoizpena |
| Garatzailea | IETF |
| geojson.org |
|  |

**GeoJSON** formatu estandar ireki bat da, ezaugarri geografiko sinpleak eta ezaugarri ez-espazialak adierazteko diseinatua. JSON formatuan oinarritzen da.

Ezaugarrien artean puntuak (helbideak eta kokapenak), lerro-kateak (kaleak, errepideak eta mugak), poligonoak (herrialdeak, probintziak, lur-zatiak) eta mota horretako parte anitzeko bildumak. GeoJSONen ezaugarriak ez dira soilik mundu fisikoko entitateak irudikatzera mugatzen; mugikorretako hornitzaileek eta interneteko nabigazio-aplikazioek, adibidez, GeoJSON erabiliz deskriba lezakete bere zerbitzu-estaldura.

GeoJSON formatua ez dator bat informazio geografikoko sistemaren beste estandar batzuekin; izan ere, formatu hori idatzi zen eta mantentzen da ez arauen antolaketa formal baten bidez, baizik eta Interneteko garatzaileen lantalde baten bidez.

GeoJSON-en ondorengo eratorri nabarmen bat TopoJSON da, GeoJSON-en hedapen bat da topologia geoespaziala kodetzen duena eta normalean fitxategi tamaina txikiagoak ematen dituena.

## Historia

Lantaldea eta GeoJSON formatuari buruzko eztabaida 2007ko martxoan hasi zen eta formatuaren zehaztapena 2008ko ekainean amaitu zen.

2015eko apirilean, Interneteko Ingeniaritzako Lan Taldeak *Geographic JSONen working group* sortu zuen, eta 2016ko abuztuan GeoJSON RFC 7946 gisa argitaratu zuen.

## Adibidea

Hau da Miñan liburuan Ibrahima protagonistak egiten duen bidaiaren **GeoJSON** errepresentazioa (eta alboan mapa interaktiboa):

```
{
 "type": "FeatureCollection",
 "features": [
 {
 "type": "Feature",
 "geometry": {
 "type": "Point",
 "coordinates": [-13.712222222, 9.509166666]
 },
 "properties": {
 "prop0": "value0",
 "marker-size": "small",
 "marker-color": "#F90606"
 }
 },
 {
 "type": "Feature",
 "geometry": {
 "type": "Point",
 "coordinates": [-2.93333, 35.1667]
 },
 "properties": {
 "prop0": "value0",
 "marker-size": "small",
 "marker-color": "#F90606"
 }
 },
 {
 "type": "Feature",
 "geometry": {
 "type": "Point",
 "coordinates": [12.484166666, 32.792222222]
 },
 "properties": {
 "prop0": "value0",
 "marker-size": "small",
 "marker-color": "#F90606"
 }
 },

 {
 "type": "Feature",
 "properties": {"stroke": "#F90606","stroke-width": 2},
 "geometry": {
 "type": "LineString",
 "coordinates": [
 [-13.712222222, 9.509166666], [-9.164444444, 11.418888888], [-7.992222222, 12.645833333], [-0.05, 16.266666666], [-0.05, 16.266666666], [1.4, 18.433333333], [1.810555555, 20.437222222], [-0.666666666, 23.5], [0.166666666, 26.7], [-0.293888888, 27.874166666], [3.666666666, 32.483333333], [3.058611111, 36.776388888], [-0.633055555, 35.696944444], [-2.93333, 35.1667], [-5.803888888, 35.776666666], [-9.72694, 29.7], [-5.803888888, 35.776666666], [-2.93333, 35.1667]
 ]
 }
 },
 {
 "type": "Feature",
 "properties": {"stroke": "#F90606","stroke-width": 2},
 "geometry": {
 "type": "LineString",
 "coordinates": [
 [3.666666666, 32.483333333], [5.316666666, 31.95], [9.423888888, 29.9675], [9.5, 30.133333333], [12.484166666, 32.792222222], [12.729722222, 32.754444444]
 ]
 }
 }
 ]
}

```

### Geometriak

Puntuak dira hauek: [x, y] edo [x, y, z]. Definitu daitezke [longitudea, latitudea] gisa, edo [easting, northing] gisa ere bai. Altitudea, metrotan, hautazko hirugarren zenbaki bat da. Zenbaki hamartarrak dira.

Adibidez, Londres (51.5074° Iparraldean, 0.1278° Mendebaldean) honela adierazten da: [-0.1278, 51.5074].

Geometriako primitiboak| Mota | Adibideak |
| --- | --- |
| Puntua |  |
```
{
 "type": "Point",
 "coordinates": [30.0, 10.0]
}

```
 |
| LineString |  |
```
{
 "type": "LineString",
 "coordinates": [
 [30.0, 10.0],
 [10.0, 30.0],
 [40.0, 40.0]
 ]
}

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

```
 |

Zati anitzeko geometriak| Mota | Adibideak |
| --- | --- |
| Puntu anitzekoa |  |
```
{
 "type": "MultiPoint",
 "coordinates": [
 [10.0, 40.0],
 [40.0, 30.0],
 [20.0, 20.0],
 [30.0, 10.0]
 ]
}

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

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

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

```
 |

## GeoJSON lerroka (Newline-delimited)

GeoJSON-en alternatiba bat da lerro bakoitzean ezaugarri geografiko bana kodetzea da, lerro-bukaerako karaktereek (edo erregistroak bereizteko beste karaktereren batzuek) erregistroen arteko bereizketa definitzen dutela

Formatu hori GeoJSON normala baino askoz eraginkorragoa izan daiteke analizatzeko, tresnek erregistro indibidualak paraleloan irakur baititzakete. Formatu hau newline-delimited JSON-en antzekoa da.

Newline-delimited JSON-en barianteak dira bese hauek:

* GeoJSONSeq (GeoJSON Text Sequences-rako laburdura) - ezaugarriak bereizteko karaketere erregistro-bereizleekin (RS, record-separator)
* GeoJSONL (GeoJSON Lines-erako laburdura) - ezaugarriak bereizten dira lerro bukaerako karaktereen bitartez.

## TopoJSON

**TopoJSON** topologia kodetzen duen GeoJSON luzapen bat da. Geometriak modu diskretuan irudikatu beharrean, geometriak TopoJSON fitxategietan arku izeneko lerro-segmentu partekatuetatik lotzen dira. *Arkuak* puntu-sekuentziak dira, eta sokak eta poligonoak, berriz, arku-sekuentziak. Arku bakoitza behin bakarrik definitzen da, baina hainbat aldiz erreferentziatu daiteke hainbat formatan erredundantzia murriztuz eta fitxategiaren tamaina txikituz. Gainera, TopoJSON-ek topologia erabiltzen duten aplikazioak errazten ditu, hala nola, forma sinplifikatzea, mapen kolorazio automatikoa eta kartografiak.

TopoJSON espezifikazioaren erreferentziazko aplikazio bat erabilgarri dago komando-lerroko tresna gisa GeoJSON-etik (edo ESRI Shapefiles) TopoJSON kodetzeko eta bezeroaren aldeko JavaScript liburutegi bat TopoJSON berriro GeoJSON-era deskodetzeko. TopoJSON-ek ere TV-k babesten du 1.11 bertsiotik aurrera eta PostGIS-ek 2.1.0 bertsiotik aurrera.

### TopoJSON Schema

0° latitude eta 0° longitude koordenatuetatik gertu dagoen GIS forma bat emanda, metadatu guztiak (Polygon, *LineString*, Point elements, arcs eta *propietateak*) dituen topojson fitxategi sinple baina baliozko eta oso bat honela definitzen da:

Topojson-en formak

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

```

## Erreferentziak

## Bibliografia

* Andrews, Christopher.  (18 September 2007). *Emerging Technology: AJAX and GeoJSON.* .
* *Geoweb Guru: Technical Overview: GeoJSON.*  16 February 2009.
* Lambert, Chris.  (4 May 2009). *Google Geo Developers Blog: Build on top of your public Latitude location with GeoJSON & KML.* .

## Kanpo estekak

* Webgune ofiziala
*
* topografiak/topografiak