Propozycja standaryzacji usługi lokalizacji adresu

Transkrypt

Propozycja standaryzacji usługi lokalizacji adresu
dr inż. Waldemar Izdebski1,2
mgr inż. Andrzej Bielasty2
Propozycja standaryzacji usługi lokalizacji adresu
Numery adresowe są jednym z najprostszych elementów danych przestrzennych. Niemniej
jednak są one bardzo ważnym elementem, ponieważ pozwalają w łatwy sposób na lokalizację różnych
obiektów i zjawisk w odniesieniu do sytuacji terenowej.
Niniejsza publikacja ma na celu zaproponowanie pewnego rozwiązania ogólnego, zwanego
usługą lokalizacji3, które powinno znacznie przyczynić się do wzrostu wykorzystania numeracji
adresowej w Polsce przez jej udostępnienie w prostej formie zarówno do prezentacji jak
i wyszukiwania. Rozwiązanie zostało zaproponowane na bazie doświadczeń autorów we wdrożeniach
oprogramowania do prowadzenia numeracji adresowej prowadzonego przez ostatnie kilka lat w firmie
Geo-system Sp. z o.o.. Zebrane doświadczenia pozwalają mieć nadzieję, że zaproponowane
rozwiązanie spotka się z dobrym przyjęciem przez pozostałe firmy, które uczestniczą we wdrażaniu
numeracji adresowej w Polsce i zechcą proponowane rozwiązanie zaimplementować w swoich
rozwiązaniach. Jeśli tak się stanie to automatycznie zasób punktów adresowych i ulic oferowanych
w ramach wdrożeń firmy Geo-system Sp. z o.o. zwiększy się o wdrożenia firm włączających się do
inicjatywy.
Korzyścią z takiego rozwiązania jest to, że pod jednym adresem sieciowym znajdziemy usługę,
która będzie w stanie przekształcić podany adres na jego lokalizację przestrzenną. Usługa która jest
przedmiotem opracowania pełni dwie role:
1. Jest punktem dostępowym do danych adresowych zgromadzonych w gminie. Jej
bezpośrednie wykorzystanie pozwala pobrać wykaz miejscowości, ulic oraz wskazać
położenie punktu adresowego.
2. Po zarejestrowaniu w repozytorium (usługa zbiorcza) staje się elementem mechanizmu
pozwalającego wyszukiwać dane adresowe z terenu całej Polski.
1
Politechnika Warszawska, Wydział Geodezji i Kartografii, Pl. Politechniki 1, 00-661 Warszawa
Geo-system Sp. z o.o., ul. Kubickiego 9 lok. 5, 02-954 Warszawa
3
„Usługa lokalizacji i udostępniania adresów” została nagrodzona w ramach konkursu Krajowi Liderzy Innowacji i Rozwoju
w roku 2010 uzyskując I miejsce w kategorii Innowacyjna usługa w edycji województwa mazowieckiego, a także uzyskując
wyróżnienie w edycji krajowej tego konkursu.
2
1. Istota usługi lokalizacji
Usługa lokalizacji umożliwia jednolity i prosty sposób wykorzystania gminnych baz adresowych
(zrealizowanych w technologiach różnych firm) do lokalizacji przestrzennej wybranego adresu, co
schematycznie przedstawiono na rysunku 1.
Rysunek 1 Schemat funkcjonowania usługi lokalizacji
Jako przykład wykorzystamy adres z miejscowości Choroszcz, ul. Szkolna 2, który
przekazujemy jako parametr do usługi lokalizacji celem uzyskania jego przestrzennej lokalizacji.
Przykład wywołania przedstawiono poniżej.
http://punktyadresowe.pl/lokalizacja.php?adres=Choroszcz,Szkolna 2
Ważne jest przy tym, że użytkownik nie musi wiedzieć w której gminnej bazie adresowej taki
adres się znajduje ani jaka jest jej struktura. Wszystkim tym zajmuje się usługa lokalizacji, która na
podstawie własnego rejestru baz, potrafi się odwołać do odpowiedniej bazy poprzez udostępnioną
przez właściciela bazy usługę sieciową.
Standardowo w wyniku wywołania usługi lokalizacji, bez dodatkowych parametrów,
otrzymujemy plik XML (zaprezentowany poniżej) ze współrzędnymi szukanego adresu w układzie 92
lub komunikat o braku takiego adresu.
<WynikiWyszukiwania liczbaPozycji="1">
<Pozycja>
<Trafnosc>1</Trafnosc>
<Miejscowosc>Choroszcz</Miejscowosc>
<SIMC>0922811</SIMC>
<Wojewodztwo>podlaskie</Wojewodztwo>
<Powiat>białostocki</Powiat>
<Gmina>Choroszcz - miasto</Gmina>
<ZakresMiejscowosci>764043,590045,769193,596121</ZakresMiejscowosci>
<Ulica>Szkolna</Ulica>
<ZakresUlicy>766499.7,593785,766570.8,593902.6</ZakresUlicy>
<Punkt>2</Punkt>
<WspolrzednePunktu>766540.2,593828.3</WspolrzednePunktu>
</Pozycja>
</WynikiWyszukiwania>
Poprzez odpowiednie sterowanie parametrami usługi lokalizacji
wykorzystania jej również do pobrania słownika miejscowości czy ulic.
istnieje
możliwość
2. Opis standardowych funkcji obsługiwanych przez usługę
Aby usługa lokalizacji mogła wykorzystywać gminną bazę adresową, baza taka musi zostać
w niej zarejestrowana. W tym celu firma, w której technologii baza funkcjonuje, udostępnia swoja
usługę dostępową. Na użytek niniejszego opracowania tę usługę nazwiemy LinkToMPA. Usługa ta
w zależności od parametru „Request” pozwala na rejestrację bazy w usłudze lokalizacji oraz na kilka
innych czynności związanych z przeszukiwaniem bazy punktów adresowych. Każda baza adresowa
posiada swoja indywidualną usługę dostępową.
Najczęściej taka usługa jest funkcją PHP. Adres takiej usługi zostaje wpisany do serwisu
katalogowego usługi lokalizacji, przechowującego adresy usług i informacje (metadane) o wszystkich
usługach udostępnionych przez różne firmy. Dozwolone wartości parametru „Request” i związane
z nimi czynności realizowane przez usługę dostępową przedstawiono w Tabeli 1
Tabela 1 Wykaz obsługiwanych parametrów usługi dostępowej
Lp. Wartość parametru „Request”
Znaczenie i parametru
1
Registration
2
GetAreas
Funkcja generuje niezbędne dane do rejestracji
bazy adresowej na serwerze katalogowym usługi
lokalizacji.
Funkcja zwraca wykaz miejscowości wraz z ich
lokalizacją przestrzenną.
3
GetStreets
Funkcja zwraca
o podanym ID.
4
GetAddressParExt
Wartość parametru, przy której usługa dostępowa
podaje lokalizację przestrzenną podanego:
¾ adresu,
¾ ulicy,
¾ miejscowości,
na podstawie ID miejscowości, ID ulicy i numeru
adresowego.
5
GetAddressLocation
Wartość parametru, przy której usługa dostępowa
powinna podać lokalizację przestrzenną podanego
adresu na podstawie ID miejscowości, nazwy ulicy
i numeru adresowego.
listę
ulic
z
miejscowości
2.1.
Funkcja Registration
Funkcja niniejsza jest wywoływana podczas rejestracji i aktualizacji usługi na serwerze
katalogowym. Może również służyć do pozyskania informacji o usłudze wyszukiwania. W wyniku
zwracany jest plik XML, którego struktura przedstawiona została poniżej. Plik zawiera pojedynczy
obiekt SerwisPunktyAdresowe, składający się z pól:
•
IdentyfikatorSerwisu - jednoznaczne określenie serwisu. Może być tworzona poprzez
połączenie identyfikatora dostarczyciela usługi i terenu objętego usługą np.: geosys_marki.
•
NazwaSerwisu - nazwa serwisu czytelna dla użytkownika.
•
InstytucjaOdpowiedzialna - podmiot odpowiedzialny za dane.
•
ZakresPrzestrzenny - zakres działania usługi zdefiniowany przez atrybuty:
o
CRS - identyfikator układu odniesienia
o
xmin, ymin, xmax, ymax - współrzędne prostokąta ograniczającego zakres
działania usługi we wskazanym układzie odniesienia.
Przykładowy plik metadanych w formacie XML zwrócony przez usługę dostępową z systemu iMPA
http://marki.punktyadresowe.pl/system/service.php?Request=Registration
przedstawiono poniżej
<?xml version="1.0" encoding="UTF-8"?>
<SerwisPunktyAdresowe>
<IdentyfikatorSerwisu>geosys_marki</IdentyfikatorSerwisu>
<NazwaSerwisu>Manager Punktów Adresowych Miasta Marki</NazwaSerwisu>
<InstytucjaOdpowiedzialna>Urząd Miasta Marki</InstytucjaOdpowiedzialna>
<ZakresPrzestrzenny CRS=”2180” xmin=”456045” ymin=”589030” xmax=”459000” ymax=”592000”/>
</SerwisPunktyAdresowe>
2.2.
Funkcja GetAreas
Funkcja zwraca listę miejscowości z bazy adresowej wraz z datą, dla której dane są aktualne.
Parametr Opis
Request
przyjmuje wartość GetAreas
Format
format, w jakim zwracane są dane; dostępne wartości to xml, json (domyślnie XML)
CRS
układ współrzędnych zwracanych danych; parametr przyjmuje wartość identyfikatora
SRID układu; domyślnie PUWG1992, SRID: 2180
Przykładowe zapytanie:
http://halinow.punktyadresowe.pl/system/service.php?Request=getAreas
Wynik:
Zwracany jest plik XML, którego struktura opisana została poniżej lub plik w formacie JSON.
Plik zawiera obiekt Miejscowosci (wraz z atrybutem data aktualizacji) grupujący obiekty Miejscowosc,
zawierające następujące pola:
• Nazwa - Nazwa własna miejscowości
• Jednostka - identyfikator jednostki administracyjnej (TERYT)
• SIMC - identyfikator miejscowości w rejestrze GUS
• ZakresPrzestrzenny - obszar zawierający miejscowość zdefiniowany przez atrybuty
o
CRS - identyfikator układu odniesienia
o
xmin, ymin, xmax, ymax - współrzędne prostokąta ograniczającego
miejscowość we wskazanym układzie odniesienia,
• ID – wewnętrzny identyfikator miejscowości w systemie źródłowy (opcjonalnie).
o
Przykładowy plik wynikowy dla zapytania GetAreas
<?xml version="1.0" encoding="UTF-8"?>
<Miejscowosci dataAktualizacji=”2013-10-15 12:00”>
<Miejscowosc>
<Nazwa>Brzeziny</Nazwa>
<Jednostka>141207_5</Jednostka>
<SIMC>0002631</SIMC>
<ZakresPrzestrzenny CRS="2180" xmin="660695"
<ID>2362</ID>
</Miejscowosc>
.................
<Miejscowosc>
<Nazwa>Halinów</Nazwa>
<Jednostka>141207_4</Jednostka>
<SIMC>0002766</SIMC>
<ZakresPrzestrzenny CRS=”2180” xmin=”659651”
<ID>2362</ID>
</Miejscowosc>
<Miejscowosc>
<Nazwa>Hipolitów</Nazwa>
<Jednostka>141207_5</Jednostka>
<SIMC>0002789</SIMC>
<ZakresPrzestrzenny CRS=”2180” xmin=”658304”
<ID>2363</ID>
</Miejscowosc>
..................
<Miejscowosc>
<Nazwa>Żwirówka</Nazwa>
<Jednostka>141207_5</Jednostka>
<SIMC>0002950</SIMC>
<ZakresPrzestrzenny CRS=”2180” xmin=”663800”
<ID>2378</ID>
</Miejscowosc>
</Miejscowosci>
ymin="483139" xmax="662925" ymax="485552"/>
ymin=”485845” xmax=”662160” ymax=”488086”/>
ymin=”485490” xmax=”661400” ymax=”487490”/>
ymin=”485846” xmax=”665049” ymax=”487076”/>
2.3.
Funkcja GetStreets
Funkcja zwraca listę ulic dla miejscowości określonej przez jej identyfikator SIMC, wraz z ich
lokalizacjami przestrzennymi.
Parametr
Opis
Request
przyjmuje wartość GetStreets
AreaID
Format
CRS
identyfikator SIMC miejscowości
format, w jakim zwracane są dane; dostępne są xml, json (domyślnie XML)
identyfikator układu współrzędnych, w którym są zwracane wyniki; domyślnie
2180 (układ 1992)
Przykładowe zapytanie:
http://halinow.punktyadresowe.pl/system/service.php?request=getStreets&AreaID=0002766
Wynik:
W wyniku zwracany jest plik w formacie XML lub JSON z nazwami ulicy, podstawowymi
informacjami przestrzennymi oraz identyfikatorami wewnętrznymi w systemie udostępniającym
usługę.
Przykładowy plik wynikowy dla zapytania GetStreets
<?xml version="1.0" encoding="UTF-8"?>
<Ulice>
<Ulica>
<ID>53180</ID>
<Nazwa>3-go Maja</Nazwa>
<ZakresPrzestrzenny CRS="2180" xmin="661124" ymin="486867" xmax="661950" ymax="487559"/>
</Ulica>
<Ulica>
<ID>53227</ID>
<Nazwa>Baśniowa</Nazwa>
<ZakresPrzestrzenny CRS="2180" xmin="661446" ymin="487334" xmax="661714" ymax="487548"/>
</Ulica>
<Ulica>
<ID>53175</ID>
<Nazwa>Bema</Nazwa>
<ZakresPrzestrzenny CRS="2180" xmin="660256" ymin="486155" xmax="661753" ymax="486904"/>
</Ulica>
...........
<Ulica>
<ID>53182</ID>
<Nazwa>Wschodnia</Nazwa>
<ZakresPrzestrzenny CRS="2180" xmin="661752" ymin="486155" xmax="661945" ymax="486366"/>
</Ulica>
<Ulica>
<ID>53162</ID>
<Nazwa>Zachodnia</Nazwa>
<ZakresPrzestrzenny CRS="2180" xmin="659817" ymin="487488" xmax="660213" ymax="488000"/>
</Ulica>
<Ulica>
<ID>53868</ID>
<Nazwa>Zielona</Nazwa>
<ZakresPrzestrzenny CRS="2180" xmin="661974" ymin="487299" xmax="662044" ymax="487310"/>
</Ulica>
2.4 Funkcja GetAddressParExt
Funkcja zwraca współrzędne punktu adresowego w zadanym w zapytaniu układzie
współrzędnych na podstawie ID miejscowości, ID ulicy i podanego numeru adresowego.
Parametr
Request
Opis
przyjmuje wartość GetAddressParExt
AreaID
identyfikator SIMC miejscowości
StreetID
identyfikator wewnętrzny ulicy w systemie obsługującym usługę, może być puste
(wyszukiwanie w punktach miejscowości nie posiadających ulicy)
Number
numer szukanego punktu adresowego
Format
format, w jakim zwracane są dane; dostępne wartości to xml, json (domyślnie XML)
CRS
identyfikator układu współrzędnych, w którym są zwracane wyniki; domyślnie 2180 (układ
1992)
Przykładowe zapytanie:
http://halinow.punktyadresowe.pl/system/service.php?request=GetAddressParExt&AreaID=0002766&StreetID=53180&Number=19c
Wynik:
W odpowiedzi zwracany jest plik w plik w formacie XML lub JSON. Znaczenie poszczególnych
pól w pliku jest następujące:
ZnalezionoMiejscowosc Dostępne wartości 0 (brak) lub 1 (znaleziono). Informuje czy plik
wynikowy zawiera położenie miejscowości. Położenia miejscowości można
użyć gdy np. nie znajdzie się szukanego punktu.
ZnalezionoUlice
Dostępne wartości 0 (brak) lub 1 (znaleziono). Informuje czy plik
wynikowy zawiera położenie ulicy. Położenia ulicy można użyć gdy np. nie
znajdzie się szukanego punktu.
ZnalezionoPunkt
Dostępne wartości 0 (brak) lub 1 (znaleziono). Informuje czy plik
wynikowy zawiera położenie punktu.
WspolrzednePunktu
Zawiera informacje: x,y,crs
ZakresUlicy
Zawiera informacje: xmin,ymin,xmax,ymax,crs
ZakresMiejscowosci
Zawiera informacje: xmin,ymin,xmax,ymax,crs
Przykładowy plik wynikowy dla zapytania GetAddressParExt
<?xml version="1.0" encoding="UTF-8"?>
<Rezultat>
<ZnalezionoMiejscowosc>1</ZnalezionoMiejscowosc>
<ZnalezionoUlice>1</ZnalezionoUlice>
<ZnalezionoPunkt>1</ZnalezionoPunkt>
<WspolrzednePunktu x="801053.8" y="386112.5" crs="2180"/>
<ZakresUlicy crs="2180" xmin="661124.6" ymin="486867.5" xmax="661950.5" ymax="487559.7"/>
<ZakresMiejscowosci crs="2180" xmin="800640" ymin="385196" xmax="802537" ymax="387238"/>
</Rezultat>
2.5 Funkcja GetAddressLocation
Funkcja zwraca informacje o znalezionym punkcie lub ulicy w formacie tekstowym
rozdzielanym średnikami. Dane powinny być zapisane jako zwykły tekst (Content-Type: text/plain).
Funkcja jest wykorzystana przez usługą zbiorczą do wyszukiwania. Bardzo istotna jest więc jej
szybkość działania.
Parametr
Request
Opis
przyjmuje wartość GetAddressLocation
AreaID
identyfikator SIMC miejscowości
StreetName nazwa ulicy, przekazywany jest ciąg wyrazów rozdzielony spacjami i zapisany małymi
literami i bez polskich znaków np. “armii krajowej”, “polna”
Number
numer szukanego punktu adresowego
CRS
identyfikator układu współrzędnych, w którym są zwracane wyniki; domyślnie 2180
(układ 1992)
Wyszukiwanie może się odbywać w następujących wariantach:
• Szukana jest ulica, a więc przekazany jest tylko parametr StreetName.
•
Szukany jest punkt adresowy nieprzypisany do żadnej ulicy. Sytuacja typowa dla małych
wsi pozbawionych nazwanych ulic np. Trzcianka 4. W takim przypadku przekazywany
jest jedynie parametr Number.
•
Szukany jest punkt położony przy konkretnej ulicy. Sytuacja najbardziej typowa. Zarówno
parametr StreetName jak i Number są przekazywane.
Wynik:
W wyniku zwracany jest plik tekstowy, z poszczególnymi informacjami oddzielonymi od siebie
średnikami. Znaczenie kolejnych pól w ciągu tekstowym prezentuje poniższa tabela:
Pole
0
Dopuszczalne wartości
liczba całkowita
Opis
Trafność wyniku. 0 – nic nie znaleziono, 1 – znaleziono szukany punkt lub
ulicę, 2 – szukano punktu przy ulicy, a znaleziono tylko ulicę.
1
0,1
0 – wynik posiada informacje o ulicy, 1 – wynik nie posiada informacje o
ulicy. Jeśli 1 to powinny zostać wypełnione pola [4,5,6,7,8]
2
0,1
0 – wynik posiada informacje o punkcie, 1 – wynik nie posiada informacje
o punkcie. Jeśli 1 to powinny zostać wypełnione pola [9,10,11,12]
3
liczba całkowita lub puste
Wewnętrzny identyfikator ulicy, nie jest wymagany
4
tekst lub puste
Nazwa ulicy
5
liczba rzeczywista lub puste Współrzędna “xmin” zakresu przestrzennego ulicy (układ matematyczny!).
6
liczba rzeczywista lub puste Współrzędna “ymin” zakresu przestrzennego ulicy (układ matematyczny!).
7
liczba rzeczywista lub puste Współrzędna “xmax” zakresu przestrzennego ulicy (układ matematyczny!).
8
liczba rzeczywista lub puste Współrzędna “ymax” zakresu przestrzennego ulicy (układ matematyczny!).
9
liczba całkowita lub puste
Wewnętrzny identyfikator punktu, nie jest wymagany
10
tekst lub puste
Numer znalezionego punktu.
11
liczba rzeczywista lub puste Współrzędna “x” znalezionego punktu (układ matematyczny!).
12
liczba rzeczywista lub puste Współrzędna “y” znalezionego punktu (układ matematyczny!).
Poniżej przedstawiono kilka przykładów zapytań kierowanych do baz i uzyskiwanych
odpowiedzi.
1. Typowe zapytanie o miejscowość, ulicę i numer:
http://halinow.pktadr.pl/system/service.php?request=GetAddressLocation&AreaID=0002766&StreetName=kosciuszki&Number=21
Wynik:
1;1;1;53189;Kościuszki;660695.6;486690.2;660924.1;487147.9;234139;21;660802.8;486923.2
2. Zapytanie o miejscowość i ulicę:
http://halinow.pktadr.pl/system/service.php?request=GetAddressLocation&AreaID=0002766&StreetName=pilsudskiego
Wynik:
1;1;0;53184;Józefa Piłsudskiego;659904;486828.6;661154;487453;;;;;
3. Zapytanie o miejscowość i ulicę i numer:
http://halinow.pktadr.pl/system/service.php?request=GetAddressLocation&AreaID=0002766&StreetName=kosciuszki&Number=21c
Wynik: Punkt nie został znaleziony (trafność - pierwsze pole wyniku równe 2), więc zwracana
jest jedynie informację o ulicy.
2;1;0;53189;Kościuszki;660695.6;486690.2;660924.1;487147.9;;;;
4. Zapytanie o miejscowość i ulicę i numer:
http://halinow.pktadr.pl/system/service.php?request=GetAddressLocation&AreaID=0002766&StreetName=lesna&Number=21c
Wynik: Nic nie znaleziono (trafność - pierwsze pole wyniku równe 0),
0;0;0;;;;;;;;;;
3. Uwagi końcowe
W załączniku do tego dokumentu znajduje się plik PHP realizujący wszystkie opisane funkcje dla
bazy testowej systemu iMPA.
Przyjęta zasadą jest, że wszystkie pliki muszą być kodowane w UTF-8.

Podobne dokumenty