lokalizację przestrzenną wybranego adresu
Transkrypt
lokalizację przestrzenną wybranego adresu
dr inż. Waldemar Izdebski1,2 mgr inż. Andrzej Bielasty2 KONCEPCJA STANDARYZACJI USŁUGI LOKALIZACJI PRZESTRZENNEJ ADRESÓW Numery adresowe, które ogólnie mówiąc wyrażają lokalizację przestrzenną adresów, są prostym, ale jednocześnie bardzo ważnym elementem danych przestrzennych. Dzięki ich wykorzystaniu uzyskujemy możliwość przestrzennej lokalizacji obiektów, które posiadają nadane adresy. Zamiana adresu na jego lokalizację przestrzenną jest ważna nie tylko w systemach informacji przestrzennej, ale również w powszechnie używanych urządzeniach nawigacyjnych. Na podstawie obowiązującego prawa numerację adresową prowadzą jednostki samorządowe szczebla gminnego. Oznacza to, że w końcowym efekcie na całość aktualnej numeracji adresowej w Polsce będzie się składało 2479 baz źródłowych. Na dzisiaj oceniamy, że wymagane prawem bazy adresowe funkcjonują jedynie w ok. 40% jednostek samorządowych. W pozostałych dalej wykorzystywany jest papier lub prosta forma plików pakietów biurowych. Z natury rzeczy bazy adresowe będą prowadzone w różnych systemach, ale nie oznacza to, że na poziomie krajowym musimy korzystać z takiego rozdrobnienia i za każdym razem dokonywać ustalania specyficznych parametrów dostępu do poszczególnych baz oraz wnikać w ich strukturę. Niniejsza publikacja proponuje koncepcję standaryzacji usługi lokalizacji przestrzennej adresów3 przez stworzenie jednej centralnej usługi lokalizacji adresów, która przy pomocy ujednoliconego interfejsu będzie mogła korzystać, podczas ustalania lokalizacji adresu, z dowolnej gminnej bazy adresowej. Usługa lokalizacji adresów została zaproponowana na bazie doświadczeń autorów zdobytych we wdrożeniach oprogramowania do prowadzenia numeracji adresowej realizowanych przez firmę Geo-system Sp. z o.o.. Zebrane doświadczenia pozwalają mieć nadzieję, że opisane rozwiązanie spotka się z dobrym przyjęciem przez pozostałe firmy, które uczestniczą we wdrażaniu numeracji adresowej w Polsce i zechcą zaimplementować zasady proponowanej usługi lokalizacji adresów w swoich systemach. Jeśli tak się stanie to automatycznie zasób punktów adresowych i ulic oferowanych w ramach wdrożeń firmy Geo-system (obecnie ponad 700 gmin, prawie 2.500.000 punktów adresowych) zwiększy się o wdrożenia pozostałych firm włączających się do inicjatywy. Korzyścią z takiego rozwiązania jest fakt, że pod jednym adresem URL znajdziemy usługę, która będzie w stanie przekształcić przekazywany do niej adres na jego lokalizację przestrzenną. Dzięki usłudze twórcy systemów informacji przestrzennej i geoportali zyskają systemowe rozwiązanie jednego z bardzo istotnych elementów jakim jest wyszukiwanie obiektów na podstawie adresu. Usługa lokalizacji adresów zapewni im bowiem dostęp do aktualizowanych na bieżąco gminnych baz adresowych, dzięki czemu adresy nadawane w gminach będą natychmiast dostępne dla użytkowników usługi lokalizacji adresów. 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 adresów (ULA) 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 (ULA) Jako przykład wykorzystamy adres z miejscowości Choroszcz, ul. Szkolna 2, który przekazujemy jako parametr do usługi 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 (serwera katalogowego) i związanych z nimi usług, potrafi odwołać się do odpowiedniej bazy gminnej poprzez usługę sieciową udostępnioną przez właściciela bazy. 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 PUWG92 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> Usługa ULA oferuje również odpowiednie parametry wywołania do utworzenia słownika miejscowości w gminie, powiecie lub województwie oraz słownika ulic w podanej miejscowości. Słowniki są niezbędne do obsługi interaktywnego interfejsu wyszukiwania (listy rozwijalne, podpowiedzi). Przykłady wywołań do generowania słowników przedstawiono poniżej: ¾ ¾ http://punktyadresowe.pl/lokalizacja.php?miejscowosci=200201 http://punktyadresowe.pl/lokalizacja.php?ulice=0922811 gdzie • • przy słowniku miejscowości podajemy identyfikator TERYT gminy np. 200201 (gmina Choroszcz) lub jego fragment np. 2002, co w tym przypadku oznacza wygenerowanie wszystkich miejscowości dla powiatu białostockiego, przy słowniku ulic podajemy identyfikator SIMC miejscowości np. 0922811, co oznacza uzyskanie wykazu wszystkich ulic z miejscowości Choroszcz. 2. Rejestracja baz adresowych w usłudze lokalizacji adresów Aby usługa ULA mogła wykorzystywać gminną bazę adresową, baza taka musi zostać zarejestrowana w jej repozytorium. W tym celu firma, w której technologii baza funkcjonuje, przygotowuje swoja usługę dostępową. Na użytek niniejszego opracowania tę usługę nazwiemy „LinkToULA”. Usługa ta w zależności od parametru „Request” będzie pozwala na rejestrację bazy w repozytorium usługi ULA oraz na kilka innych czynności związanych z przeszukiwaniem bazy punktów adresowych podczas korzystania z niej przez usługę ULA. Każda baza adresowa musi posiadać swoją indywidualną usługę dostępową. Usługa dostępowa pełni dwie role: 1. Jest punktem dostępowym do danych adresowych zgromadzonych w gminie. Może być bezpośrednio wykorzystywana do pobierania wykazu miejscowości, ulic oraz wskazywania położenie punktu adresowego. 2. Po zarejestrowaniu w repozytorium usługi ULA staje się elementem mechanizmu pozwalającego wyszukiwać dane adresowe z terenu całej Polski. Usługa dostępowa może być realizowana przez skrypt PHP, Python, CGI lub ASP. Adres takiej usługi zostaje wpisany do repozytorium usługi ULA, 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 Rezultat wywołania „Request” 1 Registration Wywołanie usługi dostępowej generuje niezbędne dane do rejestracji bazy adresowej na serwerze katalogowym usługi ULA. 2 GetAreas Wywołanie usługi dostępowej zwraca wykaz miejscowości wraz z ich lokalizacją przestrzenną. 3 GetStreets Wywołanie usługi dostępowej zwraca listę ulic z miejscowości o podanym ID wraz z ich lokalizacją przestrzenną. 4 GetAddressParExt Wywołanie usługi dostępowej zwraca lokalizację przestrzenną podanego: ¾ adresu, ¾ ulicy, ¾ miejscowości, na podstawie ID miejscowości, ID ulicy i numeru adresowego. 5 GetAddressLocation Wywołanie usługi dostępowej zwraca lokalizację przestrzenną podanego adresu na podstawie ID miejscowości, nazwy ulicy i numeru adresowego. Przyjęta zasadą jest, że wszystkie pliki wykorzystywane w usługach muszą być kodowane w UTF-8. 2.1. Funkcja Registration Funkcja niniejsza jest wywoływana podczas rejestracji i aktualizacji usługi na serwerze katalogowym. W wyniku jej działania 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 obszaru działania 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 (układ matematyczny). 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> W celu zapewnienia poprawnego funkcjonowania usługi lokalizacji, rejestracji nowej bazy może dokonywać jedynie firma Geo-system lub użytkownik, który uzyska odpowiednie uprawnienia. Do testowania poprawności przygotowanych usług dostępowych służy testowy serwis rejestracji www.punktyadresowe.pl/rejestracjatest, a do korzystania z zarejestrownych usług własnych usługa ULA w wersji testowej dostępna pod adresem www.punktyadresowe.pl/lokalizacjatest.php. 2.2. Funkcja GetAreas Funkcja zwraca listę miejscowości z gminnej bazy adresowej wraz z datą, dla której dane są aktualne. Wykaz parametrów przedstawiono w tabeli 2. Tabela 2 Wykaz parametrów dla funkcji GetAreas Parametr Opis Request Format Przyjmuje wartość GetAreas. 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 PUWG92, SRID: 2180. W wyniku zapytania: http://halinow.punktyadresowe.pl/system/service.php?Request=getAreas 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 (układ matematyczny), • ID – wewnętrzny identyfikator miejscowości w systemie źródłowy (opcjonalnie). 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" ymin="483139" xmax="662925" ymax="485552"/> <ID>2362</ID> </Miejscowosc> ................. <Nazwa>Żwirówka</Nazwa> <Jednostka>141207_5</Jednostka> <SIMC>0002950</SIMC> <ZakresPrzestrzenny CRS=”2180” xmin=”663800” ymin=”485846” xmax=”665049” ymax=”487076”/> <ID>2378</ID> </Miejscowosc> </Miejscowosci> 2.3. Funkcja GetStreets Funkcja zwraca listę ulic wraz z ich lokalizacjami przestrzennymi dla miejscowości określonej przez jej identyfikator SIMC. Wykaz dozwolonych parametrów funkcji przedstawiono w tabeli 3. Tabela 3 Wykaz parametrów dla funkcji GetStreets Parametr Opis Request Przyjmuje wartość GetStreets. AreaID Identyfikator SIMC miejscowości. Format Format, w jakim zwracane są dane; dostępne są XML, JSON (domyślnie XML). CRS Identyfikator układu współrzędnych, w którym są zwracane wyniki; domyślnie 2180 (układ PUWG92). W wyniku zapytania: http://halinow.punktyadresowe.pl/system/service.php?request=getStreets&AreaID=0002766 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="486905"/> </Ulica> ........... <Ulica> <ID>53868</ID> <Nazwa>Zielona</Nazwa> <ZakresPrzestrzenny CRS="2180" xmin="661974" ymin="487299" xmax="662044" ymax="487310"/> </Ulica> </Ulice> 2.4 Funkcja GetAddressParExt Funkcja niniejsza, na podstawie ID miejscowości, ID ulicy i podanego numeru adresowego, zwraca wszystkie parametry przestrzenne punktu adresowego, a więc zakres przestrzenny miejscowości, zakres przestrzenny ulicy oraz współrzędne punktu adresowego. Wykaz dozwolonych parametrów funkcji przedstawiono w tabeli 4. Tabela 4 Wykaz parametrów dla funkcji GetAddressParExt Parametr Opis Request 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). Identyfikator układu współrzędnych, w którym są zwracane wyniki; domyślnie 2180 (układ PUWG92). W wyniku zapytania: CRS http://halinow.punktyadresowe.pl/system/service.php?request=GetAddressParExt&AreaID=0002766&St reetID=53180&Number=19c zwracany jest plik w plik w formacie XML lub JSON. Znaczenie poszczególnych znaczników w pliku wyników przedstawiono w tabeli 5. Tabela 5 Wykaz wartości zwracanych przez funkcję GetAddressParExt Oznaczenie Opis 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 WspolrzednePunktu 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. Dostępne wartości 0 (brak) lub 1 (znaleziono). Informuje czy plik wynikowy zawiera położenie punktu. Zawiera informacje: x,y,crs.*) ZakresUlicy Zawiera informacje: xmin,ymin,xmax,ymax,crs.*) ZakresMiejscowosci Zawiera informacje: xmin,ymin,xmax,ymax,crs. *) ZnalezionoPunkt *) Współrzędne podawane są w układzie matematycznym Przykładowy plik wynikowy otrzymany w wyniku działania funkcji GetAddressParExt przedstawiono poniżej. <?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 adresowym lub ulicy w formacie tekstowym rozdzielonym średnikami. Dane powinny być zapisane jako zwykły tekst (Content-Type: text/plain). Wykaz dozwolonych parametrów funkcji przedstawiono w tabeli 6. Tabela 6 Wykaz parametrów dla funkcji GetAddressLocation Parametr Request AreaID StreetName Number CRS Opis Przyjmuje wartość GetAddressLocation. Identyfikator SIMC miejscowości. Nazwa ulicy. Numer adresowy. Identyfikator układu współrzędnych, w którym są zwracane wyniki; domyślnie 2180 (układ PUWG92). 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. W wyniku zwracany jest plik tekstowy, z poszczególnymi informacjami oddzielonymi od siebie średnikami. Znaczenie kolejnych pól w ciągu tekstowym prezentuje tabela 7. Tabela 7 Wykaz wartości zwracanych przez funkcję GetAddressLocation Pole Dopuszczalne wartości 0 liczba całkowita 1 0,1 2 0,1 3 liczba całkowita lub puste 4 5 6 7 8 9 tekst lub puste liczba rzeczywista lub puste liczba rzeczywista lub puste liczba rzeczywista lub puste liczba rzeczywista lub puste liczba całkowita lub puste 10 tekst lub puste 11 liczba rzeczywista lub puste 12 liczba rzeczywista lub puste Opis Trafność wyniku. 0 – nic nie znaleziono, 1 – znaleziono szukany punkt lub ulicę, 2 – znaleziono tylko ulicę. 0 – wynik nie posiada informacji o ulicy, 1 – wynik posiada informacje o ulicy. Jeśli 1 to powinny zostać wypełnione pola [4,5,6,7,8]. 0 – wynik nie posiada informacji o punkcie, 1 – wynik posiada informacje o punkcie. Jeśli 1 to powinny zostać wypełnione pola [9,10,11,12]. Wewnętrzny identyfikator ulicy. Zwracanie nie jest wymagane, pole może pozostać puste. Nazwa ulicy. Współrzędna “xmin” zakresu przestrzennego ulicy.*) Współrzędna “ymin” zakresu przestrzennego ulicy.*) Współrzędna “xmax” zakresu przestrzennego ulicy. *) Współrzędna “ymax” zakresu przestrzennego ulicy.*) Wewnętrzny identyfikator punktu. Zwracanie nie jest wymagane, pole może pozostać puste. Numer adresowy. Współrzędna “x” znalezionego punktu. *) Współrzędna “y” znalezionego punktu.*) *) Współrzędne są podawane w układzie matematycznym Poniżej przedstawiono kilka przykładów zapytań i uzyskiwanych odpowiedzi. 1. Typowe zapytanie o miejscowość, ulicę i numer: kierowanych do konkretnych baz http://halinow.pktadr.pl/system/service.php?request=GetAddressLocation&AreaID=0002766&StreetName=Kościuszki&Number=21 Wynik:1;1;1;8;Kościuszki;660695;486690;660924;487147;9;21;660802;486923 2. Zapytanie o miejscowość i ulicę: http://halinow.pktadr.pl/system/service.php?request=GetAddressLocation&AreaID=0002766&StreetName=Piłsudskiego Wynik:1;1;0;53184;Józefa Piłsudskiego;659904;486828.6;661154;487453;;;;; 3. Zapytanie o miejscowość i ulicę i numer (sytuacja kiedy jest brak szukanego punktu): http://halinow.pktadr.pl/system/service.php?request=GetAddressLocation&AreaID=0002766&StreetName=Kościuszki&Number=21c Punkt nie został znaleziony (trafność - pierwsze pole wyniku równe 2), więc zwracana jest jedynie informację o ulicy. Wynik:2;1;0;53189;Kościuszki;660695.6;486690.2;660924.1;487147.9;;;; 4. Zapytanie o miejscowość, ulicę i numer: http://halinow.pktadr.pl/system/service.php?request=GetAddressLocation&AreaID=0002766&StreetName=Leśna&Number=21c Nic nie znaleziono (trafność - pierwsze pole wyniku równe 0), Wynik:0;0;0;;;;;;;;;; 3. Uwagi końcowe Z praktycznym funkcjonowaniem usługi można zapoznać się na stronie www.punktyadresowe.pl w zakładce „Usługa lokalizacji”. Tam też dostępna jest aktualna wersja specyfikacji technicznej z przykładowym plikiem PHP realizującym wszystkie opisane funkcje dla bazy testowej systemu iMPA. W przypadku konkretnej bazy, załączony plik należy dostosować do jej struktury. Rysunek 2 Ilustracja funkcjonowania usługi lokalizacji adresów ULA Wpisując adres w dostępne pole z etykieta „Podaj szukany adres” i uaktywniając „Szukaj” usługa lokalizacji zwraca współrzędne punktu adresowego i pozycjonuje pomocnicza mapę na uzyskanych współrzędnych. Uzyskiwane pliki wyników są do pobrania pod linkami XML i JSON.