Бештар

Чӣ тавр GeomSHP-ро ба WKB табдил додан мумкин аст


Ман ба шакли геометрии шахсӣ, бо номи site_locations.shp, як шакли shapefile ворид кардам. Ҳоло ман кӯшиш мекунам, ки бо истифода аз SQL маълумотро аз пойгоҳи додаҳо барорам:

dbpath = os.path.normpath (r '… /geodata/site_locations.mdb') #
msacon = pypyodbc.win_connect_mdb (dbpath) #
msacur = msacon.cursor () #
sqlstr = "Интихоби идентификатсия, шакл, қайдҳо аз сайти_маконҳо" #
msacur.execute (sqlstr) #
сатрҳо = msacur.fetchall () #

Ман инро бо пойгоҳи додаи sqlite низ ба ҷо овардам ва геометрияро дар формати ба ном маъруфи дуӣ (WKB) гирифтам. Ман тавонистам он WKB-ро ба матни маъруф (WKT) ва сипас ба ашёе табдил диҳам, ки арзишҳои x ва y доранд. Эҳтимол майдони Shape дорои маълумот дар формати WKB нест, балки дар формати GeomSHP мебошад. Оё дар Python роҳи табдил додани ин GeomSHP ба WKB вуҷуд дорад ё ба ин монанд? Ман мефаҳмам, ки баъзе пойгоҳҳои фазоии дорои функсия бо номи CGeomWKB мебошанд. Оё татбиқи Python ҳаст?


GDAL / OGR -ро барои иҷрои SQL дар шакли shapefile ё ESRI Personal GeoDatabase (PGeo) истифода баред.

аз osgeo воридоти ogr.UseExceptions () ds = ogr.Open (path_to_data_source) lyr = ds.ExecuteSQL ('SELECT ID, Notes FROM site_locations') for idx in range (lyr.GetFeatureCount ()): feat = lyr.GetFeature ( idx) geom = feat.

Инчунин дигар форматҳои содирот вуҷуд доранд, ба монанди WKT, GML, KML ва GeoJSON.


Хуб, ман ба shapefile.py назар андохтам ва тавонистам ба ин қарор оям:

from struct import unpack points = [] msacur.execute ("SELECT ID, Shape FROM site_locations") # Shield Field дорои маълумотҳои дутарафа дар формати GeomSHP - барои табдил додани сатрҳо = msacur.fetchall ()
барои сатр дар сатрҳо: # Навъи шакли shapeType = unpack (") -ро пайдо кунед

Саломат бошед!