The driver and datasource are going out of scope. The former can be fixed by using ogr.Open instead of driver.Open The latter can be fixed by returning it from the function. A revised version of your code would look like:
# import modules from osgeo import ogr def openShapeLine(shapefile): #Ouverture du shapefile avec ogr datasource = ogr.Open(shapefile) layer = datasource.GetLayer() return (datasource, layer) ds, couche = openShapeLine('/data/axe.shp') print couche.GetName() On 5 August 2010 17:23, Ludovic Granjon <ludovic.gran...@u-bourgogne.fr>wrote: > Hello > > I'm trying to develop with ogr in python. I'm on ubuntu 10.4 and I use gdal > 1.7 > When I try to get back a layer object from a function, I have the following > message when I do python monscript.py : > "Erreur de segmentation" > > This is my code : > > ----------------------- > # import modules > from osgeo import ogr > > def openShapeLine(shapefile): > #Ouverture du shapefile avec ogr > driver = ogr.GetDriverByName("ESRI Shapefile") > datasource = driver.Open(shapefile) > layer = datasource.GetLayer() > return (layer) > > couche = openShapeLine('/data/axe.shp') > > print couche.GetName() > ------------------------ > > If I do a "print layer.GetName()" inside the openShapeLine function, > there's no problem ... > > Have you any idea ? > > Thanks all > > _______________________________________________ > gdal-dev mailing list > gdal-dev@lists.osgeo.org > http://lists.osgeo.org/mailman/listinfo/gdal-dev >
_______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/gdal-dev