마지막으로 PostGIS 데이터베이스로 지오 코딩 및 역 지오 코딩을 수행하는 방법을 이해합니다. 포인트에 가까운 지오메트리 유형을 찾는 저장 프로 시저를 만들었습니다. 이 저장 프로시 저는 거리 함수를 사용하여 가장 가까운 점을 얻습니다. 그런 다음이 저장 프로 시저를 호출하여 리버스 지오 코딩 요청을 해결하는 RESTful API를 만들었습니다.
내가 틀렸다면 정정하지만 Nominatim 프로젝트는 OSM에서 가져온 데이터베이스에 대한 API를 생성한다는 것을 이해했습니다. 따라서 역 지오 코딩 및 지오 코딩을 위해 저장 프로 시저를 만들 필요가 없습니다. 또한 웹을 통한 요청을 해결하기 위해 웹 서비스를 만들 필요가 없습니다.
이것이 누군가를 돕기를 바랍니다.
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;