У меня есть простая программа, которая обрабатывает точки из слоя 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
Что может быть причиной этой проблемы?