Finalmente, entendo a maneira de fazer geocode e inverter geocode com meu banco de dados PostGIS. Eu fiz um procedimento armazenado que encontra tipos de geometria que estão próximos de um ponto. Este procedimento armazenado usa a função de distância para obter os pontos mais próximos. Depois disso, criei uma API RESTful que chama esse procedimento armazenado para resolver as solicitações de geocodificação reversa.
Corrija-me se estiver errado, mas entendi que o projeto Nominatim cria uma API para bancos de dados que foram importados do OSM. Portanto, você não precisa criar nenhum procedimento armazenado para geocodificação reversa e geocodificação. Além disso, você não precisa fazer nenhum serviço da web para resolver as solicitações pela web.
Espero que isso ajude alguém.
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;