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?
44
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.shp
en 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
pgsql2shp
para exportar una vista a un shapefile?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á:
mientras que esto funcionará:
fuente
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.
fuente