Skip to content
nominatim_fdw

nominatim_fdw

nominatim_fdw : Nominatim Foreign Data Wrapper for PostgreSQL

Overview

ID Extension Package Version Category License Language
8680
nominatim_fdw
nominatim_fdw
1.3
FDW
MIT
C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s-d-r
No
Yes
No
Yes
yes
no

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT
PGDG
1.3
18
17
16
15
14
nominatim_fdw -
RPM
PGDG
1.3
18
17
16
15
14
nominatim_fdw_$v -
DEB
PIGSTY
1.2
18
17
16
15
14
postgresql-$v-nominatim-fdw -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64
PGDG 1.3
PGDG 1.3
PGDG 1.3
PGDG 1.3
PGDG 1.3
el8.aarch64
PGDG 1.3
PGDG 1.3
PGDG 1.3
PGDG 1.3
PGDG 1.3
el9.x86_64
PGDG 1.3
PGDG 1.3
PGDG 1.3
PGDG 1.3
PGDG 1.3
el9.aarch64
PGDG 1.3
PGDG 1.3
PGDG 1.3
PGDG 1.3
PGDG 1.3
el10.x86_64
PGDG 1.3
PGDG 1.3
PGDG 1.3
PGDG 1.3
PGDG 1.3
el10.aarch64
PGDG 1.3
PGDG 1.3
PGDG 1.3
PGDG 1.3
PGDG 1.3
d12.x86_64
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
d12.aarch64
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
d13.x86_64
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
d13.aarch64
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
u22.x86_64
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
u22.aarch64
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
u24.x86_64
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
u24.aarch64
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
u26.x86_64
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
u26.aarch64
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
PIGSTY 1.2
Package Version OS ORG SIZE File URL
nominatim_fdw_18 1.3 el8.x86_64 pgdg 32.0 KiB nominatim_fdw_18-1.3-2PGDG.rhel8.10.x86_64.rpm
nominatim_fdw_18 1.3 el8.x86_64 pgdg 31.9 KiB nominatim_fdw_18-1.3-1PGDG.rhel8.10.x86_64.rpm
nominatim_fdw_18 1.2 el8.x86_64 pgdg 30.6 KiB nominatim_fdw_18-1.2-1PGDG.rhel8.10.x86_64.rpm
nominatim_fdw_18 1.1.0 el8.x86_64 pgdg 30.1 KiB nominatim_fdw_18-1.1.0-1PGDG.rhel8.10.x86_64.rpm
nominatim_fdw_18 1.3 el8.aarch64 pgdg 31.0 KiB nominatim_fdw_18-1.3-2PGDG.rhel8.10.aarch64.rpm
nominatim_fdw_18 1.3 el8.aarch64 pgdg 30.9 KiB nominatim_fdw_18-1.3-1PGDG.rhel8.10.aarch64.rpm
nominatim_fdw_18 1.2 el8.aarch64 pgdg 29.8 KiB nominatim_fdw_18-1.2-1PGDG.rhel8.10.aarch64.rpm
nominatim_fdw_18 1.1.0 el8.aarch64 pgdg 29.3 KiB nominatim_fdw_18-1.1.0-1PGDG.rhel8.10.aarch64.rpm
nominatim_fdw_18 1.3 el9.x86_64 pgdg 32.5 KiB nominatim_fdw_18-1.3-2PGDG.rhel9.7.x86_64.rpm
nominatim_fdw_18 1.3 el9.x86_64 pgdg 32.4 KiB nominatim_fdw_18-1.3-1PGDG.rhel9.7.x86_64.rpm
nominatim_fdw_18 1.2 el9.x86_64 pgdg 31.1 KiB nominatim_fdw_18-1.2-1PGDG.rhel9.7.x86_64.rpm
nominatim_fdw_18 1.1.0 el9.x86_64 pgdg 30.5 KiB nominatim_fdw_18-1.1.0-1PGDG.rhel9.7.x86_64.rpm
nominatim_fdw_18 1.3 el9.aarch64 pgdg 31.6 KiB nominatim_fdw_18-1.3-2PGDG.rhel9.7.aarch64.rpm
nominatim_fdw_18 1.3 el9.aarch64 pgdg 31.5 KiB nominatim_fdw_18-1.3-1PGDG.rhel9.7.aarch64.rpm
nominatim_fdw_18 1.2 el9.aarch64 pgdg 30.3 KiB nominatim_fdw_18-1.2-1PGDG.rhel9.7.aarch64.rpm
nominatim_fdw_18 1.1.0 el9.aarch64 pgdg 29.9 KiB nominatim_fdw_18-1.1.0-1PGDG.rhel9.7.aarch64.rpm
nominatim_fdw_18 1.3 el10.x86_64 pgdg 32.8 KiB nominatim_fdw_18-1.3-2PGDG.rhel10.1.x86_64.rpm
nominatim_fdw_18 1.3 el10.x86_64 pgdg 32.7 KiB nominatim_fdw_18-1.3-1PGDG.rhel10.1.x86_64.rpm
nominatim_fdw_18 1.2 el10.x86_64 pgdg 31.4 KiB nominatim_fdw_18-1.2-1PGDG.rhel10.1.x86_64.rpm
nominatim_fdw_18 1.1.0 el10.x86_64 pgdg 30.9 KiB nominatim_fdw_18-1.1.0-1PGDG.rhel10.1.x86_64.rpm
nominatim_fdw_18 1.3 el10.aarch64 pgdg 32.2 KiB nominatim_fdw_18-1.3-2PGDG.rhel10.1.aarch64.rpm
nominatim_fdw_18 1.3 el10.aarch64 pgdg 32.1 KiB nominatim_fdw_18-1.3-1PGDG.rhel10.1.aarch64.rpm
nominatim_fdw_18 1.2 el10.aarch64 pgdg 30.9 KiB nominatim_fdw_18-1.2-1PGDG.rhel10.1.aarch64.rpm
nominatim_fdw_18 1.1.0 el10.aarch64 pgdg 30.5 KiB nominatim_fdw_18-1.1.0-1PGDG.rhel10.1.aarch64.rpm
postgresql-18-nominatim-fdw 1.2 d12.x86_64 pigsty 52.9 KiB postgresql-18-nominatim-fdw_1.2-1PIGSTY~bookworm_amd64.deb
postgresql-18-nominatim-fdw 1.2 d12.aarch64 pigsty 51.8 KiB postgresql-18-nominatim-fdw_1.2-1PIGSTY~bookworm_arm64.deb
postgresql-18-nominatim-fdw 1.2 d13.x86_64 pigsty 52.8 KiB postgresql-18-nominatim-fdw_1.2-1PIGSTY~trixie_amd64.deb
postgresql-18-nominatim-fdw 1.2 d13.aarch64 pigsty 52.1 KiB postgresql-18-nominatim-fdw_1.2-1PIGSTY~trixie_arm64.deb
postgresql-18-nominatim-fdw 1.2 u22.x86_64 pigsty 56.6 KiB postgresql-18-nominatim-fdw_1.2-1PIGSTY~jammy_amd64.deb
postgresql-18-nominatim-fdw 1.2 u22.aarch64 pigsty 56.3 KiB postgresql-18-nominatim-fdw_1.2-1PIGSTY~jammy_arm64.deb
postgresql-18-nominatim-fdw 1.2 u24.x86_64 pigsty 54.6 KiB postgresql-18-nominatim-fdw_1.2-1PIGSTY~noble_amd64.deb
postgresql-18-nominatim-fdw 1.2 u24.aarch64 pigsty 54.4 KiB postgresql-18-nominatim-fdw_1.2-1PIGSTY~noble_arm64.deb
postgresql-18-nominatim-fdw 1.2 u26.x86_64 pigsty 54.5 KiB postgresql-18-nominatim-fdw_1.2-1PIGSTY~resolute_amd64.deb
postgresql-18-nominatim-fdw 1.2 u26.aarch64 pigsty 53.7 KiB postgresql-18-nominatim-fdw_1.2-1PIGSTY~resolute_arm64.deb

