Finalmente, entiendo la manera de hacer geocodificación y geocodificación inversa con mi base de datos PostGIS. Hice un procedimiento almacenado que encuentra tipos de geometría que están cerca de un punto. Este procedimiento almacenado utiliza la función de distancia para obtener los puntos más cercanos. Después de eso, he creado una API RESTful que llama a este procedimiento almacenado para resolver las solicitudes de geocodificación inversa.
Corríjame si me equivoco, pero he entendido que el proyecto Nominatim crea una API para bases de datos que se han importado de OSM. Por lo tanto, no tiene que crear ningún procedimiento almacenado para geocodificación y geocodificación inversa. Además, no tiene que realizar ningún servicio web para resolver las solicitudes a través de la web.
Espero que esto ayude a alguien.
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;