Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Odległości miejscowości
TomASS
post 18.10.2004, 20:12:42
Post #1





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


Wtiam serdecznie

Szukam rozwiązania, algorytmu, propozycji wykonania w php + MySQL skrytpu do obliczania odległości (w linii prostej, bądź "drogowej") pomiędzy jakimiś miejscowościami w Polsce. Najwygodniejsze do użucia byłyby na pewno kody pocztowe - aby jednoznacznie określić o którą miejscowość nam chodzi, a dodatkowo określa nam nawet dzielnicę dużego miasta. I teraz. Prawdopodobnie zrobienie bazy typu

kod każdej miejscowości - kod każdej miejscowości i przypisanie do tego odległości nie wchodzi w grę (99 999 kodów * 99 998 = ok 1e10 możliwości).


Sprawa jeszcze bardziej komplikuje się, gdy mamy np. 3, 4, 5 nie mówiąc już o więcej miejscowościach "przelotowych".

Wpadłem na pomysł aby każdą miejscowość opisać szerokością i długością geograficzną i na tej podstawie obliczać odległości. Ciekawe czy jest to gdzieś dostępne? - wsp. geograficzne

A może lepiej zrobić sobie układ współrzędnych x,y ze środkiem np. w lewym dolnym "rogu" Polski. I mając do dyspozycji 99 999 odległości (oczywiście po kodach pocztowych) z 3 różnych miejscowości (co daje nam 299 997 kodów) możemy policzyć współrzędne każdej innej miejscowości

A wy co proponujecie?

Pozdrawiam Wszystkich - małych i dużych smile.gif


--------------------
Go to the top of the page
+Quote Post
scanner
post 18.10.2004, 21:02:12
Post #2





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




A Google to wyłączyli?
http://www.google.com/search?hl=pl&q=wsp%C...olskich&spell=1
a wynika z tego
http://www.gugik.gov.pl/komisja/wydawnictwa.htm
Szczególnie 7 publikacja na liście.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
TomASS
post 18.10.2004, 21:28:29
Post #3





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


To podobnie jak opisywałem smile.gif

1. Skąd wziąść taką bazę danych
2. A co w przypadku kilku miescowości, skąd wiadomo, które trzeba po kolei wziąść? Np. ze Szczecina przez Warszawe do Krakowa, a nie że ze Szczecina do Warszawy przez Kraków?
3. Szukałem google i szukałem też w archiwum grupy

Pozdrawiam i dzięki


--------------------
Go to the top of the page
+Quote Post
Ive
post 18.10.2004, 22:05:29
Post #4





Grupa: Zarejestrowani
Postów: 352
Pomógł: 1
Dołączył: 17.07.2003
Skąd: Kazanów

Ostrzeżenie: (0%)
-----


popatrz sobie na strone http://www.pilot.pl i zobacz jak oni to rozwiazali ;]

Ten post edytował Ive 18.10.2004, 22:06:02
Go to the top of the page
+Quote Post
NuLL
post 18.10.2004, 23:39:46
Post #5





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

Ostrzeżenie: (0%)
-----


Czy szukanie jest takie trudne hmm - no - podejrzewam ze trzeba by zapisac odleglosci pomiedzy sasiednimi miastami w bazie a potem rekurencja ....


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
orson
post 19.10.2004, 13:07:26
Post #6





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

Ostrzeżenie: (0%)
-----


witam ...

widze 2 rozwiazania ... oba moga sprawic trudnosci w implementacji ...
1. wpisac kazde wieksze miasto do bazy i w kolumnach N S W E wpisac najblizsze miasto obok ... do wyznaczania drogi musialby byc napisany algorytm sprawdzajacy miasto po miescie ... nie mam pojecia jak bedzie z wydajnoscia takiego systemu ...

2. wpisac do bazy miasta wraz ze wsp. geograficznymi i sprawdzac "pasami" ... czyli z miasta A + n stopni w lewo i w prawo z gory nadol wszystkie miasta ktore sie mieszcza w tych granicach ...

jest jeszcze dodatek do mysql do zabaw z geometria [mozna obliczyc dlugosc odcinka przechodzacego przez dane typu piont - miasta] link:http://dev.mysql.com/doc/mysql/en/Geometry..._functions.html
tez moze zadzialac ...

pozdrawiam


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post
kszychu
post 19.10.2004, 13:16:19
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

Ostrzeżenie: (0%)
-----


Cytat(Ive @ 2004-10-18 22:05:29)
popatrz sobie na strone http://www.pilot.pl i zobacz jak oni to rozwiazali ;]

Nie radzę się wzorować. Tak naprawdę obliczanie odległości działa tylko w linii prostej a i to niedokładnie (wiem bo sam to pisałem).
Ale faktycznie najlepszym sposobem jest stworzenie bazy współrzędnych geograficznych wszystkich miast, przeliczenie tego na "płaski" układ współrzędnych (wzory są dość skomplikowane) i następnie przeliczenie różnicy położeń na odległość.
Te płaskie współrzędne też warto trzymać w bazie.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
scanner
post 19.10.2004, 13:24:14
Post #8





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




1. Zapisujesz w bazie punkty (miasta) wraz z ich wpólrzędnymi geograficznymi.
2. Zapisujesz odcinki drogi łączące sąsiednie miejscowości
3. Odległośc w linii prostej obliczasz tak jak podał lunter w pierwszym poście.
4. Odległość "prawie drogową" obliczasz szukając najkrótszej drogi w grafie. Szukać materiałów możesz nt. w tych wynikach Googli:
http://www.google.com/search?q=algorytm+po...-a&start=0&sa=N

