Instale os dados PostGIS e TIGER no Ubuntu 12.04

9

Alguém poderia escrever um breve guia emburrado, embora idiota, para instalar o postgis e carregar dados nacionais do Tiger no ubuntu? Eu tentei alguns guias, a saber, http://wiki.bitnami.com/@api/deki/pages/302/pdf , mas não estou tendo muita sorte. Peço desculpas pela natureza aberta desta questão.

stat_novice
fonte
Qual versão do PostGIS você está executando? É a versão do pacote 12.04 ou você atualizou? Se você quiser executar o PostGIS mais recente, 2.1.1. O geocoder TIGER que acompanha essa versão é muito melhor que a versão que funciona com o PostGIS 1.5.
precisa saber é o seguinte
De fato, estou usando o 2.1.1. Eu tenho todas as extensões necessárias ativadas (fuzzystrmatch, postgis, postgi_tiger_geocoder, postgis_topology) e o esquema do tigre. Agora, só preciso fazer o upload dos dados do censo nacional.
stat_novice

Respostas:

12

Como você possui o PostGIS 2.1.1, está à frente do jogo. Certifique-se de ter o wget instalado, é o que fará o download dos dados do site FTP do Censo.

Crie um diretório gisdata com:

sudo mkdir /gisdata

Use os comandos chown e chgrp para alterar a propriedade e o grupo de / gisdata para que seu usuário normal possa ler e gravar em / gisdata.

Inicie o psql e conecte-se ao seu banco de dados. Uma vez no uso do psql

\a

e

\t

para que os resultados da consulta sejam formatados corretamente.

Esqueci essa parte inicialmente! Antes de poder usar o script do carregador, você precisa fazer uma limpeza na casa. A primeira coisa é garantir que o esquema do tigre esteja no seu caminho de pesquisa . Em seguida, verifique os valores em tiger.loader_platform e tiger.loader_variables. Essas duas tabelas controlam variáveis ​​para o script do carregador, como seu nome de usuário e senha. Normalmente eu apenas os edito no PGAdmin. Em seguida, você precisará executar um script que preencha as tabelas de pesquisa e outros bits de qualidade de segundo plano que o geocoder precisará. Primeiro defina um arquivo de saída:

\o nation_generator.sh

então corra:

SELECT loader_generate_nation_script('sh'); 

Então saia do psql e execute o arquivo:

sh ./nation_generator.sh

Então volte para o psql e digite:

\o loader_script.sh

para gerar os resultados da consulta em um arquivo de texto chamado loader_script.sql. Em seguida, execute a função que gera o script do carregador:

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

Essa é a consulta cuja saída será redirecionada para loader_script.sql. Substitua 'DC' e 'RI' pelas duas abreviações de letras dos estados que você deseja baixar.

Saia do psql e execute o script com este comando:

sh ./loader_script.sh

Isso fará o download dos arquivos para o (s) estado (s) selecionado (s), descompacte-o e importe os dados para o banco de dados PostGIS.

HeyOverThere
fonte
HeyOverThere: Obrigado pela resposta detalhada. Enquanto estiver no psql, digitar "\ o loader_script.sql" resulta em uma declaração de permissão negada. Alguma idéia do porquê? Estou logado como usuário postgres.
stat_novice
Desculpa! Esqueci que a maioria das pessoas não usa suas contas de usuário normais para executar o psql. Você precisará salvar o script em algum lugar em que o usuário do postgres tenha permissão de gravação. O mais fácil é usar \ o /tmp/loader_script.sql, que salvará o arquivo em / tmp. Em seguida, para executar o arquivo, será sh ./tmp/loader_script.sql.
precisa saber é o seguinte
Isso funcionou! No entanto, agora estou recebendo esta mensagem de erro "Nenhuma função corresponde ao nome e aos tipos de argumento. Talvez seja necessário adicionar conversões de tipo explícitas". ao executar a consulta para o script do carregador. Além disso, se bem me lembro, vou ter que editar esse arquivo, certo para adicionar meu nome de usuário e db?
stat_novice
Desculpe muito! Eu também esqueci disso! A primeira coisa a verificar será o caminho de pesquisa do seu banco de dados, verifique se o esquema do tigre está lá. A segunda coisa a verificar é que no esquema tiger existem tabelas tiger.loader_platform e tiger.loader_variables que informam aos scripts sua senha e outras informações. Use o PGAdmin para editá-los. Por fim, antes de executar o script do carregador, execute a função loader_generate_nation para configurar todas as tabelas que o geocoder precisa. Vou editar minha resposta para preencher esses espaços em branco.
precisa saber é o seguinte
HeyOverThere: Você é um deus entre homens / mulheres. Isso quase funciona. Os scripts de nação e estado são executados e eles estão enviando um FTP pelo site do censo e parecem estar recuperando arquivos, mas depois de concluídos, eles emitem algumas das seguintes instruções de erro: "loader_script.sql: 408: loader_script.sql: / usr / pgsql- 9.0 / bin / psql: não encontrado ". Além disso, não há dados no esquema tiger_data. Preciso editar os arquivos, especificamente esta linha: "exportar PGBIN = / usr / pgsql-9.0 / bin"?
stat_novice
0

Existem várias respostas neste site relacionadas à instalação do PostGIS. Aqui está uma , e a solução de Nick Gauthier também é excelente. Para reiterar os amplos conselhos contidos nele ...

A instalação do PostGIS ficou muito mais fácil no Ubuntu 12.04 e posterior. Geralmente, existem duas maneiras de fazer isso: instalação a partir de um PPA e construção a partir da fonte. O que segue são scripts shell gerais que eu uso para cada caso.

Instalando a partir de um PPA ... Eu uso o 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;"

Construindo a partir do código-fonte ... Isso assume o PostGIS 2.1 e o PostgreSQL 9.1, mas pode ser qualquer versão recente de ambos; mude conforme necessário.

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

Você notará um tema entre os dois; ainda é necessário criar um banco de dados de modelos e preencher a spatial_ref_systabela.

Quanto à configuração do TIGER , siga as instruções para carregar dados do TIGER na documentação do PostGIS 2.x, capítulo 2 .

Arthur
fonte
Arthur: Eu tenho PostGIS 2.1 instalado e postgis.sql não existe no seguinte diretório: /usr/share/postgresql/9.3/contrib/postgis-2.1
stat_novice