有人能写一个简短的文章,尽管愚蠢地愚弄了傻瓜在ubuntu上安装Postgis和加载国家Tiger数据的指南吗?我尝试了一些指南,即http://wiki.bitnami.com/@api/deki/pages/302/pdf,但运气不佳。对于这个问题的开放性质,我深表歉意。
有人能写一个简短的文章,尽管愚蠢地愚弄了傻瓜在ubuntu上安装Postgis和加载国家Tiger数据的指南吗?我尝试了一些指南,即http://wiki.bitnami.com/@api/deki/pages/302/pdf,但运气不佳。对于这个问题的开放性质,我深表歉意。
Answers:
由于拥有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数据库。
这个站点上有多个有关PostGIS安装的答案。这是一个,Nick Gauthier的解决方案也很出色。在其中重申充足的建议...
在Ubuntu 12.04及更高版本中,PostGIS的安装变得容易得多。通常有两种解决方法:从PPA安装和从源代码构建。以下是我在每种情况下使用的常规Shell脚本。
从PPA安装...我使用ubuntugis-unstable
PPA。
# 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数据的说明。