Installer les données PostGIS et TIGER dans Ubuntu 12.04


9

Quelqu'un pourrait-il écrire un bref guide idiot pour installer les postgis et charger les données nationales de Tiger sur Ubuntu? J'ai essayé quelques guides, à savoir http://wiki.bitnami.com/@api/deki/pages/302/pdf , mais je n'ai pas beaucoup de chance. Je m'excuse de la nature ouverte de cette question.


Quelle version de PostGIS utilisez-vous? Est-ce la version emballée avec 12.04 ou avez-vous mis à niveau? Si vous le souhaitez, vous souhaitez exécuter la dernière version de PostGIS, 2.1.1. Le géocodeur TIGER fourni avec cette version est bien meilleur que la version qui fonctionne avec PostGIS 1.5.
HeyOverThere du

J'utilise en effet 2.1.1. J'ai toutes les extensions nécessaires activées (fuzzystrmatch, postgis, postgi_tiger_geocoder, postgis_topology) et le schéma tiger. Maintenant, j'ai juste besoin de télécharger les données du recensement national.
stat_novice

Réponses:


12

Depuis que vous avez PostGIS 2.1.1, vous êtes en avance sur le jeu. Assurez-vous que wget est installé, c'est ce qui va télécharger les données du site FTP du recensement.

Créez un répertoire gisdata avec:

sudo mkdir /gisdata

Utilisez les commandes chown et chgrp pour modifier la propriété et le groupe de / gisdata afin que votre utilisateur normal puisse lire et écrire dans / gisdata.

Démarrez psql et connectez-vous à votre base de données. Une fois en utilisation psql

\a

et

\t

afin que les résultats de la requête soient formatés correctement.

J'ai oublié cette partie au départ! Avant de pouvoir utiliser le script du chargeur, vous devez faire un peu de ménage. La première chose est de vous assurer que le schéma du tigre est dans votre chemin de recherche . Ensuite, vérifiez les valeurs dans tiger.loader_platform et tiger.loader_variables. Ces deux tables contrôlent les variables du script du chargeur comme votre nom d'utilisateur et votre mot de passe. Je les édite généralement dans PGAdmin. Ensuite, vous devrez exécuter un script qui remplit les tables de recherche et d'autres éléments de fond dont le géocodeur aura besoin. Définissez d'abord un fichier de sortie:

\o nation_generator.sh

puis lancez:

SELECT loader_generate_nation_script('sh'); 

Quittez ensuite psql et exécutez le fichier:

sh ./nation_generator.sh

Revenez ensuite dans psql et tapez:

\o loader_script.sh

pour afficher les résultats de la requête dans un fichier texte appelé loader_script.sql. Exécutez ensuite la fonction qui génère le script du chargeur:

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

Il s'agit de la requête dont la sortie sera redirigée vers loader_script.sql. Remplacez «DC» et «RI» par les abréviations à deux lettres des états que vous souhaitez télécharger.

Quittez psql et exécutez le script avec cette commande:

sh ./loader_script.sh

Cela téléchargera les fichiers pour le ou les états que vous sélectionnez, décompressez-les et importez les données dans votre base de données PostGIS.


HeyOverThere: Merci pour la réponse détaillée. En psql, la saisie de "\ o loader_script.sql" entraîne une déclaration d'autorisation refusée. Une idée de pourquoi? Je suis connecté en tant qu'utilisateur postgres.
stat_novice

Désolé! J'ai oublié que la plupart des gens n'utilisent pas leur compte d'utilisateur normal pour exécuter psql. Vous devrez enregistrer le script quelque part où votre utilisateur postgres dispose d'une autorisation d'écriture. Le plus simple est d'utiliser \ o /tmp/loader_script.sql qui enregistrera le fichier dans / tmp. Ensuite, pour exécuter le fichier, ce sera sh ./tmp/loader_script.sql.
HeyOverThere du

Ça a marché! Cependant, maintenant je reçois ce message d'erreur "Aucune fonction ne correspond au nom et aux types d'arguments donnés. Vous devrez peut-être ajouter des transtypages de types explicites." lors de l'exécution de la requête pour le script du chargeur. Aussi, si je me souviens bien, je vais devoir éditer ce fichier, droit d'ajouter mon nom d'utilisateur et db?
stat_novice

Double désolé! J'ai oublié ça aussi! La première chose à vérifier sera le chemin de recherche de votre base de données, assurez-vous que le schéma du tigre est là. La deuxième chose à vérifier est dans le schéma tiger il y a des tables, tiger.loader_platform et tiger.loader_variables qui indiquent à vos scripts votre mot de passe et d'autres informations. Utilisez PGAdmin pour les modifier. Enfin, avant d'exécuter votre script de chargeur, exécutez la fonction loader_generate_nation pour configurer toutes les tables dont le géocodeur a besoin. Je vais modifier ma réponse pour remplir ces blancs.
HeyOverThere du

HeyOverThere: Vous êtes un dieu parmi les hommes / femmes. Cela fonctionne presque. Les scripts national et national s'exécutent et ils envoient par FTP le site Web du recensement et semblent récupérer les fichiers, mais une fois les deux terminés, ils émettent certaines des déclarations d'erreur suivantes: "loader_script.sql: 408: loader_script.sql: / usr / pgsql- 9.0 / bin / psql: introuvable ". De plus, il n'y a pas de données dans le schéma tiger_data. Dois-je modifier les fichiers, en particulier cette ligne: "export PGBIN = / usr / pgsql-9.0 / bin"?
stat_novice

0

Il existe plusieurs réponses sur ce site concernant l'installation de PostGIS. En voici un , et la solution de Nick Gauthier est également excellente. Pour réitérer les nombreux conseils qu'il contient ...

L'installation de PostGIS est devenue beaucoup plus facile dans Ubuntu 12.04 et versions ultérieures. Il y a généralement deux façons de procéder: l'installation à partir d'un PPA et la construction à partir de la source. Ce qui suit sont des scripts shell généraux que j'utilise pour chaque cas.

Installation à partir d'un PPA ... J'utilise le 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;"

Construire à partir de la source ... Cela suppose PostGIS 2.1 et PostgreSQL 9.1 mais pourrait être n'importe quelle version récente des deux; changer si nécessaire.

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

Vous remarquerez un thème entre les deux; il est toujours nécessaire de créer une base de données de modèles et de remplir la spatial_ref_systable.

En ce qui concerne la configuration avec TIGER , suivez les instructions de chargement des données TIGER dans la documentation PostGIS 2.x, chapitre 2 .


Arthur: J'ai PostGIS 2.1 installé et postgis.sql n'existe pas dans le répertoire suivant: /usr/share/postgresql/9.3/contrib/postgis-2.1
stat_novice
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.