Granice administracyjne - ujednolicenie

Według wikipedii w Polsce jest 913 miast.
http://stat.gov.pl/obszary-tematyczne/inne-opracowania/miasta-wojewodztwa/miasta-w-liczbach-2012,3,7.html
Za pomocą josm wyciągnałem 925 relacji, albo ja coś zrobiłem nie tak, albo mamy “nadmiar”. Jednak pokazuje, że nie jest tak źle jak na rysunku wygląda.

W Niemczech admin_level=8 do gminy, przykład:
https://www.openstreetmap.org/relation/1334079
https://pl.wikipedia.org/wiki/Nordwestuckermark

Z GUS:

Faktycznie sołectwa (następna po gminie jednostka podziału kraju) mają admin_level=10, czyli mniej niż dzielnica miasta. Jest też takie pojęcie jak obręb ewidencyjny http://pl.wikipedia.org/wiki/Obr%C4%99b_ewidencyjny , który dla gminy wiejskiej powinien się pokrywać z sołectwem a w mieście własnie z dzielnicą. Przydałby się więc dla nich jeden tag, proponuję admin_level=9.

Jeśli chodzi o admin_level=8 to może dorzucić do niego granicę gmin, czyli aktualne admin_level=7? Będzie spójność z większością Europy.

Ale jaki jest sens zmieniania tego? Polecam zajrzeć na początek wątku ile było dyskusji i pracy włożonej w wypracowanie obecnego standardu. Przypominam, że podział administracyjny w OSM służy głównie poprawności wyszukiwania adresów oraz rozróżniania regionów, miast, wsi i dzielnic.
Wypracowany schemat jest uniwersalny o tyle, że twórcom Nominatima ani wszelakich nawigacji nie trzeba robić specjalistycznych szkoleń czym się u nas różni gmina wiejska od miejsko-wiejskiej.

I to jest celem nadrzędnym, a nie to, że komuś na wizualizacji wyświetla się biała plama.

Maksymalny admin_level obsługiwany przez Nominatim to 10 i oznacza on dzielnice właśnie. Wszystko powyżej 10 powoduje problemy z adresami. Na przykład wioski obok miast są traktowane jako dzielnice tego miasta i zwracane jest złe rozbicie adresu przez API. Jakiś czas temu próbowałem dostosować Nominatim do polskich standardów, niestety potrzebne zmiany były zbyt głębokie i zrezygnowałem. Obeszliśmy to w oprogramowaniu korzystającym w Nominatim zamiast poprawić Nominatim.

Ale może jakiś przykład? Bo jak na razie te przykłady, które podsuwał przemek2906 dawały się ogarnąć przez uściślenie tagowania.
Poza tym co proponujesz, bo nie wyłapałem z Twojej wypowiedzi?

http://nominatim.openstreetmap.org/search.php?q=grzybowo%2C+ko%C5%82obrzeg&viewbox=15.49%2C54.17%2C15.51%2C54.15
Grzybowo, Stary Borek, gmina Kołobrzeg, powiat kołobrzeski, województwo zachodniopomorskie, Polska (Suburb)

A tutaj z rozbiciem adresu w xml:
http://nominatim.openstreetmap.org/search.php?q=grzybowo%2C+ko%C5%82obrzeg&viewbox=15.49%2C54.17%2C15.51%2C54.15&format=xml&addressdetails=1

<suburb>Grzybowo</suburb>
<village>Stary Borek</village>
<county>gmina Kołobrzeg</county>
<state>województwo zachodniopomorskie</state>
<country>Polska</country>
<country_code>pl</country_code>

Miejscowość Grzybowo rozpoznaje jako dzielnice w Stary Borek (prawdopodobnie dociągnęło dzielnice do najbliższej miejscowości oznaczonej punktem, nie sprawdzałem). Mamy takich przypadków wiele z tego względu odpowiednio się do takich wyników dostosowaliśmy. Niestety wprowadza to w błąd wszystkich szukających tam adresów i nie znających tego problemu.

Stwierdzałem fakt, bez propozycji. Jakbym miał coś proponować to zmianę admin_level w taki sposób żeby Nominatim był w stanie je rozpoznać. Z rozmowy z programistami Nominatim jednoznacznie otrzymałem odpowiedź, że oni dostosowali się do większości państw gdzie admin_level=10 to dzielnica i wyższych (niższych jednostek podziału) nie biorą pod uwagę. Nie są też w stanie dla Polski tego zmienić, admin_level jest hardcoded (żeby było ciekawiej to nie dałem rady znaleźć wszystkich miejsc w kodzie gdzie tak jest, dlatego zrezygnowałem z modyfikacji).