Obliczasz sume dróg prowadzących do celu. Jełsi masz zaznaczone miasto przelotowe, liczysz : ( A -> przelot1 ) + ( przelot2 -> przelot2 ) + ... + (przelotN -> cool.gif = Xszukane
Nie ma ograniczeń w ilości przelotowych miast.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
TomASS
post 19.10.2004, 21:25:18
Post #9





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


Tylko skąd wziąść bazę danych z położeniami geograficznymi miejscowości??


--------------------
Go to the top of the page
+Quote Post
Maciej ZET
post 27.10.2004, 13:44:32
Post #10





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 27.10.2004

Ostrzeżenie: (0%)
-----


Cześć,

zainteresował mnie ten problem bo miałem zapytanie od klienta, więc podpowiadam, że firma emapa sprzedaje bazy z położeniem geograficznym. Dodatkowo mogę pomóc definicję wzoru do określania odległości...

Powodzenia!!
Go to the top of the page
+Quote Post
Aztech
post 27.10.2004, 15:57:31
Post #11





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Co do algorytmu poszukiwania najkrótszj drogi z punktu A bo B jesli znamy wszystkie odleglosci pomiedzy poszczegolnymi miastami najlepszy/najprotszy w implementacji jest algorytm DIJKSTRY.
Baze musialbys zorganizowac tak aby miec podane:
pierwsza tabela np MIASTA
MID | NAZWA | WSP_GEOGR/KOD_POCZT
ws geogr/kod_poczt tylko w przypadkach gdy miasta o tych samych nazwach, zeby si nie pomylic
druga tabelka z polaczeniami np taka
TID | MID | MID2 | ODL
w Polaczeniach masz MID->MID2 i odleglosc miedzy nimi
(*) zapytaniem wyciagasz odleglosci
(*) tworzysz graf odleglosci miedzy miastmi zapisany w tabeli
(*) tworzysz pomocnicza tabele posluzaca ci do przeszukiwania najkrotszej drogi z miasta A do B
(*) liczysz algorytmem DIJKSTRY - banalny

Nie wiem jak to zadziala w php bo to problem przeniesiony czysto z programowania (przykladowa baza towrzona na kolanie), ale mysle ze dalo by sie to zrobic

Jesli nie, to mze chociaz na jakies rozwiazanie naprowadzi

P.S. (*) Algorytm ma taka zalete ze dokladnie pokaze trase przez jakie miejsowosci bo beda one zapisane w tabelce pomocniczej
(*) jesli dopiszemy dodatkowa wage reprezentujaca czas do polaczeń to bedziemy mogli dodatkowo dobierac droge pod katam optymalnego czasu, bo przeciez nie zawsze najkrósza odległość jest najlepsza
Go to the top of the page
+Quote Post
zero
post 10.12.2004, 14:34:10
Post #12





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 10.12.2004

Ostrzeżenie: (0%)
-----


zobacz
http://pusiek.org/download.php
Go to the top of the page
+Quote Post
dr_bonzo
post 10.12.2004, 16:26:20
Post #13





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


http://www.transport.e-delta.com.pl/wspolrzedne.php
http://www.transport.e-delta.com.pl/baza_m...fabetycznie.php


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
barkroli
post 10.12.2004, 22:16:00
Post #14





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 23.05.2004

Ostrzeżenie: (0%)
-----


Sorki ale niemialem czasu czytac calego forum chodzi Ci o obliczenie odległości dorgowej czy odległosci po prostej.

1. Bo jeśli drogowej to nieobejdzie się bez znajomości odległości od wszystkich miejscowości.
2. Jeśli po drodze prostej to no problem


--------------------
Systemy dedykowane, Magento, Typo3
PascalSystem.pl
Go to the top of the page
+Quote Post
DeyV
post 12.12.2004, 12:39:47
Post #15





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Warto wiedzieć również o tym, że
Cytat
Spatial Extensions in MySQL

MySQL 4.1 introduces spatial extensions to allow the generation, storage, and analysis of geographic features. Currently, these features are available for MyISAM tables only.


Pozwala to na przechowywanie informaji o lokalizacjach geograficznych, oraz na obliczanie np. najkrótszej drogi, wszystkich możliwych tras itp.
Będzie to też o wiele wydajniejsze, niż przeliczanie takich informacji w php (w końcu jest to algorytm n-złożony) a MySQL potrafi to chyba całkiem sprytnie indeksować.


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
lenrok258
post 5.11.2012, 22:43:30
Post #16





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 5.01.2012

Ostrzeżenie: (0%)
-----


Algorytm (tak na prawde zwór) można sciągnąć za darmo ze strony www.bazamiejscowosci.pl (prawa strona, dział: Wzór obliczania odległości).
Dostępny jest kod w php, javie i arkusz Excel'owy.

Sama baza jest już płatna ale posiada wszystkie miejscowości w Polsce wraz ze współrzędnymi geograficznymi.

Ten post edytował lenrok258 5.11.2012, 22:44:41
Go to the top of the page
+Quote Post
abort
post 5.11.2012, 23:06:46
Post #17





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


Chwali się, że relatywnie nowi użytkownicy czytają forum. Ale że odpowiadają na tak stare posty - to już mnie lekko zadziwia...
Go to the top of the page
+Quote Post
kilab
post 5.11.2012, 23:21:46
Post #18





Grupa: Zarejestrowani
Postów: 180
Pomógł: 19
Dołączył: 4.11.2007

Ostrzeżenie: (0%)
-----


Skoro już archeolodzy dotarli na forum wink.gif

Temat był niedawno poruszany na forum. Kody pocztowe można wyciągnąć ze strony Poczty Polskiej, na ich podstawie wyciągnąć współrzędne z Google Maps i stworzyć sobie taką bazę.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2025 - 05:49