Pöördgeokodeerimise juhend

Praktiline juhend näidetega: koordinaatidest lähima aadressi leidmine, väljundvormingud, detail-režiim ja koordinaatide järjekord eri vormingutes.

Päris näited. Päringud ja vastused on tehtud teenuse vastu https://pump.elemroot.com/rgc4 (võti key=docs_382d376eaaa6d004b7b93b7d, andmekogu gl=ee_lt_lv, teenus s=ADDRESS).
Sisukord

Endpoint ja meetodid

Kasutab GET- ja POST-meetodit (POST puhul application/x-www-form-urlencoded). NB: POST-i korral peab key olema päringustringis (URL-is); ainult vormikehas antud võtit võtmekontroll ei näe ja vastus on 403.

MeetodAadress
GEThttps://pump.elemroot.com/rgc4/revgeocode
GEThttps://pump.elemroot.com/rgc4_lyh/revgeocode („lüh”: sama API ja JSON-struktuur, lühem aadressivorm: EE, Tartumaa, Tartu, …)

Parameetrite koondtabel

ParamTähendusVõimalikud väärtused / näideVaikimisi
q *Sisendpunkt lat,lon (laiuskraad ees; korduv = pakett)58.3957739,26.7462826—
gl *Andmekogu. ee_lt_lv_aid annab detail-vastuses lisaks AADRESS_ID (ainult /rgc4; Eesti, Läti ja Leedu punktidel)ee_lt_lv, ee_lt_lv_aid—
s *Reeglistik; kohustuslik. Sufiks _reverse pöörab address-stringi komponentide järjekorra (täpsem enne)ADDRESS, ADDRESS_reverse—
outputVäljundvormingjson, json2, xml, xml2, kml, ads_liik_staatusjson
key *API-võti (ilma võtmeta 403)docs_382d376eaaa6d004b7b93b7d (demo)—
srsSisend- ja väljundkoordinaadid. distance on meetrites ainult siis, kui srs puudub või on täpselt EPSG:4326EPSG:4326, EPSG:3301 (tõstutundetu; ka wgs84): muu annab 500EPSG:4326
lVormindatud aadressi max pikkus märkides (mitte tase!)täisarv—
detailLisa struktureeritud komponendidtühi, true, false—
replaceTypeType-koodi ümbernimetus (korduv)A5 street—
callbackJSONP callbackfunktsiooni nimi, nt cb—

Andmekogu gl=ee_lt_lv (Eesti+Läti+Leedu) on praegu ainus seadistatud andmekogu; teenus on s=ADDRESS (või s=ADDRESS_reverse: komponendid tagurpidi, vt allpool).

Esimene päring

Päring
curl "https://pump.elemroot.com/rgc4/revgeocode?q=58.3957739405547,26.7462826320901&gl=ee_lt_lv&s=ADDRESS&key=docs_382d376eaaa6d004b7b93b7d"
Vastus (json)
[
  {
    "distance": 4.6902068828416404E-4,
    "name": "58.3957739405547,26.7462826320901",
    "placemark": {
      "address": "EE, Tartu maakond, Tartu linn, Tartu linn, Muuseumi tee 2",
      "point": { "coordinates": [26.74628262527919, 58.39577393830106] }
    }
  }
]

distance on sisendpunkti ja leitud aadressi vaheline kaugus meetrites (väärtus võib tulla eksponentkujul, nt 4.69E-4 = 0,47 mm). placemark on üks objekt (mitte massiiv). name kordab sisendkoordinaate.

NB: distance ja srs. Meetrites on kaugus ainult siis, kui srs puudub või on täpselt EPSG:4326 (suurtähtedega). Iga muu kirjapilt: epsg:4326, wgs84 ja loomulikult srs=EPSG:3301; annab distance kraadipõhisena (sisemine arvutus käib siis tasapinnalistes kraadides); ära tõlgenda seda siis meetritena. Kood ise on tõstutundetu (epsg:3301 töötab); l-est97 pöördgeokodeerimisel ei tööta (500).
Sisend q = lat,lon. Esimene arv on laiuskraad (N), teine pikkuskraad (E). Süsteem on srs (vaikimisi EPSG:4326).

Kuidas vaste valitakse

Iga sisendkoordinaadi kohta tuleb täpselt üks vaste. Mitu punkti saab küsida ühe päringuga, korrates parameetrit q; vastused on samas järjekorras.

Riigipiiri lähedal valitakse lähim aadressipunkt riigist sõltumata: punkt Eesti pool piiri võib saada Läti aadressi, kui lähim maja on Läti pool.

Komponendid tagurpidi (s=ADDRESS_reverse)

Sufiks _reverse teenuse ID-l pöörab address-stringi komponentide järjekorra; täpsem enne: sobib otse kuvamiseks või lühendamiseks. Koordinaadid, distance ja struktureeritud AddressLines (detail) ei muutu. Sufiks on väiketähtedega (ADDRESS_REVERSE annab 500).

