I'm completely new to GeoDjango. I'm working through the tutorial for
Django version 2.0, and I am encountering an error when I follow the steps
in the GeoDjango section.
Specifically, when I attempt to slice a Layer object to extract Features,
it gives me an error which looks like a possible bug. I'll go through the
steps here.
1.
https://docs.djangoproject.com/en/2.0/ref/contrib/gis/tutorial/#importing-spatial-data
1. in this section of the tutorial, we import spatial data and use the
GDAL library to work with an imported shapefile of world borders
2. Next, through the Django shell, I create a DataSource object
<https://docs.djangoproject.com/en/2.0/ref/contrib/gis/gdal/#django.contrib.gis.gdal.DataSource>
using the *django.contrib.gis.gdal *module
3. I am able to retrieve, from this DataSource object, a Layer object
<https://docs.djangoproject.com/en/2.0/ref/contrib/gis/gdal/#layer>
containing Features for each polygon
4. I can work through the examples showing the properties of that
Layer object, and iterate through the Features in the Layer, so I know
that's working
2. The problem is when I try to Slice a Layer, to extract a subset of
Features:
1. The example says I should be able to run *>>> lyr[0:2]* and
receive two Feature objects
2. However, what I get is an error message saying there is an
IndexError, and it mentions a TypeError
This is an image of the Traceback
<https://lh3.googleusercontent.com/-brhlB-hy304/Wlk0oyv_XwI/AAAAAAAAf4c/mjZO4-9mEq4NjCj06XXm60HB90SwE9YSwCLcBGAs/s1600/Django_Slice_Error.jpg>
And here is the traceback in text:
In [12]: lyr[0:2]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-12-a781c315deac> in <module>()
----> 1 lyr[0:2]
c:\projects\python\env\ENV3\lib\site-packages\django\contrib\gis\gdal\layer.py
in __getitem__(self, index)
49 # A slice was given
50 start, stop, stride = index.indices(self.num_feat)
---> 51 return [self._make_feature(fid) for fid in range(start,
stop, stride)]
52 else:
53 raise TypeError('Integers and slices may only be used
when indexing OGR Layers.')
c:\projects\python\env\ENV3\lib\site-packages\django\contrib\gis\gdal\layer.py
in <listcomp>(.0)
49 # A slice was given
50 start, stop, stride = index.indices(self.num_feat)
---> 51 return [self._make_feature(fid) for fid in range(start,
stop, stride)]
52 else:
53 raise TypeError('Integers and slices may only be used
when indexing OGR Layers.')
c:\projects\python\env\ENV3\lib\site-packages\django\contrib\gis\gdal\layer.py
in _make_feature(self, feat_id)
88 return feat
89 # Should have returned a Feature, raise an IndexError.
---> 90 raise IndexError('Invalid feature id: %s.' % feat_id)
91
92 # #### Layer properties ####
IndexError: Invalid feature id: 0.
Again, I'm totally new to GeoDjango, so this could all be a user error. I
have restarted the tutorial 3 times and it always fails at the slice
example. The comment in the Traceback mentioning an IndexError has me
wondering.
Thanks in advance.
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/a8fb48a0-8bcd-41bb-a3ce-737c324d96cb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.