Instale PostGIS y TIGER Data en Ubuntu 12.04

9

¿Podría alguien escribir una breve guía tonta aunque tonta para instalar postgis y cargar datos nacionales de Tiger en ubuntu? He probado algunas guías, a saber, http://wiki.bitnami.com/@api/deki/pages/302/pdf , pero no tengo mucha suerte. Pido disculpas por la naturaleza abierta de esta pregunta.

stat_novice
fuente
¿Qué versión de PostGIS está ejecutando? ¿Es la versión empaquetada con 12.04 o la has actualizado? Si puedes, quieres ejecutar el último PostGIS, 2.1.1. El Geocodificador TIGER que viene con esa versión es mucho mejor que la versión que funciona con PostGIS 1.5.
HeyOverThere
De hecho, estoy usando 2.1.1. Tengo todas las extensiones necesarias habilitadas (fuzzystrmatch, postgis, postgi_tiger_geocoder, postgis_topology) y el esquema de tigre. Ahora, solo necesito subir datos del censo nacional.
stat_novice

Respuestas:

12

Como tienes PostGIS 2.1.1, estás por delante del juego. Asegúrese de tener instalado wget, es lo que descargará los datos del sitio FTP del Censo.

Cree un directorio gisdata con:

sudo mkdir /gisdata

Use los comandos chown y chgrp para cambiar la propiedad y el grupo de / gisdata para que su usuario normal pueda leer y escribir en / gisdata.

Inicie psql y conéctese a su base de datos. Una vez en psql use

\a

y

\t

para que los resultados de la consulta tengan el formato correcto.

¡Olvidé esta parte inicialmente! Antes de que pueda usar el script del cargador, necesita hacer un poco de limpieza de la casa. Lo primero es asegurarse de que el esquema de tigre esté en su ruta de búsqueda . A continuación, verifique los valores en tiger.loader_platform y tiger.loader_variables. Estas dos tablas controlan variables para el script del cargador como su nombre de usuario y contraseña. Usualmente solo los edito en PGAdmin. A continuación, deberá ejecutar una secuencia de comandos que complete las tablas de búsqueda y otros elementos de bondad de fondo que necesitará el geocodificador. Primero configure un archivo de salida:

\o nation_generator.sh

entonces corre:

SELECT loader_generate_nation_script('sh'); 

Luego salga de psql y ejecute el archivo:

sh ./nation_generator.sh

Luego vuelva a psql y escriba:

\o loader_script.sh

para enviar los resultados de la consulta a un archivo de texto llamado loader_script.sql. Luego ejecute la función que genera el script del cargador:

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

Esta es la consulta cuya salida se redirigirá a loader_script.sql. Reemplace 'DC' y 'RI' con las abreviaturas de dos letras de los estados que desea descargar.

Salga de psql y ejecute el script con este comando:

sh ./loader_script.sh

Esto descargará los archivos para los estados que seleccione, los descomprimirá e importará los datos a su base de datos PostGIS.

Hola, allá
fuente
HeyOverThere: Gracias por la respuesta detallada. Mientras está en psql, escribir "\ o loader_script.sql" da como resultado una declaración de permiso denegado. ¿Alguna idea del por qué? Estoy conectado como usuario postgres.
stat_novice
¡Lo siento! Olvidé que la mayoría de las personas no usan sus cuentas de usuario normales para ejecutar psql. Deberá guardar el script en algún lugar donde su usuario de postgres tenga permiso de escritura. Lo más fácil es usar \ o /tmp/loader_script.sql que guardará el archivo en / tmp. Luego, para ejecutar el archivo, se sh ./tmp/loader_script.sql.
HeyOverThere
¡Eso funciono! Sin embargo, ahora recibo este mensaje de error "Ninguna función coincide con el nombre y los tipos de argumento. Es posible que deba agregar conversiones de tipo explícito" al ejecutar la consulta para el script del cargador. Además, si recuerdo correctamente, tendré que editar ese archivo, ¿correcto para agregar mi nombre de usuario y db?
stat_novice
Doble lo siento! ¡También me olvidé de eso! Lo primero que debe verificar será la ruta de búsqueda de su base de datos, asegúrese de que el esquema de tigre esté allí. La segunda cosa a verificar es que en el esquema de tigre hay tablas, tiger.loader_platform y tiger.loader_variables que le dicen a los scripts su contraseña y otra información. Use PGAdmin para editar esos. Finalmente, antes de ejecutar el script del cargador, ejecute la función loader_generate_nation para configurar todas las tablas que necesita el geocodificador. Editaré mi respuesta para completar estos espacios en blanco.
HeyOverThere
HeyOverThere: Eres un dios entre hombres / mujeres. Esto casi funciona. Tanto los scripts de la nación como los del estado se ejecutan y están enviando por FTP el sitio web del censo y parecen estar recuperando archivos, pero después de que ambos completan emiten algunas de las siguientes declaraciones de error: "loader_script.sql: 408: loader_script.sql: / usr / pgsql- 9.0 / bin / psql: no encontrado ". Además, no hay datos en el esquema tiger_data. ¿Necesito editar los archivos, específicamente esta línea: "export PGBIN = / usr / pgsql-9.0 / bin"?
stat_novice
0

Hay múltiples respuestas en este sitio relacionadas con la instalación de PostGIS. Aquí hay una , y la solución de Nick Gauthier también es excelente. Para reiterar el amplio consejo que contiene ...

La instalación de PostGIS se ha vuelto mucho más fácil en Ubuntu 12.04 y versiones posteriores. Generalmente hay dos formas de hacerlo: instalación desde un PPA y construcción desde la fuente. Lo que sigue son scripts generales de shell que uso para cada caso.

Instalación desde un PPA ... Yo uso el 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;"

Construyendo desde la fuente ... Esto supone PostGIS 2.1 y PostgreSQL 9.1 pero podría ser cualquier versión reciente de ambos; cambiar según sea necesario.

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;"

Notarás un tema entre los dos; aún es necesario crear una base de datos de plantilla y llenar la spatial_ref_systabla.

En cuanto a la configuración con TIGER , siga las instrucciones para cargar los datos de TIGER en la documentación de PostGIS 2.x, Capítulo 2 .

Arturo
fuente
Arthur: Tengo instalado PostGIS 2.1 y postgis.sql no existe en el siguiente directorio: /usr/share/postgresql/9.3/contrib/postgis-2.1
stat_novice