我有一个简单的程序来处理来自 Geopackage 层的点。在第一次尝试中,我将文件访问封装到一个函数中:
from osgeo import ogr
pointsFile = "points.gpkg"
def getPoints():
driver = ogr.GetDriverByName("GPKG")
dataSource = driver.Open(pointsFile, 0)
layer = dataSource.GetLayer(0)
print("Returning layer")
return layer
def main():
layer = getPoints()
print("Number of points to process: ", layer.GetFeatureCount())
if __name__ == '__main__': main()
当它返回层对象时,它会因分段错误而失败:
$ python3 testReturn.py
Returning layer
Segmentation fault (core dumped)
但是,通过内部文件访问main
:
from osgeo import ogr
pointsFile = "points.gpkg"
def main():
driver = ogr.GetDriverByName("GPKG")
dataSource = driver.Open(pointsFile, 0)
layer = dataSource.GetLayer(0)
print("Number of points to process: ", layer.GetFeatureCount())
if __name__ == '__main__': main()
程序按预期运行:
$ python3 testDirect.py
Number of points to process: 21872
什么可能导致此问题?