Suite

Comment convertir GeomSHP en WKB

Comment convertir GeomSHP en WKB


J'ai importé un fichier de formes de points appelé site_locations.shp dans une géodatabase personnelle. Maintenant, j'essaie de récupérer les données de la base de données en utilisant SQL :

dbpath = os.path.normpath(r'… /geodata/site_locations.mdb') #
msacon = pypyodbc.win_connect_mdb(dbpath) #
msacur = msacon.cursor() #
sqlstr = "SELECT ID, Forme, Notes FROM site_locations" #
msacur.execute(sqlstr) #
lignes = msacur.fetchall() #

J'ai fait de même avec une base de données sqlite et j'ai obtenu la géométrie au format binaire dit bien connu (WKB). J'ai pu convertir ce WKB en texte bien connu (WKT), puis en objets avec des valeurs x et y. Apparemment, le champ Shape ne contient pas de données au format WKB, mais au format GeomSHP. Existe-t-il un moyen en Python de convertir ce GeomSHP en WKB ou autre ? Je comprends que certaines bases de données spatiales ont une fonction appelée CGeomWKB. Existe-t-il une implémentation Python ?


Utilisez GDAL/OGR pour exécuter SQL soit sur le fichier de formes, soit sur la géodatabase personnelle ESRI (PGeo).

from osgeo import ogr ogr.UseExceptions() ds = ogr.Open(path_to_data_source) lyr = ds.ExecuteSQL('SELECT ID, Notes FROM site_locations') pour idx in range(lyr.GetFeatureCount()): feat = lyr.GetFeature( idx) geom = feat.GetGeometryRef() wkb = geom.ExportToWkb() # ici feat = geom = None ds = lyr = None # fermer l'ensemble de données

Il existe également d'autres formats d'exportation, tels que WKT, GML, KML et GeoJSON.


Ok, j'ai jeté un œil à shapefile.py et j'ai pu arriver à cette solution :

from struct import unpack points = [] msacur.execute("SELECT ID, Shape FROM site_locations") # La forme du champ contient des données binaires au format GeomSHP - à convertir lignes = msacur.fetchall()
for row in rows : # Découvrez le type de forme shapeType = unpack("

Acclamations!


Voir la vidéo: WKB BouwGarant