Päring
curl "https://pump.elemroot.com/rgc4/revgeocode?q=58.3957739405547,26.7462826320901&gl=ee_lt_lv&s=ADDRESS_reverse&key=docs_382d376eaaa6d004b7b93b7d"
Vastus (json)
[
  {
    "distance": 4.6902068828416404E-4,
    "name": "58.3957739405547,26.7462826320901",
    "placemark": {
      "address": "Muuseumi tee 2, Tartu linn, Tartu linn, Tartu maakond, EE",
      "point": { "coordinates": [26.74628262527919, 58.39577393830106] }
    }
  }
]

Sama päring s=ADDRESS-iga annab "EE, Tartu maakond, Tartu linn, Tartu linn, Muuseumi tee 2". Töötab ka /rgc4_lyh-l ("Muuseumi tee 2, Tartu, Tartu, Tartumaa, EE").

Aadressikomponendid (detail)

Vaikimisi tagastatakse vaid aadressitekst, koordinaadid ja kaugus. Struktureeritud komponentide saamiseks lisa detail (ja kasuta json2/xml2):

Päring
curl "https://pump.elemroot.com/rgc4/revgeocode?q=58.3957739405547,26.7462826320901&gl=ee_lt_lv&s=ADDRESS&output=json2&detail&key=docs_382d376eaaa6d004b7b93b7d"
Vastus (json2)
[
  {
    "distance": 4.6902068828416404E-4,
    "name": "58.3957739405547,26.7462826320901",
    "placemark": {
      "address": "EE, Tartu maakond, Tartu linn, Tartu linn, Muuseumi tee 2",
      "AddressDetails": {
        "AddressLines": [
          { "Type": "A0",      "Value": "Eesti Vabariik" },
          { "Type": "A1",      "Value": "Tartu maakond" },
          { "Type": "A2",      "Value": "Tartu linn" },
          { "Type": "A3",      "Value": "Tartu linn" },
          { "Type": "A5",      "Value": "Muuseumi tee" },
          { "Type": "A7",      "Value": "2" },
          { "Type": "POSTCODE","Value": "60532" },
          { "Type": "A1_EHAK", "Value": "0079" },
          { "Type": "A2_EHAK", "Value": "0793" },
          { "Type": "A3_EHAK", "Value": "8151" }
        ]
      },
      "point": { "coordinates": [26.74628262527919, 58.39577393830106] }
    }
  }
]
NB. json väljundis on AddressDetails ka detail-iga tühi ({}): tüübistatud komponendid tulevad json2/xml2 kaudu. detail peab olema serveris lubatud (muidu HTTP 501).

Läti ja Leedu komponendid

Läti ja Leedu punktidel on tüübikoodid samad, aga koosseis erineb:

Väljundvormingud

output: json, json2, xml, xml2, kml, ads_liik_staatus.

xml2

curl "https://pump.elemroot.com/rgc4/revgeocode?q=58.3957739405547,26.7462826320901&gl=ee_lt_lv&s=ADDRESS&output=xml2&detail&key=docs_382d376eaaa6d004b7b93b7d"
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Response>
<name>58.3957739405547,26.7462826320901</name>
<distance>4.6902068828416404E-4</distance>
<Placemark>
<Point><coordinates>58.39577393830106,26.74628262527919</coordinates></Point>
<address>EE, Tartu maakond, Tartu linn, Tartu linn, Muuseumi tee 2</address>
<AddressDetails>
<AddressLine Type="A0">Eesti Vabariik</AddressLine>
<AddressLine Type="A1">Tartu maakond</AddressLine>
<AddressLine Type="A2">Tartu linn</AddressLine>
<AddressLine Type="A3">Tartu linn</AddressLine>
<AddressLine Type="A5">Muuseumi tee</AddressLine>
<AddressLine Type="A7">2</AddressLine>
<AddressLine Type="POSTCODE">60532</AddressLine>
<AddressLine Type="A1_EHAK">0079</AddressLine>
<AddressLine Type="A2_EHAK">0793</AddressLine>
<AddressLine Type="A3_EHAK">8151</AddressLine>
</AddressDetails>
</Placemark>
</Response>
</kml>

Erinevalt geokodeerimisest pole pöördgeokodeerimise xml2-s <AddressLines> ümbriselementi: <AddressLine> on otse <AddressDetails> all.

Koordinaatide järjekord

Tähelepanu: järjekord erineb vormingute vahel:

Sisend q on alati lat,lon (N,E).

ads_liik_staatus

Aadressi liik/staatus XML, aadress eestikeelsete väljadena, koos kaugusega:

