2016-03-23 15 views
1

Ich erzeuge ein Shapefile mit den GDAL und formschönen Bibliotheken in Python. Es gibt ein Problem mit der Projektion. Wenn ich das resultierende Shapefile in ArcMap importiere, ist keine Projektion mit der Datei verknüpft. Wie kann ich das korrigieren oder wie kann ich die resultierende Ebene projizieren?Shapefile erstellt mit GDAL hält keine Projektion

Hier ist mein Code:

output_shp = "circle.shp" 
data_projection = 26919 

[...] 

srs = osr.SpatialReference() 
srs.ImportFromEPSG(data_projection) 

# output of srs: <osgeo.osr.SpatialReference; proxy of <Swig Object of type 'OSRSpatialReferenceShadow *' at 0x00000000099FF5A0> > 

driver = ogr.GetDriverByName('Esri Shapefile') 
ds = driver.CreateDataSource(output_shp) 
layer = ds.CreateLayer(layer_name, srs, ogr.wkbPolygon) 
layer.CreateField(ogr.FieldDefn('id',ogr.OFTInteger)) 
defn = layer.GetLayerDefn() 

for x in range(0,length): 
    feat = ogr.Feature(defn) 
    feat.SetField('id', x+1) 

    geome = ogr.CreateGeometryFromWkt(geom_out[x].wkt) 
    feat.SetGeometry(geome) 
    layer.CreateFeature(feat) 

Antwort

0

Ok. Ich habe die Lösung gefunden thanks to MikeT answer in this post.

Das Problem war, dass meine Umgebungsvariable nicht korrekt festgelegt wurde. Daher war das SRS, das ich zu meiner Schicht hinzufügte, leer, weil es es in dem Verzeichnis nicht finden konnte.

Eine kleine Untersuchung, um zu sehen, wenn die Einfuhr (dank MikeT) versagt:

from osgeo import osr 
testSR = osr.SpatialReference() 
res = testSR.ImportFromEPSG(4326) 
if res != 0: 
    raise RuntimeError(repr(res) + ': could not import from EPSG') 
print testSR.ExportToPrettyWkt()