PostgreSQL 在 postgis 2.1 中启用 Tiger Geocoder

PostgreSQL 在 postgis 2.1 中启用 Tiger Geocoder

在本文中,我们将介绍如何在 PostgreSQL 数据库的 postgis 2.1 版本中启用 Tiger Geocoder。Tiger Geocoder 是一个用于地理编码和反向地理编码的插件,它可以将地址解析为地理坐标,或者将地理坐标转换为地址信息。

阅读更多:PostgreSQL 教程

什么是 Tiger Geocoder?

Tiger Geocoder 是由全国地理空间参考研究所(TIGER)提供数据支持的一个 PostgreSQL 扩展。它可以通过使用 TIGER 数据集,将地址字符串转换为地理坐标,并将地理坐标转换为地址等功能。Tiger Geocoder 可以提供准确的地理编码和地理解码功能,为地理空间分析提供了强大的支持。

安装和配置 postgis 2.1

在启用 Tiger Geocoder 之前,我们首先需要安装并配置 postgis 2.1。以下是安装步骤的示例:

  1. 在 Ubuntu 上安装 postgis 2.1:
sudo apt-get install postgresql-9.3-postgis-2.1
SQL
  1. 在安装完成后,使用以下命令在数据库中创建 postgis 扩展:
psql -U postgres -c "CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology;" mydatabase
SQL

请注意,mydatabase 应该替换为你要在其中启用 Tiger Geocoder 的实际数据库的名称。

安装并配置 Tiger Geocoder 扩展

一旦 postgis 2.1 安装和配置完毕,我们可以开始安装和配置 Tiger Geocoder 扩展。以下是步骤的示例:

  1. 下载 Tiger Geocoder 扩展的源代码:
git clone https://github.com/rogeouzel/tiger_geocoder.git
SQL
  1. 进入刚刚下载的源代码目录并执行以下命令来创建扩展:
make && sudo make install
SQL
  1. 创建一个新的数据库扩展,并加载 Tiger Geocoder 扩展:
psql -U postgres -c "CREATE EXTENSION tiger_geocode; CREATE EXTENSION fuzzystrmatch; CREATE EXTENSION postgis_tiger_geocoder;" mydatabase
SQL

请注意,mydatabase 应该替换为你要在其中启用 Tiger Geocoder 的实际数据库的名称。

  1. 在数据库中创建 Tiger Geocoder 扩展所需的表格和函数:
psql -U postgres -c "SELECT loader_generate_nation_script('mydatabase');" | psql -U postgres
psql -U postgres -c "SELECT loader_generate_script(ARRAY['mytable1', 'mytable2', ...], 'mydatabase');" | psql -U postgres
SQL

请将 mytable1, mytable2, … 替换为你想在其中启用 Tiger Geocoder 的表格名称。

使用 Tiger Geocoder 进行地理编码

现在,我们已经成功启用了 Tiger Geocoder 扩展,可以开始使用它来进行地理编码。以下是一个简单的示例:

SELECT g.rating, ST_X(g.geomout) AS lon, ST_Y(g.geomout) AS lat, pprint_addy(g.addy) AS address
FROM mytable AS t, geocode(mytable.address, 1) As g
WHERE t.mytable_id = g.source_id;
SQL

请使用你的实际表格名称替换 mytable,以及你的实际地址字段名称替换 address

以上查询将从 mytable 表格中选取地址进行地理编码,返回评分、经度、纬度和格式化的地址。

使用 Tiger Geocoder 进行反向地理编码

除了地理编码,Tiger Geocoder 还提供了反向地理编码的功能,将地理坐标转换为地址。以下是一个简单的示例:

SELECT pprint_addy(geocode('POINT(lon lat)', 1)) AS address
SQL

请用实际的经度和纬度替换 lonlat

以上查询将从给定的经纬度返回格式化的地址。

总结

通过启用 Tiger Geocoder,我们可以在 postgis 2.1 数据库中实现强大的地理编码和反向地理编码功能。此扩展提供了准确而高效的地址转换,使地理信息处理更加便捷。希望本文对你在 PostgreSQL 中启用 Tiger Geocoder 这一话题的理解有所帮助。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册