Kody pocztowe w OSM

Hej!

W związku z pracami nad wyszukiwarką adresów, przyglądam się też powoli kwestiom kompletności i walidacji kodów pocztowych. Niedługo do niektórych place=city (gł. tych większych) będę dodawał tag multi_postcode_city=yes, który będzie rozgraniczał miasta w których obowiązuje więcej niż jeden kod pocztowy - bardzo proszę o niekasowanie tego :). Będzie z tego tagu korzystał walidator.

Pozostaje kwestia uzgodnienia standardów tagowania kodów pocztowych - wg wiki kod pocztowy może być przypisany do punktu albo polygonu. Polygony u nas się nie sprawdzają, bo kody pocztowe nie są przypisane do obszaru jak np. w UK tylko:

  • całego miasta
  • ulicy
  • fragmentu ulicy (np. zakresu numeracji domów).

Z tego co widzę po danych OSM u nas, sporo osób przypisuje addr:postcode do ulic, co (wg. tagwatch jest całkiem popularne globalnie)

W związku z tym chciałbym rozpocząć dyskusję jak ustandaryzować tagowanie kodów pocztowych w Polsce dla miast w których obowiązuje więcej niż jeden kod (chyba 25 największych miast w PL ma tak):

— scenariusz 1 ----

  • w momencie, gdy jedna ulica ma kilka numerów kodów (np. Zielna numery parzyste ma kod 11-111 a Zielna numery nieparzyste ma 22-222) - wtedy każdy housenumber musi mieć przypisany kod pocztowy
  • w momencie, gdy cała ulica ma przypisany jeden kod pocztowy, dodać ten kod do ulicy)

— scenariusz 2 ----

  • w miastach z obowiązującym więcej niż jednym kodem pocztowym, każdy punkt adresowy musi mieć przypisany addr:postode

Miasta z jednym kodem pocztowym mają po staremu addr:postcode przypisany do place=*

Co Wy na to? Scenariusz 2 chyba łatwiej upilnować i może być kompatybilny z większą ilością oprogramowania.

Według mnie, scenariusz 2 byłby najbardziej optymalnym rozwiązaniem.

IMO scenariusz nr 2.

ok, to czekamy na resztę komentarzy - a w międzyczasie mam pewną koncepcję :). Mianowicie uzupełnianie addr:postcode w punktach adresowych to będzie mordęga. Na podstawie danych o kodach pocztowych można by stworzyć reguły przypisujące kody do adresów oraz jakimś skryptem raz na jakiś czas uzupełniać brakujące. Np. mając w jakimś sensownym formacie zapisaną informację, że w mieście X, ulica Kościuszki, numery od 40 do 118 mają kod pocztowy 22-222 - cyklicznie można by te dane kontrolować i nanosić z automatu.

Dodałem do mrówek miejscowości, które nie posiadają tagu addr:postcode. Jest tego 99 tysięcy, tak więc jest co robić :wink:

Obawiam się, że to nie jest dobry pomysł, ponieważ częste są sytuacje, że niektóre miejscowości posiadają kilka kodów pocztowych i mapowicze zaraz zaczną pchać na siłę te kody (zapewne również i błędne) tylko po to, by mrówka zniknęła.

W związku z powyższym uważam, że kody powinny być na każdym adresie, a na węźle miejscowości tylko wtedy, gdy w obrębie całej miejscowości jest jeden kod pocztowy.

Kolejna rzecz, że zieleń zaciemniła obraz :slight_smile:

Ogólnie nie podoba mi się ta koncepcja w obecnej formie…

Z tego co pisał rogal, dla tych miejscowości dodany jest tag “multi_postcode_city”. I takie też miejscowości nie pojawią się na mrówkach.

Ale dodany już jest teraz? W sensie, że do miejscowości jest dodany? A na podstawie czego on został dodany?

Jest dodany do 20 miejscowości, a o podstawę musisz pytać rogala :slight_smile:
Swoją drogą część z nich posiada tag “addr:postcode”, co raczej jest błędem:

Zielona Góra | 65-001
Poznań | 60-001
Wrocław | 50-001
Opole | 45-001
Gdynia | 81-000
Gdańsk | 80-008
Katowice | 40-001
Częstochowa | 42-200
Łódź | 90-001
Radom | 26-600
Białystok | 15-000
Kraków | 30-001

Jeśli już koniecznie chcecie mieć te mrówki, proponuję ograniczyć mrówki typu postcode tylko do place=village. To i tak nie jest idealne rozwiązanie, ale skala szkód będzie mniejsza.

Mogę ograniczyć je do ‘village’, ale nie bardzo rozumiem o jakie szkody chodzi, możesz rozwinąć?

O takie:

W miastach i miasteczkach adresy w obrębie jednej miejscowości występują różne kody pocztowe. I nie wierzę, że rogal dodał do wszystkich takich miejscowości tag “multi_postcode_city” (BTW to bardziej poprawnie powinno być “multi_postcode_place=yes”).

