Opened 3 hours ago
Last modified 3 hours ago
#37179 assigned Cleanup/optimization
Slicing a GDAL layer should scan layer once only — at Initial Version
| Reported by: | wongcht | Owned by: | wongcht |
|---|---|---|---|
| Component: | GIS | Version: | dev |
| Severity: | Normal | Keywords: | gdal |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | yes | UI/UX: | no |
Description
In django.contrib.gis.gdal.layer's Layer.__getitem__, if a layer (with n features) does not support random read, slicing the layer would call _make_feature at most n times which this method scan the whole layer until feature id matched.
E.g. Slicing a layer for 3 features (id= 1,2,3) would scan the layer 3 times: [1] for id=1, [1,2] for id=2, [1,2,3] for id=3. Worse case would call __iter__ (capi.get_next_feature) for n(n+1)/2 times
A better iteration should scan the layer once only to get all features required. A possible fix FYR