Często przy projektowaniu jakiejś struktury danych, tabelki bazodanowej czy też formatki trzeba podejmować decyzje dotyczące rozmiaru kolumny czy pola. Podobnie przy tworzeniu reguł walidacyjnych. Niektóre rodzaje danych zawsze w takiej sytuacji sprawiają mi problemy. Postanowiłem zrobić malutkie śledztwo, by przynajmniej nie mieć tych problemów z danymi adresowymi.
UWAGA: na końcu wpisu umieściłem link do artykułu w którym umieściłem analizę opartą o aktualniejsze dane (wiosna 2016).
Na szczęście, podatki moje i innych obywateli utrzymują Główny Urząd Statystyczny. Ten szacowny urząd, oprócz planowania kolejnego spisu powszechnego w przyszłym roku, zajmuje się również (między innymi oczywiście) utrzymaniem Krajowego Rejestru Urzędowego Podziału Terytorialnego Kraju (TERYT). W skład tego rejestru wchodzą tzw. systemy, między innymi ULIC i SIMC.
ULIC to centralny katalog ulic a SIMC to katalog identyfikatorów i nazw miejscowości. Aktualne pliki z wykazem wszystkich ulic i miejscowości w Polsce można pobrać stąd. Pobrałem dane miejscowości (aktualizowane 20 kwietnia 2010 roku) oraz dane ulic (aktualizowane 17 czerwca 2010 roku, czyli zaledwie kilka dni temu) i przystąpiłem do mojego badania.
Miejscowości
W pliku z katalogiem miejscowości znalazłem 103.175 rekordów. Poniżej lista jednostek o najdłuższej nazwie (numery w pierwszej kolumnie to liczba znaków w nazwie miejscowości):
28 Stefanów Barczewski Pierwszy 29 Depułtycze Królewskie-Kolonia 29 Dobrowoda Poduchowna Pierwsza 29 Dworszowice Kościelne-Kolonia 29 Niedrzwica Kościelna Pierwsza 29 Stara Słupia-Kolonia Pierwsza 29 Stobiecko Szlacheckie-Kolonia 29 Warmątowice Sienkiewiczowskie 29 Wzgórze Świętego Maksymiliana 30 Kolonia Wierzchowiska Pierwsze 30 Kolonie Jastrzębiańskie Drugie 30 Kościerzyna-Stare Nadleśnictwo 30 Leśniczówka Skarżysko Książęce 30 Niewodnica Nargilewska-Kolonia 30 Przedmieście Szczebrzeszyńskie 30 Sobienie Kiełczewskie Pierwsze 30 Wybudowanie Skarszewy Pierwsze 31 Krakowskie Przedmieście-Kolonia 31 Kuźnica Czarnkowska-Wybudowanie 31 Leśniczówka Skarżysko Kościelne
Miejscowością o najkrótszej nazwie w Polsce jest Oś - jedyna z dwuliterową nazwą. Za nią jest cała masa trzyliterowych - samych miejscowości o nazwie Bór jest 43.
Ulice
Z kolei ulic jest w GUSowskiej bazie danych zarejestrowanych 232.439. Jedną z cech ulicy jest coś co GUS postanowił nazwać, hmmm... CECHĄ - jest to pole określające typ rekordu. Wartościami są tam, oprócz tych oczywistych, również pozycje takie jak na przykład skwer, rondo czy też park oraz nieco zaskakujące jak ogród, bulw. czyli pewnie bulwar i wyspa. Wydaje się prawdopodobne, że te jednostki również mogą występować w adresach czy też na mapach (po co inaczej byłyby w rejestrze), więc wypada brać je pod uwagę.
Oto kilka ulic (lub innych jednostek z tego systemu) o najdłuższych nazwach w Polsce (numery w pierwszej kolumnie to liczba znaków w nazwie ulicy):
46 Bulwary Miast Partnerskich-Bulwar Loughborough 46 Generała Michała Karaszewicza - Tokarzewskiego 46 Podpułkownika Stanisława Sowiźrała-Sobolewicza 46 por. Bronisława Skury-Skoczyńskiego"Robotnika" 46 Tadeusza Marii Barbary Włodzimierza Fijewskich 47 bł. ks. phm. Stefana Wincentego Frelichowskiego 47 Szkolny Park Sportowy im. Janusza Kusocińskiego 48 Aleja 28 Słupskiego Pułku Lotnictwa Myśliwskiego 48 III Łużyckiej Dywizji Artylerii Przeciwlotniczej 48 Przyjaciół Wielkiej Orkiestry Świątecznej Pomocy 49 Bulwary Miast Partnerskich-Bulwar Schwäbisch Hall 50 im. Roberta Baden-Powella Naczelnego Skauta Świata 50 Most 18 Bielskiego Batalionu Desantowo-Szturmowego 50 Samodzielnego Dywizjonu Artylerii Przeciwlotniczej 52 Węzeł Łagiewnicki im. ks.kard. Adama Stefana Sapiehy 53 Most im. Karola Olszewskiego i Zygmunta Wróblewskiego 53 Rynek Stefana Kardynała Wyszyńskiego - Prymasa Polski 60 Organizacji Młodzieży Towarzystwa Uniwersytetów Robotniczych 64 Skwer Niezależnego Samorządnego Związku Zawodowego "Solidarność" 73 Park Zdrojowy im. Hrabiego Witolda Skórzewskiego w Konstancinie-Jeziornie 74 Rondo Kombatantów Rzeczypospolitej Polskiej i Byłych Więźniów Politycznych
Wszystkie pozostałe ulice/jednostki z tego rejestru, mają nazwę o długości nie większej niż 45 znaków. Najkrótsze nazwy ulic mają 3 znaki. Są jeszcze jedno, dwu lub trzyznakowe nazwy, które wydają się nie mieć sensu (np. V czy C11). Przypuszczam że są to jakieś tymczasowe oznaczenia ulic, które już istnieją, ale jeszcze nie nadano im nazw.
Reguły walidacyjne
Można użyć danych udostępnianych przez GUS jako podstawy do zbudowania swoich słowników. Albo skorzystać z nich (poglądowo) przy budowaniu własnych reguł walidacyjnych. Warto zauważyć, że w nazwach miejscowości występują następujące znaki:
- '
A-Z a-z
' – literki alfabetu łacińskiego, - '
ęóąśłżźćń ĘÓĄŚŁŻŹĆŃ
' – literki z polskimi znakami diakrytycznymi, - '
-
' – łącznik (dywiz), - '
.
' – kropka, - '
- '
"
' – cudzysłów.
Zestaw znaków używanych w nazwach ulic jest nieco szerszy, bo oprócz powyższych występują tam również:
- '
0-9
– cyfry, - '
,
' – przecinek (w 2 nazwach), - '
/
' – ukośnik (w nazwie jednej ulicy - trochę dziwne), - '
'
' – apostrof, - '
( )
' – nawiasy okrągłe (również nie rozumiem po co), - '
á ä č é ë ö ő ü ž
' – znaki diakrytyczne z obcych alfabetów.
Pomyślałem, że może komuś się przydadzą nazwy miejscowości i ulic wyciągnięte z XMLi GUSowych więc umieszczę je w pobieralni.
Fajnie byłoby mieć jeszcze dostęp do PESELa albo innej bazki danych by pobawić się w podobne statystyki dotyczące imion i nazwisk. Ech, fajnie by było :-).
AKTUALIZACJA (2016-04-07): zgodnie z sugestią czytelnika w komentarzach, do znaków występujących w nazwach ulic dodano cyfry. Dzięki :-D.
AKTUALIZACJA (2016-04-08): - we wpisie wspominam o nazwach miejscowości i ulic według aktualnych danych GUSowskich (wiosna 2016).
Co do nazwy ulic dodałbym
Co do nazwy ulic dodałbym jeszcze cyfry 0-9.
RE: Co do nazwy ulic dodałbym...
Słusznie. Dodane - dzięki.
Dzięki
Za malutkie śledztwo.
Re: Dzięki
Nie za ma co :-)
Długości nazw
Długość nazwy nieważne czego, tutaj jest akurat o ulicach nie do końca jest miarodajnym wyznacznikiem długości jako takiej w kontekście ilości miejsca w różnego rodzaju formularzach, a ponieważ najczęściej używamy czcionek proporcjonalnych (Arial, Time New Roman, Tahoma, Verdena itp.)więc kerning jaki występuje w systemie "dosuwa" znaki do siebie jeżeli są wąskie np. i, l lub "rozsuwa" jak są szerokie np. w, m tym samym trudno jest przewidzieć ile znaków znajdzie się w danym polu, bo zależy to od znaków jakich się użyje.
Piszę o tym bo testuję różne rodzaje formularzy do wypełnienia i próbuję przewidzieć ilości miejsc dla różnego rodzaju danych (imię, nazwisko, ulica, miejscowość, województwo, itp.). Nie chcąc marnować zbyt dużo miejsca, gdyż większość nazw ma ograniczoną długość, ale może się trafić jakaś o znacznej długości i wtedy, albo obetnie ją, a gdy zastosuję "Dostosuj", czy "Zmniejsz, aby dopasować" to może się okazać, że czcionka będzie tak małą, że trudno będzie ją odczytać jeśli określone pole rekordu będzie zbyt wąskie.
Pozdrawiam kursant
Re: Długości nazw
Owszem w formularzach i ogólnie przy wykonywaniu/projektowaniu interfejsów użytkownika, mogę się zgodzić że długość "nie do końca jest miarodajnym wyznacznikiem". Ja bym się jednak tym nie przejmował, nawet jeśli chodzi o czcionki proporcjonalne. Na przykład przed chwilą zrobiłem mały eksperyment: napisałem sobie w HTMLu
<input>a
, którego rozmiar ustawiłem na 10 (co znaczy coś około 10 znaków). Nie będę już sprawdzał jak zachowują się tu inne przeglądarki, ale Firefox wyświetla inputa takiego w którego mieści się bez problemu 10 literowy wyraz (nawet jak piszę wielkimi literami to zmieszczą się niektóre 11sto a nawet 12sto literowe). Za to gdy wstawiam same literki W to ich mieści się tylko 8. Nie jest to problem, bo po pierwsze te 2 się przesuną wewnątrz inputa a poza tym w naturze nie występują wyrazy składające się z samych wielkich literek W i M.Poza tym uzbrojeni w taką wiedzę możemy zastosować statystykę. Jeśli projektujemy tabelkę bazodanową, to musimy uwzględnić każdy możliwy przypadek, żeby każda możliwa nazwa ulicy zmieściła się do kolumny. Ale jeśli robimy formularz to pewnie bez problemu możemy się pogodzić z tym, że około 1,5% nazw ulic nie będzie się mieściło w inpucie jeśli jego długość ustawi się na 35 znaków (tzn. będzie się mieścić bo da się wpisać całą nazwę, ale nie będzie jej całej widać bo część liter się przesunie). To jednak duża różnica w porównaniu do 74, prawda? :-D
Również pozdrawiam,
alcik.