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?
44
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.shp
no 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
pgsql2shp
para exportar uma visualização para um shapefile?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á:
considerando que isso funcionará:
fonte
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!
fonte