在Ubuntu 12.04中安装PostGIS和TIGER数据


9

有人能写一个简短的文章,尽管愚蠢地愚弄了傻瓜在ubuntu上安装Postgis和加载国家Tiger数据的指南吗?我尝试了一些指南,即http://wiki.bitnami.com/@api/deki/pages/302/pdf,但运气不佳。对于这个问题的开放性质,我深表歉意。


您正在运行哪个版本的PostGIS?是12.04打包的版本还是已升级?如果可以,请运行最新的PostGIS 2.1.1。该版本随附的TIGER Geocoder比与PostGIS 1.5一起使用的版本要好得多。
HeyOverThere 2014年

我确实在使用2.1.1。我启用了所有必需的扩展(fuzzystrmatch,postgis,postgi_tiger_geocoder,postgis_topology)和Tiger模式。现在,我只需要上传国家人口普查数据。
stat_novice

Answers:


12

由于拥有PostGIS 2.1.1,因此您处于领先地位。确保已安装wget,它将从Census FTP站点下载数据。

使用以下命令创建一个gisdata目录:

sudo mkdir /gisdata

使用chown和chgrp命令更改/ gisdata的所有权和组,以便普通用户可以读写/ gisdata。

启动psql并连接到数据库。一旦在psql中使用

\a

\t

以便查询结果的格式正确。

我最初忘记了这部分!在使用加载程序脚本之前,您需要做一些打扫房间。第一件事是确保Tiger模式在您的搜索路径中。接下来,检查tiger.loader_platform和tiger.loader_variables中的值。这两个表控制加载程序脚本的变量,例如您的用户名和密码。我通常只是在PGAdmin中对其进行编辑。接下来,您将需要运行一个脚本,该脚本将填充查询表和地理编码器所需的其他背景信息。首先设置一个输出文件:

\o nation_generator.sh

然后运行:

SELECT loader_generate_nation_script('sh'); 

然后退出psql并运行文件:

sh ./nation_generator.sh

然后跳回psql并输入:

\o loader_script.sh

将查询结果输出到名为loader_script.sql的文本文件。然后执行生成加载程序脚本的函数:

SELECT loader_generate_script(ARRAY['DC','RI'], 'sh');

这是查询,其输出将重定向到loader_script.sql。用要下载的状态的两个字母缩写替换“ DC”和“ RI”。

退出psql并使用以下命令运行脚本:

sh ./loader_script.sh

这将下载所选状态的文件,解压缩文件,然后将数据导入PostGIS数据库。


HeyOverThere:谢谢您的详细答复。在psql中,键入“ \ o loader_script.sql”会导致权限拒绝语句。知道为什么吗?我以用户postgres身份登录。
stat_novice 2014年

抱歉! 我忘记了大多数人不使用其普通用户帐户来运行psql。您需要将脚本保存在您的postgres用户具有写权限的位置。最简单的方法是使用\ o /tmp/loader_script.sql,它将文件保存到/ tmp。然后,运行文件将是sh ./tmp/loader_script.sql。
HeyOverThere 2014年

可行!不过,现在我收到此错误消息“没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型强制转换。” 在执行查询加载程序脚本时。另外,如果我没记错的话,我将不得不编辑该文件,是否要添加用户名和数据库?
stat_novice 2014年

双重抱歉!我也忘记了!首先要检查的是您数据库的搜索路径,请确保其中存在Tiger模式。要检查的第二件事是在Tiger模式中,有一些表Tiger.loader_platform和tiger.loader_variables告诉您的脚本您的密码和其他信息。使用PGAdmin进行编辑。最后,在运行加载程序脚本之前,请运行loader_generate_nation函数以设置地址解析器所需的所有表。我将编辑答案以填补这些空白。
HeyOverThere 2014年

HeyOverThere:您是男人/女人中的神。这几乎可行。国家和州脚本都运行,并且它们正在FTP传输人口普查网站,并且似乎正在检索文件,但是在两个脚本都完成后,它们会发出以下一些错误声明:“ loader_script.sql:408:loader_script.sql:/ usr / pgsql- 9.0 / bin / psql:未找到”。此外,tiger_data模式中没有数据。我是否需要编辑文件,特别是以下行:“ export PGBIN = / usr / pgsql-9.0 / bin”?
stat_novice 2014年

0

这个站点上有多个有关PostGIS安装的答案。这是一个Nick Gauthier的解决方案也很出色。在其中重申充足的建议...

在Ubuntu 12.04及更高版本中,PostGIS的安装变得容易得多。通常有两种解决方法:从PPA安装和从源代码构建。以下是我在每种情况下使用的常规Shell脚本。

从PPA安装...我使用ubuntugis-unstablePPA。

# Add Ubuntu GIS PPA and update, upgrade
sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable -y && sudo apt-get update && sudo apt-get upgrade

# Install PostGIS
sudo apt-get install postgis

# Recommends: sudo apt-get install postgresql-9.1-postgis-2.0

# Configure template database
POSTGIS_TEMPLATE=postgis-2.0.1
POSTGRESQL_VER=9.1
sudo su -c "createdb $POSTGIS_TEMPLATE" - postgres 
sudo -u postgres psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='$POSTGIS_TEMPLATE';" 
sudo -u postgres psql -d $POSTGIS_TEMPLATE -f /usr/share/postgresql/$POSTGRESQL_VER/contrib/postgis-2.0/postgis.sql
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT ALL ON geometry_columns TO PUBLIC;"
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT SELECT ON spatial_ref_sys TO PUBLIC;"

从源代码构建...假设采用PostGIS 2.1和PostgreSQL 9.1,但可以是两者的任何最新版本;根据需要进行更改。

cd /usr/local/ && sudo mkdir postgis && sudo chown [username] postgis && cd postgis
wget http://download.osgeo.org/postgis/source/postgis-2.1.0.tar.gz
tar -xzvf postgis-2.1.0.tar.gz && rm postgis-2.1.0.tar.gz && cd postgis-2.1.0
sudo ./configure --with-projdir=/usr/local/proj/v4.7.0/
make
sudo make install

# Configure template database
POSTGIS_TEMPLATE=postgis-2.1.0
POSTGRESQL_VER=9.1
sudo su -c "createdb $POSTGIS_TEMPLATE" - postgres 
sudo -u postgres psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='$POSTGIS_TEMPLATE';" 
sudo -u postgres psql -d $POSTGIS_TEMPLATE -f /usr/share/postgresql/$POSTGRESQL_VER/contrib/postgis-2.0/postgis.sql
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT ALL ON geometry_columns TO PUBLIC;"
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT SELECT ON spatial_ref_sys TO PUBLIC;"

您会注意到两者之间的主题。仍然需要创建模板数据库并填充spatial_ref_sys表。

关于使用TIGER进行设置,请遵循PostGIS 2.x文档第2章中有关加载TIGER数据的说明。


Arthur:我已经安装了PostGIS 2.1,并且以下目录中不存在
postgis.sql
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.