Source

pig build pkg nominatim_fdw;		# build rpm/deb

Install

Make sure PGDG repo available:

pig repo add pgdg -u    # add pgdg repo and update cache

Install this extension with pig:

pig install nominatim_fdw;		# install via package name, for the active PG version

pig install nominatim_fdw -v 18;   # install for PG 18
pig install nominatim_fdw -v 17;   # install for PG 17
pig install nominatim_fdw -v 16;   # install for PG 16
pig install nominatim_fdw -v 15;   # install for PG 15
pig install nominatim_fdw -v 14;   # install for PG 14

Create this extension with:

CREATE EXTENSION nominatim_fdw;

Usage

Sources: README, Nominatim API

nominatim_fdw is a PostgreSQL foreign data wrapper for Nominatim geocoding services. Upstream exposes it through SQL functions mapped to the Nominatim search, reverse, and lookup endpoints rather than through foreign tables.

Create a server

CREATE EXTENSION nominatim_fdw;

CREATE SERVER osm
FOREIGN DATA WRAPPER nominatim_fdw
OPTIONS (url 'https://nominatim.openstreetmap.org');

Documented server options:

  • url (required)
  • http_proxy
  • connect_timeout
  • max_connect_retry
  • max_connect_redirect

Proxy credentials belong in a user mapping:

CREATE USER MAPPING FOR pguser
SERVER osm
OPTIONS (proxy_user 'myuser', proxy_password 'mysecret');

Geocoding functions

Structured or free-form search:

SELECT osm_id, ref, lon, lat, boundingbox
FROM nominatim_search(
  server_name => 'osm',
  street => 'Neubrueckenstrasse 63',
  city => 'Muenster',
  country => 'Germany'
);

SELECT osm_id, display_name, lon, lat
FROM nominatim_search(
  server_name => 'osm',
  q => '1600 Pennsylvania Avenue, Washington DC'
);

Reverse lookup:

SELECT osm_id, display_name, boundingbox
FROM nominatim_reverse(
  server_name => 'osm',
  lon => -77.0365,
  lat => 38.8977,
  zoom => 18,
  addressdetails => true
);

OSM object lookup:

SELECT osm_id, display_name
FROM nominatim_lookup(
  server_name => 'osm',
  osm_ids => 'W121736959,R123456'
);

The README notes OSM ID prefixes such as N for nodes, W for ways, and R for relations.

Notes

  • Upstream documents PostgreSQL 12+, libxml2 2.5.0+, and libcurl 7.74.0+.
  • The extension exposes nominatim_fdw_version().
  • The current README documents CREATE EXTENSION ... WITH VERSION '1.3' and ALTER EXTENSION ... UPDATE TO '1.3', so upstream has moved past the requested 1.2 refresh target.
Last updated on