2016-03-23 11 views
1

Я генерирую шейп-файл с использованием GDAL и стройных библиотек в Python. Проблема с проекцией возникает, когда я импортирую полученный шейп-файл в ArcMap, не существует проекции, связанной с файлом. Как я могу это исправить или как я могу спроецировать полученный слой?Файл Shapefile, созданный с помощью 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()