¿Cómo puedo obtener un shapefile de una consulta postgis?

44

Mis datos están en una base de datos PostGIS. Me gustaría generar un shapefile a partir de una consulta. ¿Cómo puedo hacer eso?

rudivonstaden
fuente

Respuestas:

86

La forma recomendada de hacerlo es usar la utilidad pgsql2shp , que debe instalarse con PostGIS. Tenga en cuenta que debe incluir la columna de geometría en la consulta.

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

Ejemplo (crea qds_cnt.shpen el directorio actual):

$ 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].

Si desea guardar una tabla completa como un archivo shape, simplemente use el nombre de la tabla como consulta.

También puede usar la utilidad ogr2ogr , pero tiene más dependencias, por lo que no debería ser la primera opción. Si está determinado, el comando equivalente sería:

$ 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'"

Ver también

rudivonstaden
fuente
¿Es posible utilizar pgsql2shppara exportar una vista a un shapefile?
Ricardo Barros Lourenço
8

No tengo suficientes puntos de reputación para comentar sobre la respuesta de rudivonstaden, pero agregaría que escribir comandos sql en letras mayúsculas es importante para pgsql2shp.

Por ejemplo, esto no funcionará:

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

mientras que esto funcionará:

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

Dependiendo de la pieza de datos que desee exportar, otra forma es usar qgis o un producto similar: allí abre una conexión de postgis y selecciona los datos que le interesan; entonces guardas como shapefile ...

Si desea exportar automáticamente y / o grandes partes de datos, rudivonstaden le dio las soluciones adecuadas.

Un nombre
fuente