przyglądam się temu skryptowi i widzę, że nie uwzględnia on gminy. mam u siebie kilka miejscowości, które w mazowieckim się powtarzają. skrypt wyszukując po id miejscowości bierze pierwszy i zwraca to do merge. jak wiadomo miejscowości są w różnych gminach. można by regexpować wraz z nazwą gminy i wówczas znajdywać w bazie teryt. np. miejscowość Kąty, powiat sochaczewski, gm. sochaczew. Jak w adresie wpiszę samą nazwę Kąty, to owszem, zgodzę się, że złapie pierwsze lepsze id i wypluwa; location_city = 1689 mysql> SELECT * FROM `lms`.`location_cities` WHERE `id` = 1689; +------+--------+-------+--------+-----------+ | id | ident | name | cityid | boroughid | +------+--------+-------+--------+-----------+ | 1689 | 121519 | Kąty | NULL | 19 | +------+--------+-------+--------+-----------+ 1 row in set (0.00 sec
czyli mamy gminę:
mysql> SELECT * FROM location_boroughs WHERE id = 19; +----+-------------------+-------+------------+------+ | id | name | ident | districtid | type | +----+-------------------+-------+------------+------+ | 19 | Opinogóra Górna | 7 | 2 | 2 | +----+----------------
i województwo:
mysql> SELECT * FROM location_districts WHERE id = 2; +----+--------------+-------+---------+ | id | name | ident | stateid | +----+--------------+-------+---------+ | 2 | ciechanowski | 2 | 1 | +----+--------------+-------+---------+
czyli w wyniku mamy nie zamierzony efekt. próbowałem wpisywać: "gm.sochaczew, Kąty 10" ale to nic nie daje. gm wywala i łapie samo kąty. można by zmienić zapytanie i regexpa żeby w takich ewentualnościach łapał również gminę. np. gm.sochaczew, Kąty 10 powinno zwrócić location_city = 11780 czyli podążając za id, się zgadza. problem w tym, że wybierałem to ręcznie.
da się to zrobić? bo ja nie za bardzo wiem jak to poprawić :(
W dniu 19.03.2012 20:40, Marcin napisał(a):
przyglądam się temu skryptowi i widzę, że nie uwzględnia on gminy. mam u siebie kilka miejscowości, które w mazowieckim się powtarzają. skrypt wyszukując po id miejscowości bierze pierwszy i zwraca to do merge. jak wiadomo miejscowości są w różnych gminach. można by regexpować wraz z nazwą gminy i wówczas znajdywać w bazie teryt. np. miejscowość Kąty, powiat sochaczewski, gm. sochaczew. Jak w adresie wpiszę samą nazwę Kąty, to owszem, zgodzę się, że złapie pierwsze lepsze id i wypluwa; location_city = 1689 mysql> SELECT * FROM `lms`.`location_cities` WHERE `id` = 1689; +------+--------+-------+--------+-----------+ | id | ident | name | cityid | boroughid | +------+--------+-------+--------+-----------+ | 1689 | 121519 | Kąty | NULL | 19 | +------+--------+-------+--------+-----------+ 1 row in set (0.00 sec
Tzn. że jak masz w jednym województwie kilka miejscowości o tej samej nazwie to do nazwy miejscowości dopisujesz gminę? O to Ci chodzi. Chcesz, żeby skrypt lms-teryt przy -m uwzględniał nazwę gminy przy miejscowości, tak?
W dniu 19 marca 2012 23:03 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
Tzn. że jak masz w jednym województwie kilka miejscowości o tej samej nazwie to do nazwy miejscowości dopisujesz gminę? O to Ci chodzi. Chcesz, żeby skrypt lms-teryt przy -m uwzględniał nazwę gminy przy miejscowości, tak?
tak, dokładnie o to chodzi
W dniu 19.03.2012 23:10, Marcin napisał(a):
W dniu 19 marca 2012 23:03 użytkownik Tomasz Chiliński <tomasz.chilinski@chilan.com [1]> napisał:
Tzn. że jak masz w jednym województwie kilka miejscowości o tej samej nazwie to do nazwy miejscowości dopisujesz gminę? O to Ci chodzi. Chcesz, żeby skrypt lms-teryt przy -m uwzględniał nazwę gminy przy miejscowości, tak?
tak, dokładnie o to chodzi
Może niech wszyscy się wypowiedzą w jakiej to postaci zwykle wpisują.
W dniu 19 marca 2012 23:17 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
Może niech wszyscy się wypowiedzą w jakiej to postaci zwykle wpisują.
biorąc pod uwagę teryta to ta baza po części wymusza na nas jakiś standard.
IMHO zapis od największego do najmniejszego jest jak najbardziej dobry, czyli: województwo, powiat, gmina,miasto, ulica. Mało prawdopodobne by w jednym województwie były dwa powiaty o takiej samej nazwie jak i w powiecie dwie gminy. zapis ten możemy więc skrócić do: gmina, miejscowośc, ulica ale idąc dalej małe miasteczka, można powiedzieć wsie nie mają ulic. z ulicami już są ujęte jako miejscowości. czyli skracając dalej: gmina, miejscowość zapis: "gm.Karolczew duży, Wylot 13" ale to IMHO :)
zacząłem nawet coś w perlu przerabiać, ale nie mogę sklecić prawidłowego zapytania mysql żeby uwzględnić wszystkie warunki :(
W dniu 19.03.2012 23:26, Marcin napisał(a):
W dniu 19 marca 2012 23:17 użytkownik Tomasz Chiliński <tomasz.chilinski@chilan.com [1]> napisał:
Może niech wszyscy się wypowiedzą w jakiej to postaci zwykle wpisują.
biorąc pod uwagę teryta to ta baza po części wymusza na nas jakiś standard.
IMHO zapis od największego do najmniejszego jest jak najbardziej dobry, czyli: województwo, powiat, gmina,miasto, ulica. Mało prawdopodobne by w jednym województwie były dwa powiaty o takiej samej nazwie jak i w powiecie dwie gminy. zapis ten możemy więc skrócić do: gmina, miejscowośc, ulica ale idąc dalej małe miasteczka, można powiedzieć wsie nie mają ulic. z ulicami już są ujęte jako miejscowości. czyli skracając dalej: gmina, miejscowość zapis: "gm.Karolczew duży, Wylot 13" ale to IMHO :)
zacząłem nawet coś w perlu przerabiać, ale nie mogę sklecić prawidłowego zapytania mysql żeby uwzględnić wszystkie warunki :(
Ale czy zwykle ludzie nie zapisują np.: Miejscowość, gm. Gmina, ul. Wylot 13 ?
W dniu 20 marca 2012 00:00 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
Ale czy zwykle ludzie nie zapisują np.: Miejscowość, gm. Gmina, ul. Wylot 13
może przyjmijmy tak jak jest w standardzie, gm. Gmina, Miejscowość, ul. Wylot 13 czyli od nawiększego do najmniejszego. to będzie najrozsądzniejsze rozwiązanie. chyba, żeby dodać opcję konfiguracyjjna, np. rule = powiat, gmina, miejscowosc, ulica i na podstawie tej zmiennej kod wypluwal dane.
na jednej z maszyn mam nastepujacy problem lms-teryt -m DBD::mysql::st execute failed: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' at /usr/sbin/lms-teryt line 659. DBD::mysql::st execute failed: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' at /usr/sbin/lms-teryt line 659. czy ktos wie co jest nie tak
uczestnicy (3)
-
jlc@tlen.pl
-
Marcin
-
Tomasz Chiliński