Paplašinātā ģeokodēšana

Paplašinātā ģeokodēšana ļauj iegūt adreses informāciju un ģeotelpiskos datus no ievadītā adreses teksta lauka. Atšķirībā no parastās ģeokodēšanas tiek piešķirta lielāka loma pasta indeksam atgriezto adrešu secībā, kā arī dots vērtējums par atgriezto lauku atbilstību meklētajam, kā arī adresi iespējams ievadīt dalīti pa komponentēm, taču tas nav obligāti. Tiek izmantots daudzpakāpju princips - pirmajā adreses meklēšanas piegājienā neko neatgriežot, ģeokodētājs kļūst mazāk strikts nākamajos. Ja adresi nespēj identificēt līdz mājas nosaukumam vai numuram, var tikt atgrieztas apdzīvotās vietas koordinātas. Tā kā šī adrešu meklēšana spēj atrast arī daļēji korekti ievadītu adresi, jāņem vērā, ka šajā risinājuma pastāv lielāks risks saņemt kļūdainu adresi. Lai šo risku samazinātu, iesakām filtrēt adreses pēc “Matching score” vērtības.

Adreses tiek meklētas visu trīs Baltijas valstu ietvaros, izmantojot oficiālos Latvijas, Igaunijas un Lietuvas adrešu reģistrus. Navigācijas koordinātu aprēķināšanai tiek izmantots Jāņa sētas ceļu tīkls.

Servisa URL

Servisa saitei jāatbilst šādai formai:

https://api.kartes.lv/v3//ext-geocoding?

Atgriezto datu formāts ir XML.

HTTP metode ir GET.

Pieprasījuma parametri

Iespējams padot šādus GET parametrus:

Parametrs Skaidrojums Vērtības
country Valsts ISO kods. Neobligāts.
  • LV - Latvija (noklusējums)
  • LT - Lietuva
  • EE - Igaunija
city Apdzīvotā vieta (ciems, pilsēta), administratīvā vienība, teritoriālā vienība.
street Ielas nosaukums. Ir iespēja visu meklējamo informāciju (neskaitot pasta indeksu) ievadīt šajā parametrā.
housenumber Mājas numurs vai nosaukums.
postalcode Pasta indekss.
maxresults Parametrs nosaka maksimālo atgriezto objektu skaitu. Ja parametrs netiek padots, tiek atgriezts līdz 25 objektiem.

Atbildes parametri

Atbildē tiek atgriezts masīvs ar objektiem.

Matching objekts

Parametrs Skaidrojums
Score Atrastās adreses atbilstība meklētajam, izteikta skalā 0-100.
MatchLevel Atbilstības līmenis, piemēram "houseNumber".
MatchingScore Atbilstības līmeņa objekts (izteikts kategorijās "houseNumber", "city", "street", "district" - sk. sadaļā "Address objekts").
MatchType Atbilstības tips, piemēram "pointAddress".

Location objekts

Parametrs Skaidrojums
MapLocationId Unikāls atgrieztās atrašanās vietas kods.
LocationType Atgrieztās vietas veids.

DisplayCoordinate objekts

Atgriež adreses koordinātas.

Parametrs Skaidrojums
Latitude Ģeogrāfiskais platums WGS (EPSG:4326) koordinātu sistēmā.
Longitude Ģeogrāfiskais garums WGS (EPSG:4326) koordinātu sistēmā.

Atgriež adresei tuvākās vietas uz ceļu tīkla koordinātas (var tikt izmantotas maršruta izveides servisam).

Parametrs Skaidrojums
Latitude Ģeogrāfiskais platums WGS (EPSG:4326) koordinātu sistēmā.
Longitude Ģeogrāfiskais garums WGS (EPSG:4326) koordinātu sistēmā.

Address objekts

Parametrs Skaidrojums
Label Pilna adrese.
Country Valsts kods (LV - Latvija, LT - Lietuva, EE - Igaunija).
County Administratīvā vienība.
City Apdzīvota vieta.
District Teritoriālā vienība (netiek atgriezta pilsētām).
Street Iela vai mājas nosaukums (ja adrese nav piesaistīta ielai)
HouseNumber Mājas numurs, ja adrese piesaistīta ielai.
PostalCode Pasta indekss.

Kļūdu kodi

Kods Skaidrojums
200 Wrong input data. Tiek atgriezts, ja vaicājumā nav ievadīti vai nav korekti ievadīti pieprasījuma parametri.
404 No location found. Tiek atgriezts, ja nekas nav ticis atrasts.
400 Wrong input data. Tiek atgriezts, ja nav ievadīts ka'ds no obligātajiem parametriem
5xx Servera kļūda.

Paraugi

Pieprasījums:

