UnboundLocalError: local variable 'x' referenced before assignment

gdal, python

Solution

The error message states that the variable `x` has no value. Since it is assigned (repeatedly) in your `for` loop, this means that your `for` loop is not executing even once. And the only way this can happen is if `geometry.GetPointCount()` returns `0`. Therefore, this is what must be happening. Add a `print geometry.GetPointCount()` to confirm.

Do you intend for the `if` statements to be inside the loop, so that they are executed for each point in the geometry, and will not be executed at all when the geometry has 0 points? If so, indent them properly.

Problem

I am trying to execute this code, ``` import osgeo.ogr def findPoints(geometry, results): for i in range(geometry.GetPointCount()): x,y,z = geometry.GetPoint(i) if results['north'] == None or results['north'][1] < y: results['north'] = (x,y) if results['south'] == None or results['south'][1] > y: results['south'] = (x,y) for i in range(geometry.GetGeometryCount()): findPoints(geometry.GetGeometryRef(i), results) shapefile = osgeo.ogr.Open("../../Data/tl_2009_us_state/tl_2009_us_state.shp") layer = shapefile.GetLayer(0) feature = layer.GetFeature(53) geometry = feature.GetGeometryRef() results = {'north' : None, 'south' : None} findPoints(geometry, results) ``` and I am constantly receiving this error, ``` Traceback (most recent call last): File "identify_northsouth_point.py", line 22, in <module> findPoints(geometry, results) File "identify_northsouth_point.py", line 8, in findPoints results['north'] = (x,y) UnboundLocalError: local variable 'x' referenced before assignment ``` I have tried global and nonlocal, but it does not work. Since I am not gettin any input from outside the function, so I anyways would not require global or nonlocal.

Original source

Related problems