Możesz wskazać konkretny przykład? Bo na wikipedii wskazanych jest te 20 miast, dla których są różne kody pocztowe. W pozostałych każdy adres raczej ma ten sam kod pocztowy.

Poważnie, tak mało? Coś mi się wierzyć nie chce, bo moje doświadczenie z importów adresów mówi co innego… niestety, w tym momencie nie przypomnę sobie konkretnych miejscowości, bo za dużo tego było.

Mnie też to zdziwiło. Możesz sobie popatrzeć na niekoszerną mapę pod http://mapa-kodow-pocztowych.pl/ gdzie widać, że tylko największe miasta są pociachane.

Zbigniew mówi prawdopodobnie o takich przypadkach jak np. w Iławie gdzie całe miasto teoretycznie ma kod 14-200. Ale kod ten jest rozkładany na podkody które ułatwiają pracę pocztowcom. I mamy coś takiego:

14-200; Poczta Iława 001, ul. Jagiellończyka 1; Iława; Województwo warmińsko-mazurskie; Powiat iławski
14-200; Skrytki Pocztowe Poczta Iława 001, ul. Jagiellończyka 1; Iława; Województwo warmińsko-mazurskie; Powiat iławski
14-202; Poczta Iława 003, ul. Okulickiego 1; Iława; Województwo warmińsko-mazurskie; Powiat iławski
14-202; Skrytki Pocztowe Poczta Iława 003, ul. Okulickiego 1; Iława; Województwo warmińsko-mazurskie; Powiat iławski
14-210; Poczta Iława 002, ul. Dworcowa 2; Iława; Województwo warmińsko-mazurskie; Powiat iławski

Polecam link:

http://pl.wikisource.org/wiki/Lista_kod%C3%B3w_pocztowych_w_Polsce

W Iławie rzeczywiście występują 2 kody pocztowe dla adresów, ciekawe.
Skoro mamy jeszcze osobne kody dla skrytek pocztowych i instytucji, to może kod pocztowy bez wyjątku powinien być przypisany do punktu adresowego, a nie do miejscowości?

Jak wygląda w praktyce wykorzystanie kodów instytucji? Np. całe miasto to kod 12-345 i tylko jeden budynek (adres) w nim to 12-456? W takiej sytuacji może po prostu przypisać 12-345 dla miasta i 12-456 dla tego jednego budynku?

Czy skrytka pocztowa (jako adres) w ogóle jest „fizycznym”, mapowalnym obiektem czy raczej funkcjonuje tylko „wirtualnie”?

Aktualny spis kodów, łącznie z instytucjami, jest tutaj:
https://www.poczta-polska.pl/hermes/uploads/2013/11/spispna.pdf

już mówię jak to wygląda :). Miast w których dla adresów doręczeń jest więcej niż jeden kod pocztowy jest rzeczywiście około 20 - otagowałem je bazując na wikipedii. W tych miastach każda ulica albo zakres numerów domów może mieć inny pod pocztowy. Stąd nie powinny być uwzględniane w walidacji ogólnej.

Pozostałe miasta mają jeden kod pocztowy dla doręczeń - te o których wspominacie na przykładzie Iławy to są kody technicznie przypisane do konkretnego urzędu pocztowego (a nie dla doręczeń “na mieście”). Dodatkowo w większych miastach osobny kod pocztowy może mieć np. firma lub instytucja - np. własny kod ma TVP, trochę takich kodów jest.

Koncepcja jest taka - każde miasto, które ma jeden kod pocztowy, ma go wpisany w punkcie place=*. Dzięki temu cyklicznie będzie można dla każdego punktu adresowego przypisywać skryptem kod pocztowy “odziedziczony” po mieście w którym się znajduje. Dodatkowo można wyłapać błędy w których jakiś numer domu ma przypisany kod pocztowy inny niż wynikający z tego przypisanego dla miasta. Oczywiście wspomniane już wyjątki rozwiązuje się w bardzo prosty sposób - dodając indywidualnie addr:postcode + jakiś własny tag, który powie walidatorowi, żeby akurat tego nie uznawał za błąd.

Proste i eleganckie :slight_smile:

Mogę zrobić import, pozostaje kwestia źródła danych - PDF z poczty polskiej jawnie zabrania przetwarzania dokumentu, ale np. na wikisource leży podobna baza danych, tak samo na mojepanstwo.pl (nawet API maja i chwalą się, że dane są otwarte). Dodatkowo z wielu stron różnych firm (np. banków) można ściągnąć dokument Excela ze wszystkimi kodami pocztowymi (bez jakiejkolwiek atrybucji lub danych o licencji).

//edit: czy zielone punkty na mapie mogą mieć ustawioną jakąś przeźroczystość? Może warto dać z 40-50%, żeby nie przytłaczały bardziej krytycznych błędów?