1

我正在使用 Python 中的 GDAL 和 shapely 库生成一个 shapefile。投影存在问题,当我在 ArcMap 中导入生成的 shapefile 时,没有与该文件关联的投影。我该如何纠正,或者如何投影结果层?

这是我的代码:

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)
4

1 回答 1

0

好的。感谢 MikeT 在这篇文章中的回答,我找到了解决方案。

问题是我的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()
于 2016-03-24T13:00:05.877 回答