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. |
|
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ā. |
NavigationCoordinate objekts
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
});