nominatim_fdw
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
nominatim_fdw | 2.0.0 | FDW | MIT | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 8680 | nominatim_fdw | 否 | 是 | 否 | 是 | 否 | 是 | - |
PIGSTY RPM and DEB packages are aligned at 2.0.0 for PostgreSQL 14 through 18.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 2.0.0 | 1817161514 | nominatim_fdw | - |
| RPM | PIGSTY | 2.0.0 | 1817161514 | nominatim_fdw_$v | - |
| DEB | PIGSTY | 2.0.0 | 1817161514 | postgresql-$v-nominatim-fdw | - |
构建
您可以使用 pig build 命令构建 nominatim_fdw 扩展的 RPM / DEB 包:
pig build pkg nominatim_fdw # 构建 RPM / DEB 包
安装
您可以直接安装 nominatim_fdw 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
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 v2.0 README
- nominatim_fdw v2.0 changelog
- Extension control file
- 官方Nominatim API概览
- OpenStreetMap Nominatim使用政策
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(...)获取节点、方式或关系标识符,如N123、W456或R789。nominatim_fdw_version()报告扩展和主库版本。nominatim_fdw_settings以行的形式暴露依赖和构建版本。- 服务器选项包括
url、代理配置、超时设置、重试和重定向限制,以及默认的accept_language。
所有端点函数都是STRICT:显式SQL中的NULL参数返回空结果而不发送请求。在2.0中它们正确声明为VOLATILE,因为响应是远程的且可以更改。
2.0 版本变更和注意事项
2.0版本验证逆向坐标、添加了email、polygon_threshold和entrances,暴露依赖设置,并修复了返回详细字段中的JSON转义。它还具有用户可见的变化:逆向输出使用display_name;addressparts变为addressdetails;地址细节默认为真用于逆向和查找;版本输出更短。在从1.3升级之前,请审查结果列的消费者。
每次调用都会在网络语句中执行网络I/O操作。请使用有限的超时设置,限制谁可以创建或修改服务器,并避免在一个大型查询中的每一行都调用公共服务。上游构建需要PostgreSQL 10或更高版本、libxml2 2.5或更高版本以及libcurl 7.74或更高版本。