https://api.kartes.lv/v3//ext-geocoding?city=Rīga&postalcode=1020&street=Krasta%20iela&housenumber=105A&maxresults=1

Atbilde:

<LocationMatch>
    <Matching>
        <Score>93</Score>
        <MatchLevel>houseNumber</MatchLevel>
        <MatchingScore>
            <City>93</City>
            <Street>93</Street>
            <HouseNumber>93</HouseNumber>
            <Country>100</Country>
        </MatchingScore>
        <MatchType>pointAddress</MatchType>
    </Matching>
    <Location>
        <MapLocationId>89ada520023eb349957e9e4a93f2270b</MapLocationId>
        <LocationType>address</LocationType>
        <DisplayCoordinate>
            <Latitude>56.921337</Latitude>
            <Longitude>24.168581</Longitude>
        </DisplayCoordinate>
        <NavigationCoordinate>
            <Latitude>56.921178</Latitude>
            <Longitude>24.168718</Longitude>
        </NavigationCoordinate>
        <Address>
            <Label>Krasta iela 105A, Rīga, Latgales priekšpilsēta, Latvija</Label>
            <Country>LV</Country>
            <County>Rīga</County>
            <City>Rīga</City>
            <District/>
            <Street>Krasta iela</Street>
            <HouseNumber>105A</HouseNumber>
            <PostalCode>1019</PostalCode>
            <AdditionalData key="CountryName">Latvija</AdditionalData>
            <AdditionalData key="CountyName">Rīga</AdditionalData>
        </Address>
    </Location>
</LocationMatch>

** Pieprasījums ar vaicājumu vienā laukā un daļēji korektu pasta indeksu:**

https://api.kartes.lv/v3//ext-geocoding?city=daugavpils%20%2022%20sloka&postalcode=2020&maxresults=1

Atbilde:

<LocationMatch>
    <Matching>
        <Score>93</Score>
        <MatchLevel>houseNumber</MatchLevel>
        <MatchingScore>
            <City>93</City>
            <Street>93</Street>
            <HouseNumber>93</HouseNumber>
            <Country>100</Country>
        </MatchingScore>
        <MatchType>pointAddress</MatchType>
    </Matching>
    <Location>
        <MapLocationId>c3f402b02256bea19c0a3bd68a34916b</MapLocationId>
        <LocationType>address</LocationType>
        <DisplayCoordinate>
            <Latitude>56.942235</Latitude>
            <Longitude>23.608701</Longitude>
        </DisplayCoordinate>
        <NavigationCoordinate>
            <Latitude>56.942152</Latitude>
            <Longitude>23.608809</Longitude>
        </NavigationCoordinate>
        <Address>
            <Label>Daugavpils iela 22, Jūrmala, Latvija</Label>
            <Country>LV</Country>
            <County>Jūrmala</County>
            <City>Jūrmala</City>
            <District/>
            <Street>Daugavpils iela</Street>
            <HouseNumber>22</HouseNumber>
            <PostalCode>2011</PostalCode>
            <AdditionalData key="CountryName">Latvija</AdditionalData>
            <AdditionalData key="CountyName">Jūrmala</AdditionalData>
        </Address>
    </Location>
</LocationMatch>

Pielietošanas piemēri

Paplašinātās ģeokodēšanas klases definēšana JavaScript kodā:

class ExtendedGeocodingApi {
    constructor() {
        this.apiKey = 'your_api_key_here'; // Replace with your actual API key
        this.baseUrl = 'https://api.kartes.lv/v3';
    }

    // Method to fetch extended geocoded data
    async getExtendedGeocodingData({city, postalcode, street, housenumber, maxresults = 1}) {
        const params = new URLSearchParams({
            city: city,
            postalcode: postalcode,
            street: street,
            housenumber: housenumber,
            maxresults: maxresults
        });

        const url = `${this.baseUrl}/${this.apiKey}/ext-geocoding?${params.toString()}`;

        try {
            const response = await fetch(url);

            // Check if the response is ok (status code 200-299)
            if (!response.ok) {
                throw new Error(`Error fetching data: ${response.statusText}`);
            }

            const data = await response.json();
            return { success: true, data };
        } catch (error) {
            console.error('Fetch error:', error);
            return { success: false, error: error.message };
        }
    }
}

Paplašinātās ģeokodēšanas klases pielietošana:

const api = new ExtendedGeocodingAPI();

api.getExtendedGeocodingData({city: 'Rīga', postalcode: '1020', street: 'Krasta iela', housenumber: '105A', maxresults = 1})
    .then(result => {
        if (!result.success) {
            console.error('Error:', result.error); // Handle the error
            return;
        }

        console.log(result.data);
        // Use the data
    });