curl "https://pump.elemroot.com/rgc4/revgeocode?q=58.3957739405547,26.7462826320901&gl=ee_lt_lv&s=ADDRESS&output=ads_liik_staatus&detail&key=docs_382d376eaaa6d004b7b93b7d"
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<aadressideNimekiri>
<aadress>
<aadressSisse>58.3957739405547,26.7462826320901</aadressSisse>
<kaugus>4.6902068828416404E-4</kaugus>
<vaste>
<maakondEhak>0079</maakondEhak>
<maakond>Tartu maakond</maakond>
<omavalitsusEhak>0793</omavalitsusEhak>
<omavalitsus>Tartu linn</omavalitsus>
<asustusyksusEhak>8151</asustusyksusEhak>
<asustusyksus>Tartu linn</asustusyksus>
<liikluspind>Muuseumi tee</liikluspind>
<aadressinumber>2</aadressinumber>
<sihtnumber>60532</sihtnumber>
<aadressValja>EE, Tartu maakond, Tartu linn, Tartu linn, Muuseumi tee 2</aadressValja>
<koordinaadid>26.74628262527919,58.39577393830106</koordinaadid>
</vaste>
</aadress>
</aadressideNimekiri>

Millal mida kasutada

ÜlesanneKombinatsioonMiks
Punkt → aadress + kaugus meetritesgl=ee_lt_lv&s=ADDRESSvaikimisi EPSG:4326; distance on meetrites
Aadressi komponendid eraldi väljadenaoutput=json2&detail=trueannab AddressLines tüübikoodidega
Aadressiväljad eesti nimedegaoutput=ads_liik_staatus&detail=truedetail on selle vormingu jaoks kohustuslik
Lühem aadressitekst/rgc4_lyh/revgeocodesama JSON, lühem address string
Aadress täpsem-enne (Muuseumi tee 2, Tartu linn, …)s=ADDRESS_reversemuutub ainult address-stringi järjekord; kuvamiseks ja lühendamiseks
Punktile ka aadressi IDgl=ee_lt_lv_aid&detail=trueainult /rgc4; AddressLines saab rea AADRESS_ID nii Eesti, Läti kui Leedu punktidel. /rgc4_lyh seda ei toeta: seal kaheastmeline retsept allpool
Näide: punktile aadressi ID ühe päringuga
curl "https://pump.elemroot.com/rgc4/revgeocode?q=58.3957739,26.7462826&gl=ee_lt_lv_aid&s=ADDRESS&output=json2&detail=true&key=docs_382d376eaaa6d004b7b93b7d"
Vastus (json2, lühendatud): viimane rida on aadressi ID
"AddressLines": [ …, {"Type": "A7", "Value": "2"}, {"Type": "POSTCODE", "Value": "60532"}, …, {"Type": "AADRESS_ID", "Value": "3069760"} ]
Näide: sama Läti punktil
curl "https://pump.elemroot.com/rgc4/revgeocode?q=57.520503,25.390738&gl=ee_lt_lv_aid&s=ADDRESS&output=json2&detail=true&key=docs_382d376eaaa6d004b7b93b7d"
Vastus (lühendatud)
"AddressLines": [ …, {"Type": "A7", "Value": "195 k-1"}, {"Type": "POSTCODE", "Value": "4201"}, {"Type": "AADRESS_ID", "Value": "101020361"} ]

Läti ja Leedu AADRESS_ID sobib otse edasi: geokodeerija aidq=true päringusse (gl=lv / gl=lt) ja tasandiprefiksiga ka aadressikataloogi.

Näide: kaks sammu (/rgc4_lyh, kus ID-d ei tule)
# 1) punkt -> aadressitekst
curl "https://pump.elemroot.com/rgc4/revgeocode?q=58.3957739,26.7462826&gl=ee_lt_lv&s=ADDRESS&key=docs_382d376eaaa6d004b7b93b7d"

# 2) aadressitekst -> AADRESS_ID
curl "https://pump.elemroot.com/jgc_rest/geocode?q=Muuseumi+tee+2,+Tartu+linn&gl=ee_aid&output=json2&key=docs_382d376eaaa6d004b7b93b7d"
Kaks lõksu. Sisend q on lat,lon (laiuskraad ees), aga JSON-vastuse point.coordinates on [E, N]. Ja distance on meetrites ainult siis, kui srs puudub või on täpselt EPSG:4326; srs=EPSG:3301, aga ka epsg:4326 või wgs84 annavad kraadipõhise arvu.

Veakäsitlus

OlukordKoodTeade
gl puudub500No service provided in the request. Use request parameter gl
Andmekogu pole toetatud500<gl>: this service is not supported
q puudub400q missing in query
q vigane400q is not correct
l vigane400l is not correct
detail keelatud servletis501detail is not supported by this servlet
Vorming nõuab detail=true400output format <x> only supported with URL parameter detail=true
Tundmatu output400<vorming>: unknown output format
Autoriseerimise viga (võti)403võtme veateade

API viide (Swagger UI) → Interaktiivne „proovi järele”. OpenAPI spec (YAML-fail) → Masinloetav API kirjeldus tööriistadele. NB: avaneb toore YAML-failina.

Näited galeriis