konto usunięte

Temat: Dane geograficzne a czysty Postgres

Hej!

Instaluje sobie wlasnie dla swojego lokalnego projektu Postgis'a, ale obawiam sie, ze typowy hosting moze tego nie miec w ofercie. W jaki sposob Waszym zdaniem najlepiej zorganizować przechowywanie i wyszukiwanie punktów geograficznych (np. w promieniu do podanych koordynatów itd) na czystym Postgresie? Jedyne co mi do głowy przychodzi do kolumny lat i long i potem obrabianie tego w php (co wydaje mi się, że będzie nieco czasochłonne). ewentualnie napisanie funkcji w plpgsql

A może znacie jakiś normalny hosting z postgisem ? :)Grzegorz Kaszuba edytował(a) ten post dnia 06.08.10 o godzinie 19:57
Marcin Nowak

Marcin Nowak Python, Django,
Cassandra,
PostgreSQL

Temat: Dane geograficzne a czysty Postgres

W jaki sposob Waszym zdaniem najlepiej zorganizować przechowywanie i wyszukiwanie punktów geograficznych (np. w promieniu do podanych koordynatów itd) na czystym Postgresie? Jedyne co mi do głowy przychodzi do kolumny lat i long i potem obrabianie tego w php (co wydaje mi się, że będzie nieco czasochłonne). ewentualnie napisanie funkcji w plpgsql

do wyszukania punktów w okolicy innego punktu (najprościej w obszarze prostokątnym) wystarczą kolumny lat i lon.

konto usunięte

Temat: Dane geograficzne a czysty Postgres

Marcin Nowak:
W jaki sposob Waszym zdaniem najlepiej zorganizować przechowywanie i wyszukiwanie punktów geograficznych (np. w promieniu do podanych koordynatów itd) na czystym Postgresie? Jedyne co mi do głowy przychodzi do kolumny lat i long i potem obrabianie tego w php (co wydaje mi się, że będzie nieco czasochłonne). ewentualnie napisanie funkcji w plpgsql

do wyszukania punktów w okolicy innego punktu (najprościej w obszarze prostokątnym) wystarczą kolumny lat i lon.

Jeśli jest to taka "bliska" okolica, to tak, dla większego prostokąta nie będzie tak różowo, bo ogólnie to Ziemia płaska nie jest. Zależy też jak zdefiniujesz prostokąt, czy po współrzędnych lat/lon czy może tak, jakbyś miał tam dojść.
Marcin Nowak

Marcin Nowak Python, Django,
Cassandra,
PostgreSQL

Temat: Dane geograficzne a czysty Postgres

do wyszukania punktów w okolicy innego punktu (najprościej w obszarze prostokątnym) wystarczą kolumny lat i lon.

Jeśli jest to taka "bliska" okolica, to tak, dla większego prostokąta nie będzie tak różowo, bo ogólnie to Ziemia płaska nie jest. Zależy też jak zdefiniujesz prostokąt, czy po współrzędnych lat/lon czy może tak, jakbyś miał tam dojść.

dokładnie. używam tego rozwiązania na małych odległościach.
jednak wkrótce będę musiał użyć postgis.

konto usunięte

Temat: Dane geograficzne a czysty Postgres

Wydaje mi się, że mniej więcej znalazłem rozwiązanie. Biorę punkt startowy a potem faktycznie tak jak radził Marcin - poproszę o zwrot krotek, których lat i lon zawierają się w jakimś tam kwadracie. Tyle dla mnie wystarczy - dzięki! :)

konto usunięte

Temat: Dane geograficzne a czysty Postgres

a nie lepiej coś takiego?:

6371 * acos( cos( radians(@lat) ) * cos( radians( lat ) ) * cos( radians( lon ) - radians(@lon) ) + sin( radians(@lat) ) * sin( radians( lat ) ) )

Zwraca odległość w km pomiędzy dwoma współrzędnymi. Można więc też wykorzystać do wyszukiwania w określonym promieniu.
Rafał Toboła

Rafał Toboła Razor s.c. -
współwłaściciel

Temat: Dane geograficzne a czysty Postgres

Skoro czysty Postgres, to może typy geometryczne, np. POINT:

http://www.postgresql.org/docs/8.4/interactive/datatyp...
+
http://www.postgresql.org/docs/8.4/interactive/functio...

Przykład:


CREATE TABLE test(id serial, latlng POINT);
INSERT INTO test(latlng) VALUES ('(10.0,20.0)'), ('(100.0,200.0)');
SELECT id, latlng, latlng<->'(0.0,0.0)' AS distance from test WHERE (latlng<->'(0.0,0.0)')<23;
id | latlng | distance
----+---------+------------------
1 | (10,20) | 22.3606797749979

Następna dyskusja:

Hierarchiczne dane w relacy...




Wyślij zaproszenie do