Suite

Convertir une table PostGIS en Shapefile en Python ?

Convertir une table PostGIS en Shapefile en Python ?


Je souhaite convertir une table PostGIS en un fichier de formes (sans utiliser pgsql2shp).

Afin de créer une géométrie dans le fichier de formes, je dois donner les Xmin, Ymin et Xmax, Ymax, et la géométrie que j'ai dans ma table PostGIS est de forme irrégulière (je peux obtenir l'extérieur en utilisant le cadre de délimitation mais cela inclura une zone supplémentaire plus que ma zone d'intérêt). Existe-t-il une méthode par laquelle je peux effectuer la tâche?

Je veux faire la chose par programme et en utilisant Python.


Si vous voulez le faire par programmation avec Python, GDAL/OGR est probablement le meilleur moyen de le faire. Regardez l'exemple de code qui copie la table de PostgreSQL dans le fichier SHP. L'exemple n'est pas parfait mais vous pouvez facilement le modifier pour l'adapter à vos besoins.

import os os.environ['PATH'] = "c:Program FilesGDALin" + ';' + os.environ['PATH'] os.environ['GDAL_DRIVER_PATH'] = "c:Program FilesGDALingdalplugins-facultatif" os.environ['GDAL_DATA'] = " c:Program FilesGDALingdal-data" import ogr conn=ogr.Open("PG: host=192.168.5.3 dbname=some_database user=postgres password=xxxx") si conn est None : print 'Impossible d'ouvrir une base de données ou GDAL n'est pas correctement installé !' sys.exit(1) output = "d:points.shp" # Définition du schéma du fichier SHP out_driver = ogr.GetDriverByName( 'ESRI Shapefile' ) out_ds = out_driver.CreateDataSource(output) out_srs = Aucun out_layer = out_ds.CreateLayer ("point", out_srs, ogr.wkbPoint) fd = ogr.FieldDefn('name',ogr.OFTString) out_layer.CreateField(fd) layer = conn.GetLayerByName("point_data") #layer = conn.ExecuteSQL(sql) feat = layer.GetNextFeature() alors que feat n'est pas None : featDef = ogr.Feature(out_layer.GetLayerDefn()) featDef.SetGeometry(feat.GetGeometryRef()) featDef.SetField('name',feat.TITLE) out_layer.CreateFeature (featDef) feat.Destroy() feat = layer.GetNextFeature() conn.Destroy() out_ds.Destroy()

Si votre environnement de programmation est Windows, vous pouvez télécharger GDAL/OGR à partir d'ici. Quelques bons matériaux de départ que vous pouvez trouver ici. J'espère que ça aide.


Je peux vous conseiller de jeter un oeil à la bibliothèque GDAL/OGR : http://www.gdal.org/ogr/index.html


Voir la vidéo: Postgresql: Create Postgis database and import shapefiles.