Como posso obter um shapefile de uma consulta postgis?

44

Meus dados estão em um banco de dados PostGIS. Eu gostaria de gerar um shapefile a partir de uma consulta. Como eu posso fazer isso?

rudivonstaden
fonte

Respostas:

86

A maneira recomendada de fazer isso é usar o utilitário pgsql2shp , que deve ser instalado com o PostGIS. Observe que você deve incluir a coluna de geometria na consulta.

$ pgsql2shp -f <path to output shapefile> -h <hostname> -u <username> -P <password> databasename "<query>"

Exemplo (criado qds_cnt.shpno diretório atual):

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"

Initializing... 
Done (postgis major version: 2).
Output shape: Polygon
Dumping: XXXXXXXXXXXXXXXXXXXX [1947 rows].

Se você deseja salvar uma tabela inteira como um shapefile, use o nome da tabela como consulta.

Você também pode usar o utilitário ogr2ogr , mas ele tem mais dependências, portanto, não deve ser a primeira opção. Se você estiver determinado, o comando equivalente seria:

$ ogr2ogr -f "ESRI Shapefile" qds_cnt.shp PG:"host=localhost user=postgres dbname=gisdb password=password" -sql "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"

Veja também

rudivonstaden
fonte
É possível usar pgsql2shppara exportar uma visualização para um shapefile?
Ricardo Barros Lourenço
8

Não tenho pontos de reputação suficientes para comentar a resposta de rudivonstaden, mas acrescentaria que escrever comandos sql em letras maiúsculas é importante para pgsql2shp.

Por exemplo, isso não funcionará:

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "Select sp_count, geom from grid50_rsa where province = 'Gauteng'"

considerando que isso funcionará:

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"
pandorabob
fonte
7

Dependendo da parte dos dados que você deseja exportar, outra maneira é usar o qgis ou um produto similar: lá você abre uma conexão do postgis e seleciona os dados nos quais está interessado; então você salva como shapefile ...

Se você deseja exportar automaticamente e / ou grandes partes de dados, a rudivonstaden forneceu soluções apropriadas!

Um nome
fonte