No nie wiem, na globalnym wiki jest trochę krajów gdzie level 10 to są wsie. U nas dzielnica miasta to jest level 9, celowo przyjęta tak, aby uprościć (o ironio :P) algorytmiczne przypisywanie granic i pomijanie dzielnic wtedy kiedy ich nie chce się uwzględniać w wyszukiwaniu. W wiki rzeczywiście jest level 11 jako ‘neighbourhood’, ale IMHO i tak większą przydatność mają ‘prawdziwe’ dzielnice, czyli level 9. Konkludując: w polskich warunkach limit 10 poziomów nie powinien być problemem.

Moim zdaniem jest to kolejny przykład oprogramowania pisanego przez ludzi, których horyzonty kończą się na granicy własnego kraju. Nie wiem też jaki algorytm jest w stanie przyjąć, że jedna wieś (Grzybowo) może być dzielnicą innej wsi (Stary Borek).

Z tego co wiem, to ktoś od nas kiedyś dostosowywał Nominatima (chyba na produkcję nie weszło) do polskich standardów i działało dobrze - może autor się wypowie :).

No właśnie admin_level=10 powoduje to, że Grzybowo jest traktowane jako dzielnica. Oni łączą relacje granicy administracyjnej z punktem ale tylko wtedy kiedy się zgadzają ich przyjęty dla danego place admin_level z tym z granicy.

Może mówisz o tym:
http://forum.openstreetmap.org/viewtopic.php?id=24288
https://github.com/twain47/Nominatim/issues/101
Niestety nie działało to jak trzeba. Kod jest rozrzucony w wielu miejscach i poprawka, która była zrobiona poprawiła tylko wyniki na stronie, natomiast w odpowiedziach API (xml/json) i rozbiciu adresu, dalej były problemy. Dlatego dostosowaliśmy oprogramowanie zewnętrzne a Nominatim został jak był.

Jeśli jednak nie o tym mowa i ktoś kiedyś zajmował się podobnym projektem chętnie połączę siły.

A jakie są argumenty przeciw, żeby granice miejscowości tagować jako admin_level=8?

Dla mnie możemy to wszystko przeanalizować jeszcze raz. Dla mnie podział jest prosty.

Państwo
Województwo
Powiat
Gmina
Miejscowość (miasto lub wieś)
Dzielnica
Osiedle

A dlaczego połączyłeś miasto lub wieś?

+1 Zbigniew.

Gwoli przypomnienia: granice miejscowości prawie wszędzie taguje się jako admin_level=8
Mając ogólną strukturę łatwiej pisać soft unikający wyjątków czy rozwiązań tylko dla jednego kraju.
Co do innych admin level to aż tak bardzo nie boli jak właśnie level=8

Za to na jakich prawach jest miescowość (miasto/wieś) może odpowiadać inny tag. To też będzie w nominatim przeszkadzać?

ja problemu nie widzę, warto by było tylko się zastanowić co zrobić ze sołectwami. O ile pamiętam sołectwo zarówno może ‘zbierać’ kilka wsi jak i być częścią miasta. Chyba, że darujemy sobie takiego potworka, bo z punktu widzenia użyteczności wyszukiwania adresów nie ma on znaczenia, a jak będzie potrzebny to da się admin_level > 10.

Czy po klepnięciu zmian ktoś byłby w stanie hurtem pozmieniać wsie i dzielnice?

Nominatim po tagu place rozróżnia rodzaje miejscowości.
Tak dokładnie to łączy relacje granicy admin_level=8 z tagiem place punktu centralnego relacji (tak jak teraz jest to w miastach w Polsce).
Proponowałbym wprowadzić zmiany na Grzybowie i jeżeli wszystko będzie ok dopiero robić hurtem w całej Polsce.

Ja mogę pozmieniać, gdy już ustalimy - to nie jest problem.
Sołectwa proponuję pominąć, bo tak jak rogal pisze - różne to są potworki i zupełnie nam zbyteczne. Jeśli ktoś bardzo będzie chciał to sobie wykorzysta admin_level>=10
Pytanie tylko jak oznaczyć te granice miejscowości, które są miastami? Dodać do relacji place=town/city? Czy może nic nie dodawać?

IMHO jeżeli ktoś będzie potrzebował tych danych to wyciągnie sobie z relacji punkt place=* przypisany do relacji. Wyczytałem, że w strukturze teryt/simc jest gdzieś zdefiniowany rodzaj miejscowości. Może tego używać? Załatwi nam to i wsie i miasta za jednym razem.

Cały problem powstał bo ktoś powiedział, że sołectwa mogą powodować konflikt nazw ulic. Ja osobiście się nie spotkałem, aby miejscowość miała 2 takie same nazwy ulic. Myślę, że jeśli ktoś czuje potrzebę mapowania sołectw to można spokojnie użyć innego sposobu. Np. relacji kolekcjonującej osiedla/wsie.

Jesli jest relacja, to nominatim zdaje się sam tworzy punkt centralny. Nie ma więc potrzeby place jeśli już jest relacja granicy.
Z drugiej strony, ludzie ciągle dają te place “bo im się nazwa nie wyświetla” (ale to już nie jest problem około nominatowy).