2016-03-23 5 views
1

私はGDALと整形式ライブラリをPythonで使用してシェイプファイルを生成しています。投影に問題があります。結果のシェープファイルをArcMapで読み込むと、そのファイルに関連付けられた投影がありません。どのように修正することができますか、または結果のレイヤーをどのように投影できますか?GDALで作成されたシェイプファイルには投影がありません

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) 

答えて

0

OK:

は、ここに私のコードです。解決策を見つけました。thanks to MikeT answer in this post.

問題は、私のGDAL_DATA環境変数が正しく設定されていないということでした。したがって、自分のレイヤーに追加していたSRSは、ディレクトリ内で見つからなかったため空です。

輸入は(MikeTのおかげで)失敗したかどうかを確認するために少し検診:

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() 
関連する問題