nominatim_fdw

Nominatim 地理编码接口的 FDW 扩展

概览

扩展包名版本分类许可证语言
nominatim_fdw2.0.0FDWMITC
ID扩展名BinLibLoadCreateTrustReloc模式
8680nominatim_fdw-

PIGSTY RPM and DEB packages are aligned at 2.0.0 for PostgreSQL 14 through 18.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY2.0.01817161514nominatim_fdw-
RPMPIGSTY2.0.01817161514nominatim_fdw_$v-
DEBPIGSTY2.0.01817161514postgresql-$v-nominatim-fdw-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
d12.aarch64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
d13.x86_64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
d13.aarch64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
u22.x86_64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
u22.aarch64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
u24.x86_64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
u24.aarch64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
u26.x86_64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
u26.aarch64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0

构建

您可以使用 pig build 命令构建 nominatim_fdw 扩展的 RPM / DEB 包:

pig build pkg nominatim_fdw         # 构建 RPM / DEB 包

安装

您可以直接安装 nominatim_fdw 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install nominatim_fdw;          # 当前活跃 PG 版本安装
pig ext install -y nominatim_fdw -v 18  # PG 18
pig ext install -y nominatim_fdw -v 17  # PG 17
pig ext install -y nominatim_fdw -v 16  # PG 16
pig ext install -y nominatim_fdw -v 15  # PG 15
pig ext install -y nominatim_fdw -v 14  # PG 14
dnf install -y nominatim_fdw_18       # PG 18
dnf install -y nominatim_fdw_17       # PG 17
dnf install -y nominatim_fdw_16       # PG 16
dnf install -y nominatim_fdw_15       # PG 15
dnf install -y nominatim_fdw_14       # PG 14
apt install -y postgresql-18-nominatim-fdw   # PG 18
apt install -y postgresql-17-nominatim-fdw   # PG 17
apt install -y postgresql-16-nominatim-fdw   # PG 16
apt install -y postgresql-15-nominatim-fdw   # PG 15
apt install -y postgresql-14-nominatim-fdw   # PG 14

创建扩展

CREATE EXTENSION nominatim_fdw;

用法

来源:

nominatim_fdw 从PostgreSQL调用一个Nominatim地理编码服务。与传统的FDW不同,它暴露了用于搜索、逆向地理编码和OSM对象查找的函数;它不会创建可查询的外部表。

配置服务器

CREATE EXTENSION nominatim_fdw;

CREATE SERVER osm
  FOREIGN DATA WRAPPER nominatim_fdw
  OPTIONS (
    url 'https://nominatim.openstreetmap.org',
    connect_timeout '10',
    max_connect_retry '2',
    max_connect_redirect '1',
    accept_language 'en'
  );

公共OpenStreetMap端点有一个官方使用政策。对于持续或批量工作负载,请使用授权提供商或运行自己的Nominatim服务,根据要求标识应用程序,并遵守速率限制。

核心流程

自由文本搜索:

SELECT osm_id, display_name, lon, lat
FROM nominatim_search(
  server_name => 'osm',
  q => 'Neubrückenstraße 63, Münster, Germany'
);

逆向地理编码和对象查找:

SELECT osm_id, display_name, addressdetails
FROM nominatim_reverse(
  server_name => 'osm',
  lon => 7.6293,
  lat => 51.9648,
  addressdetails => true
);

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

重要对象

  • nominatim_search(...) 实现了自由文本或结构化前向搜索。
  • nominatim_reverse(...) 将经度和纬度解析为最近的合适OSM地址。
  • nominatim_lookup(...) 获取节点、方式或关系标识符,如N123W456R789
  • nominatim_fdw_version() 报告扩展和主库版本。
  • nominatim_fdw_settings 以行的形式暴露依赖和构建版本。
  • 服务器选项包括url、代理配置、超时设置、重试和重定向限制,以及默认的accept_language

所有端点函数都是STRICT:显式SQL中的NULL参数返回空结果而不发送请求。在2.0中它们正确声明为VOLATILE,因为响应是远程的且可以更改。

2.0 版本变更和注意事项

2.0版本验证逆向坐标、添加了emailpolygon_thresholdentrances,暴露依赖设置,并修复了返回详细字段中的JSON转义。它还具有用户可见的变化:逆向输出使用display_nameaddressparts变为addressdetails;地址细节默认为真用于逆向和查找;版本输出更短。在从1.3升级之前,请审查结果列的消费者。

每次调用都会在网络语句中执行网络I/O操作。请使用有限的超时设置,限制谁可以创建或修改服务器,并避免在一个大型查询中的每一行都调用公共服务。上游构建需要PostgreSQL 10或更高版本、libxml2 2.5或更高版本以及libcurl 7.74或更高版本。