Skip to content
nominatim_fdw

nominatim_fdw

nominatim_fdw : Nominatim Foreign Data Wrapper for PostgreSQL

Overview

IDExtensionPackageVersionCategoryLicenseLanguage
8680
nominatim_fdw
nominatim_fdw
1.3
FDW
MIT
C
AttributeHas BinaryHas LibraryNeed LoadHas DDLRelocatableTrusted
--s-d-r
No
Yes
No
Yes
yes
no

Packages

TypeRepoVersionPG Major CompatibilityPackage PatternDependencies
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 / PGPG18PG17PG16PG15PG14
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
PackageVersionOSORGSIZEFile URL
nominatim_fdw_181.3el8.x86_64pgdg32.0 KiBnominatim_fdw_18-1.3-2PGDG.rhel8.10.x86_64.rpm
nominatim_fdw_181.3el8.x86_64pgdg31.9 KiBnominatim_fdw_18-1.3-1PGDG.rhel8.10.x86_64.rpm
nominatim_fdw_181.2el8.x86_64pgdg30.6 KiBnominatim_fdw_18-1.2-1PGDG.rhel8.10.x86_64.rpm
nominatim_fdw_181.1.0el8.x86_64pgdg30.1 KiBnominatim_fdw_18-1.1.0-1PGDG.rhel8.10.x86_64.rpm
nominatim_fdw_181.3el8.aarch64pgdg31.0 KiBnominatim_fdw_18-1.3-2PGDG.rhel8.10.aarch64.rpm
nominatim_fdw_181.3el8.aarch64pgdg30.9 KiBnominatim_fdw_18-1.3-1PGDG.rhel8.10.aarch64.rpm
nominatim_fdw_181.2el8.aarch64pgdg29.8 KiBnominatim_fdw_18-1.2-1PGDG.rhel8.10.aarch64.rpm
nominatim_fdw_181.1.0el8.aarch64pgdg29.3 KiBnominatim_fdw_18-1.1.0-1PGDG.rhel8.10.aarch64.rpm
nominatim_fdw_181.3el9.x86_64pgdg32.5 KiBnominatim_fdw_18-1.3-2PGDG.rhel9.7.x86_64.rpm
nominatim_fdw_181.3el9.x86_64pgdg32.4 KiBnominatim_fdw_18-1.3-1PGDG.rhel9.7.x86_64.rpm
nominatim_fdw_181.2el9.x86_64pgdg31.1 KiBnominatim_fdw_18-1.2-1PGDG.rhel9.7.x86_64.rpm
nominatim_fdw_181.1.0el9.x86_64pgdg30.5 KiBnominatim_fdw_18-1.1.0-1PGDG.rhel9.7.x86_64.rpm
nominatim_fdw_181.3el9.aarch64pgdg31.6 KiBnominatim_fdw_18-1.3-2PGDG.rhel9.7.aarch64.rpm
nominatim_fdw_181.3el9.aarch64pgdg31.5 KiBnominatim_fdw_18-1.3-1PGDG.rhel9.7.aarch64.rpm
nominatim_fdw_181.2el9.aarch64pgdg30.3 KiBnominatim_fdw_18-1.2-1PGDG.rhel9.7.aarch64.rpm
nominatim_fdw_181.1.0el9.aarch64pgdg29.9 KiBnominatim_fdw_18-1.1.0-1PGDG.rhel9.7.aarch64.rpm
nominatim_fdw_181.3el10.x86_64pgdg32.8 KiBnominatim_fdw_18-1.3-2PGDG.rhel10.1.x86_64.rpm
nominatim_fdw_181.3el10.x86_64pgdg32.7 KiBnominatim_fdw_18-1.3-1PGDG.rhel10.1.x86_64.rpm
nominatim_fdw_181.2el10.x86_64pgdg31.4 KiBnominatim_fdw_18-1.2-1PGDG.rhel10.1.x86_64.rpm
nominatim_fdw_181.1.0el10.x86_64pgdg30.9 KiBnominatim_fdw_18-1.1.0-1PGDG.rhel10.1.x86_64.rpm
nominatim_fdw_181.3el10.aarch64pgdg32.2 KiBnominatim_fdw_18-1.3-2PGDG.rhel10.1.aarch64.rpm
nominatim_fdw_181.3el10.aarch64pgdg32.1 KiBnominatim_fdw_18-1.3-1PGDG.rhel10.1.aarch64.rpm
nominatim_fdw_181.2el10.aarch64pgdg30.9 KiBnominatim_fdw_18-1.2-1PGDG.rhel10.1.aarch64.rpm
nominatim_fdw_181.1.0el10.aarch64pgdg30.5 KiBnominatim_fdw_18-1.1.0-1PGDG.rhel10.1.aarch64.rpm
postgresql-18-nominatim-fdw1.2d12.x86_64pigsty52.9 KiBpostgresql-18-nominatim-fdw_1.2-1PIGSTY~bookworm_amd64.deb
postgresql-18-nominatim-fdw1.2d12.aarch64pigsty51.8 KiBpostgresql-18-nominatim-fdw_1.2-1PIGSTY~bookworm_arm64.deb
postgresql-18-nominatim-fdw1.2d13.x86_64pigsty52.8 KiBpostgresql-18-nominatim-fdw_1.2-1PIGSTY~trixie_amd64.deb
postgresql-18-nominatim-fdw1.2d13.aarch64pigsty52.1 KiBpostgresql-18-nominatim-fdw_1.2-1PIGSTY~trixie_arm64.deb
postgresql-18-nominatim-fdw1.2u22.x86_64pigsty56.6 KiBpostgresql-18-nominatim-fdw_1.2-1PIGSTY~jammy_amd64.deb
postgresql-18-nominatim-fdw1.2u22.aarch64pigsty56.3 KiBpostgresql-18-nominatim-fdw_1.2-1PIGSTY~jammy_arm64.deb
postgresql-18-nominatim-fdw1.2u24.x86_64pigsty54.6 KiBpostgresql-18-nominatim-fdw_1.2-1PIGSTY~noble_amd64.deb
postgresql-18-nominatim-fdw1.2u24.aarch64pigsty54.4 KiBpostgresql-18-nominatim-fdw_1.2-1PIGSTY~noble_arm64.deb
postgresql-18-nominatim-fdw1.2u26.x86_64pigsty54.5 KiBpostgresql-18-nominatim-fdw_1.2-1PIGSTY~resolute_amd64.deb
postgresql-18-nominatim-fdw1.2u26.aarch64pigsty53.7 KiBpostgresql-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