我使用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)
答案 0 :(得分:0)
确定。我找到了解决方案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()