Adicionando shapefiles ao banco de dados PostGIS

30

Consegui criar um banco de dados Postgresql e, em seguida, executei,

createlang plpgsql geospecies
psql -d geospecies -f postgis.sql
psql -d geospecies -f spatial_ref_sys.sql

Então agora posso importar diretamente os shapefiles? Esse seria o comando certo,

ogr2ogr -f PostgreSQL PG:"host=server_ip user=username dbname=dbname password=password" yourshapefile.shp;

Não sei como estruturar o banco de dados, não precisaria de uma tabela? Acabarei precisando adicionar um monte de shapefiles e, portanto, existe um comando para fazer isso?

Sam007
fonte

Respostas:

49

Tente shp2pgsql. A sintaxe básica é como:

shp2pgsql -s SRID SHAPEFILE.shp SCHEMA.TABLE | psql -h HOST -d DATABASE -U USUÁRIO

Eu sempre acho útil esta cheatsheet de http://www.bostongis.com . Se você rolar um pouco para baixo, encontrará exemplos simples de como carregar dados.

Espero que ajude.

Stophface
fonte
Mas eu não tenho mesa. Que tabela e esquema devo criar?
Sam007 21/11/2012
1
Se você der uma olhada na folha de dicas , (-d|-a|-c|-p)são os sinalizadores para as tabelas. Se você não especificou nada, ele escolherá -cpor padrão (cria uma nova tabela e a preenche). Quanto a SRID, eu não sei - isso depende da projeção dos seus dados. Se você possui o .projarquivo que acompanha os shapefiles, pode verificar sua projeção em prj2epsg.org/search . Espero que ajude ..
obrigado pela resposta @Haziq. Eu só estou confuso quanto a onde -cvem? Tentei, shp2pgsql -s 4326 /var/www/geo/shapefile/PimaPine.shp -c public.Pima | psql -h localhost -d geospecies -U smaranhmas estou recebendo um erro dpaste.com/834563 #
Sam007
Eu acho que o -cdeve ir depois -s 4326e antes /var/www/geo/shapefile/PimaPine.shp.. A sintaxe é shp2pgsql [OPTIONS] shapefile [schema.]table. Alterar a posição dos -cefeitos estáticos com erro?
Ainda não é o mesmo erro. Também pode estar enfrentando o erro ROLLBACK, gis.stackexchange.com/questions/41807/… #
Sam007
4

Ahh! Ainda não posso comentar!

O que Haziq postou seria a maneira correta da linha de comando para fazê-lo, Sam.

TABLE é exatamente o que você deseja nomear e seria o nome a ser usado ao chamá-lo de uma consulta; a tabela será gerada na importação.

Se você se tornar preguiçoso como eu, eu apenas uso o incrível SPIT (Shapefile para PostGIS Import Tool) disponível como um plugin QGIS para importar todos os meus shapefiles agora. Supondo que você esteja usando o QuantumGIS como disse que estava usando o OpenGeo anteriormente.

RomaH
fonte
1
o problema é que eu não tenho uma GUI. Estou trabalhando no Ubuntu Server remotamente.
Sam007
O SPIT funcionará remotamente, eu faço o tempo todo do trabalho para o meu banco de dados em casa, você só precisa preencher as informações de conexão como fez para entrar no psql.
RomaH 21/11/12
Como faço para executá-lo
Sam007 21/11
Bem, eu estava assumindo que você está pegando arquivos shp locais e os colocando em seu servidor remoto. Você iniciaria o QGIS e usaria o plug-in SPIT na sua máquina local, conectaria o servidor remoto e faria o upload.
RomaH 22/11/12
Todo o meu arquivo shp estão no servidor
Sam007