Son olarak, PostGIS veritabanımla coğrafi kod ve ters coğrafi kod yapmanın yolunu anlıyorum. Bir noktaya yakın geometri türlerini bulan saklı bir prosedür yaptım. Bu saklı yordam en yakın noktaları almak için distance işlevini kullanır. Bundan sonra, ters coğrafi kodlama isteklerini çözmek için bu saklı yordamı çağıran bir RESTful API oluşturduk.
Yanlışsam beni düzeltin, ancak Nominatim projesinin OSM'den içe aktarılan veritabanları için bir API oluşturduğunu anladım. Dolayısıyla, ters coğrafi kodlama ve coğrafi kodlama için herhangi bir saklı yordam oluşturmanız gerekmez. Ayrıca, istekleri web üzerinden çözmek için herhangi bir web hizmeti yapmanız gerekmez.
Umarım bu birine yardımcı olur.
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;