Dane adresowe w (postaci punktów) do pobrania dla Polski występują w trzech źródłach:
- Państwowy Rejestr Granic ok. 7 mln punktów adresowych dla całego kraju. Jest to największa dostępna tego typu baza w Polsce. Strona pobierania (GUGiK). Link bezpośredniego pobierania (ok. 900 Mb, format GML). Dane po rozpakowaniu zajmują ok. 20GB (16 plików w podziale na województwa) i są dość trudne do otwarcia na słabszych komputerach.
- OpenAddresses. Jest to projekt gromadzący publicznie dostępne dane adresowe dla różnych krajów. Dane dostępne są pod tym linkiem. Dla Polski wykorzystuje dane z Państwowego Rejestru Granic, są one przetworzone do formatu CSV i łatwiejsze w wykorzystaniu od oryginalnych danych w formacie GML.
- OpenStreetMap. W OSM jest ok. 7,5 mln punktów adresowych dla Polski. Pod tym linkiem znajduje się więcej informacji o pobieraniu danych OSM.
Istnieją również dane komercyjne, oferowane przez różne firmy, które reklamują te dane jako bardziej kompletne i dokładne.
Geokodowanie
Najczęstszym powodem sięgania po te dane jest stworzenie narzędzia do wyszukiwania adresów. Nie jest to trywialne zadanie (duża liczba punktów, błędy w danych źródłowych, oraz przede wszystkim niedostosowanie struktury danych źródłowych z danymi do geokodowania). Dostępnych jest sporo możliwości geokodowania udostępnianych na różnych zasadach:
API (czyli narzędzie pozwalające wysłać na serwer dostawcy dane do geokodowania i odebrać w odpowiedzi współrzędne)
- Uniwersalna Usługa Geokodowania od GUGiK
- HERE
- Targeo (AutoMapa) – dane dla Polski
oraz kilka usług działających na danych OSM:
Jak to zrobić w QGIS?
Są wtyczki wykorzystujące różne API, które pozwalają pobrać lokalizację na bazie podanego adresu
Otwarte silniki do geokodowania
Jeżeli ktoś chciałby uruchomić usługę geokodowania w swojej sieci to może uruchomić któryś z opisanych niżej silników w swoim środowisku.
Utknąłem i potrzebuję pomocy. Używam https://services.gugik.gov.pl/uug/. Odpytuję o Podaj szukany adres: “Marki, Andersa 1”. W zwracanym JSON mam takie koordynaty “x”:”644234.29″,”y”:”499514.029999999″,”geometry_wkt”:”POINT(644234.29 499514.029999999)”. Co to za punkty? Jak to przetłumaczyć na zwykłe współrzędne?
Te punkty są w układzie współrzędnych EPSG:2180 (PUWG 1992), a Ty pewnie potrzebujesz je w EPSG:4326 (WGS84). W zależności od tego w czym piszesz, znajdź odpowiednią bibliotekę, która to przetłumaczy.
Racja, udało mi się w międzyczasie zidentyfikować. Szkoda że na uug nie podano tego wprost. Dla szukających przelicznika tu jedna z opcji w Python:
import pyproj
xIn = 644234.29
yIn = 499514.029999999
transformer = pyproj.Transformer.from_crs(“EPSG:2180”, “EPSG:4326”, always_xy = True)
xy = transformer.transform(xIn, yIn)
print(xy)
>>>(21.117950463936296, 52.34259370344425)
Nie ma potrzeby robienia transformacji (przetłumaczenia) po swojej stronie. Wystarczy dodać do zapytania parametr &srid=4326, wówczas odpowiedź usługi będzie zawierała współrzędne w EPSG:4326.
Pr`zykład:
https://services.gugik.gov.pl/uug/?request=GetAddress&address=Marki,%20Andersa%201&srid=4326
Hej
Link bezpośredni do danych waży ok 900 MB – trochę mu się urosło od ostatniej aktualizacji tego postu
I nie zapominajmy o naszej darmowej usłudze geokodowania (wolna bo wolna ale działa):
https://services.gugik.gov.pl/uug/
Pzdr
Zaktualizowane! Dzięki!
Super sprawa. Szkoda że nie posłuży jako autocomplete dla miast. Bo zwraca tylko dane dla całej nazwy miasta. Nie ma tu wyszukiwania po części nazwy. Czyli np. “w” => “warszawa, wrocław, w…”
No niestety. Geokodowanie z GUGiK jest jakie jest… Niestety napisanie geokodera (i utrzymanie go) to wcale nie jest taka prosta sprawa. Zrobiliśmy to dwa razy i nie są to doskonałe narzędzia 🙂