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?
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?
Respuestas:
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
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'"
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.
pgsql2shp
para exportar una vista a un shapefile?