Czy istnieje sposób odwrotnego geokodowania w PostGIS? W sieci jest wiele informacji, ale uważam, że są bardzo mylące ...
Zaimportowałem dane OSM do własnej Postgres z bazą danych PostGIS. Teraz chcę wykonać geokodowanie i odwrotne geokodowanie w mojej bazie danych. Nie wiem, czy istnieją jakieś Procedury składowane lub projekt, który zajmuje się moim problemem.
Następnym krokiem, który chcę zrobić, jest stworzenie usługi internetowej, która może obsłużyć tego rodzaju żądania, ale to kolejne pytanie.
postgis
reverse-geocoding
Joaquín M.
źródło
źródło
Odpowiedzi:
Wreszcie rozumiem sposób wykonywania geokodu i odwrotnego w mojej bazie danych PostGIS. Zrobiłem procedurę składowaną, która znajduje typy geometrii, które są w pobliżu punktu. Ta procedura składowana wykorzystuje funkcję odległości, aby uzyskać najbliższe punkty. Następnie utworzyłem interfejs API RESTful, który wywołuje tę procedurę składowaną w celu rozwiązania żądania odwrotnego geokodowania.
Popraw mnie, jeśli się mylę, ale zrozumiałem, że projekt Nominatim tworzy interfejs API dla baz danych, które zostały zaimportowane z OSM. Więc nie musisz tworzyć żadnej procedury składowanej dla odwrotnego geokodowania i geokodowania. Nie musisz też robić żadnej usługi internetowej, aby rozwiązać żądania za pośrednictwem sieci.
Mam nadzieję, że to komuś pomoże.
źródło
CREATE OR REPLACE FUNCTION reverse_geocode(lat double precision, lon double precision) RETURNS text AS $BODY$ declare point geometry; rec record; geocode text; begin point := geomfromtext('POINT('||lat||' '||lon||')', 4326); select name, distance(way, point) as dist into rec from mapserverdb_point order by dist asc limit 1; geocode := rec.name; return geocode; end; $BODY$ LANGUAGE plpgsql;
Geokoder tygrysa PostGIS 2.0 posiada geokoder odwrotny wykorzystujący dane Tiger. Geokoder zainstaluje się poprawnie na PostGIS 1.5 8.4+ lub nowszym.
Jeśli jesteś w USA, może być najłatwiejszy w użyciu, ponieważ wszystko jest spakowane jako funkcje plpgsql.
http://www.postgis.org/documentation/manual-svn/Extras.html#Tiger_Geocoder http://www.postgis.org/documentation/manual-svn/Reverse_Geocode.html
źródło