Cuối cùng, tôi hiểu cách thực hiện mã địa lý và đảo ngược mã địa lý với cơ sở dữ liệu PostGIS của tôi. Tôi đã thực hiện một thủ tục được lưu trữ để tìm các loại hình học gần một điểm. Thủ tục lưu trữ này sử dụng hàm khoảng cách để lấy các điểm gần nhất. Sau đó, tôi đã tạo một API RESTful gọi thủ tục được lưu trữ này để giải quyết các yêu cầu mã hóa địa lý ngược.
Sửa lỗi cho tôi nếu tôi sai, nhưng tôi đã hiểu rằng dự án Nominatim tạo ra API cho cơ sở dữ liệu đã được nhập từ OSM. Vì vậy, bạn không phải tạo bất kỳ thủ tục được lưu trữ nào cho mã hóa địa lý và mã hóa địa lý. Ngoài ra, bạn không phải thực hiện bất kỳ dịch vụ web nào để giải quyết các yêu cầu thông qua web.
Hy vọng điều này sẽ giúp được ai đó.
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;