GeoJSON

**GeoJSON** on geospatiaalisen tiedon ja siihen liittyvien ei-spatiaalisten attribuuttien tallennukseen ja tiedon välitykseen kehitetty avoimen standardin tiedostomuoto, joka perustuu JavaScript Object Notation (JSON) -tiedostomuotoon. GeoJSON:issa on määriteltynä JSON-objektityyppejä tavalla, jolla ne edustavat tietoa maantieteellisistä ominaispiirteistä, niiden alueellisista ulottuvuuksista ja ominaisuuksista. GeoJSON:in voidaan määritellä olevan JSON-tiedosto, joka sisältää tietoja tietystä geometriasta (esim. piste, viiva, monikulmio, jne.) valinnaisten ei-spatiaalisten metatietojen kanssa.

Maantieteelliset ominaispiirteet esitetään GeoJSON:ssa geometrisina kuvioina (kuten piste, viivamerkkijono, monikulmio tai pinta). Esimerkiksi osoitteet ja muut tietyssä pisteessä olevat kohteet voidaan kuvata pisteinä, kadut, tiet ja rajat viivamerkkijonoina ja maat, kaupungit sekä muut rajatut maa-alueet erilaisina monikulmioina. Maantieteellisiä ominaisuuksia ei ole rajattu fyysisiin asioihin, vaan mitä tahansa asiaa, jonka sijainti voidaan avaruudellisesti rajata, voidaan pitää tällaisena ominaisuutena. Esimerkiksi erilaisten reititys- ja navigointisovellusten palveluiden kattavuutta voidaan kuvata GeoJSON:in avulla. 

Geometriset muodot eli pisteet, viivat ja monikulmiot kuvataan koordinaattien avulla, jotka tiedostossa ovat tietotyyppinä numeroita. Koordinaattien esittämiseen GeoJSON:ssa käytetään maantieteellistä koordinaattiviittausjärjestelmää World Geodetic System 1984 (WGS84), jossa kuvataan pituus- ja leveysasteet desimaalilukuina.

## Historia

Ensimmäinen GeoJSON-määrittely julkaistiin vuonna 2008. The Internet Engineering Task Force (IETF) muodosti huhtikuussa 2015 työryhmän, joka julkaisi nykyisen GeoJSON määrittelyn  elokuussa 2016. 

## GeoJSON-objektit

GeoJSON-objekti vastaa JSON-objektia. GeoJSON-objekti voi esittää jonkin asian avaruudellista ulottuvuutta (Geometry), avaruudellisesti rajattua kokonaisuutta eli ominaisuutta (Feature), tai ominaisuuksien kokoelmaa (FeatureCollection). GeoJSON:in Featuret sisältävät geometriaa kuvaavan objektin sekä lisäominaisuuksia ja FeatureCollection sisältää kokoelman Featureja. 

## Geometria
Pisteet GeoJSONissa ovat muotoa [x, y] tai [x, y, z]. Nämä voivat olla [pituusaste, leveysaste] tai vaihtoehtoisesti [itäinen, pohjoinen]. Kolmantena arvona on korkeus merenpinnasta. Tämä arvo ei ole pakollinen. Kaikki käytetyt arvot ovat desimaalilukuja. Esimerkiksi Lontoon sijainti (51.5074°N, 0.1278°W) on [-0.1278, 51.5074].

GeoJSONissa koordinaateille määritellään tyyppiarvo. Näitä tyyppiarvoja voivat olla esimerkiksi piste (Point), suora (LineString) ja monikulmio (Polygon). Tyyppiarvot voivat myös olla moniosaisia eli ne sisältävät useamman saman tyyppiarvon koordinaatit. Moniosaiset tyyppiarvot tunnistaa alkuliitteen “Multi” perusteella. Esimerkiksi useamman pisteen määrittelyyn käytetään MultiPoint-tyyppiarvoa sen sijaan, että määriteltäisiin yksitellen useampi Point-tyyppiarvo. Monen erilaisen yksittäisen tai moniosaisen tyyppiarvon lajitelman määrittelyyn voidaan käyttää GeometryCollection-tyyppiarvoa. 

## TopoJSON
TopoJSON on GeoJSONin laajennus joka käyttää topologiaa. Sen sijaan, että jokainen geometrinen kuvio esitettäisiin erikseen, TopoJSONissa geometriset kuviot muodostetaan jaetuista segmenteistä, joita kutsutaan arceiksi. Arcit ovat pisteiden sekvenssejä, kun taas suorat ja monikulmiot ovat arcien sekvenssejä. Jokainen arc on määritelty tiedostossa vain kerran, mutta sitä voidaan käyttää useita kertoja. Tämä auttaa vähentämään turhaa toistoa geometristen muotojen määrittelyssä ja pienentää tiedostokokoja. 

GeoJSONin muuttamiseen TopoJSONiksi on saatavilla komentorivityökalu. TopoJSONin muuttamiseen takaisin GeoJSOniksi käytetään Javascript kirjastoa. TopoJSONia tukee OGR-työkalun alkaen versiosta 1.11 ja PostGIS alkaen versiosta 2.1.0.

## Lähteet