<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Done: <a href="https://github.com/OSGeo/gdal/issues/5967" id="LPlnkOWALinkPreview">https://github.com/OSGeo/gdal/issues/5967</a></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Many thanks,</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Jon</div>
<div class="_Entity _EType_OWALinkPreview _EId_OWALinkPreview _EReadonly_1">
<div id="LPBorder_GTaHR0cHM6Ly9naXRodWIuY29tL09TR2VvL2dkYWwvaXNzdWVzLzU5Njc." class="LPBorder483383" style="width: 100%; margin-top: 16px; margin-bottom: 16px; position: relative; max-width: 800px; min-width: 424px;">
<table id="LPContainer483383" role="presentation" style="padding: 12px 36px 12px 12px; width: 100%; border-width: 1px; border-style: solid; border-color: rgb(200, 200, 200); border-radius: 2px;">
<tbody>
<tr valign="top" style="border-spacing: 0px;">
<td>
<div id="LPImageContainer483383" style="position: relative; margin-right: 12px; height: 120px; overflow: hidden; width: 240px;">
<a target="_blank" id="LPImageAnchor483383" href="https://github.com/OSGeo/gdal/issues/5967"><img id="LPThumbnailImageId483383" alt="" height="120" style="display: block;" width="240" src="https://opengraph.githubassets.com/594c877faa442856292a9b4df982ba26051c434a7b1e2c82ab21fe444a6f95dc/OSGeo/gdal/issues/5967"></a></div>
</td>
<td style="width: 100%;">
<div id="LPTitle483383" style="font-size: 21px; font-weight: 300; margin-right: 8px; font-family: wf_segoe-ui_light, "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; margin-bottom: 12px;">
<a target="_blank" id="LPUrlAnchor483383" href="https://github.com/OSGeo/gdal/issues/5967" style="text-decoration: none; color: var(--themePrimary);">GetFID incorrect after sorting layer · Issue #5967 · OSGeo/gdal</a></div>
<div id="LPDescription483383" style="font-size: 14px; max-height: 100px; color: rgb(102, 102, 102); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; margin-bottom: 12px; margin-right: 8px; overflow: hidden;">
Expected behavior and actual behavior. When a layer is sorted using ExecuteSQL with ORDER BY, the FIDs in the layer are changed such GetFeature returns the wrong feature when using an fid obtained ...</div>
<div id="LPMetadata483383" style="font-size: 14px; font-weight: 400; color: rgb(166, 166, 166); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;">
github.com</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Even Rouault <even.rouault@spatialys.com><br>
<b>Sent:</b> 22 June 2022 16:09<br>
<b>To:</b> Jon Morris <jon.morris.dev@outlook.com>; gdal-dev@lists.osgeo.org <gdal-dev@lists.osgeo.org><br>
<b>Subject:</b> Re: [gdal-dev] GetFID incorrect after sorting layer</font>
<div> </div>
</div>
<div>
<p>Jon,</p>
<p>this is a bug on the result SQL layer implementation of GetFeature(). Can you file a ticket in
<a class="x_moz-txt-link-freetext" href="https://github.com/OSGeo/gdal/issues/new">
https://github.com/OSGeo/gdal/issues/new</a> with the below elements? Thanks</p>
<p>Even<br>
</p>
<div class="x_moz-cite-prefix">Le 22/06/2022 à 15:37, Jon Morris a écrit :<br>
</div>
<blockquote type="cite">
<div class="x_elementToProof">
<p class="x_MsoNormal"><span>Hello all, </span></p>
<p class="x_MsoNormal"><span> </span></p>
<p class="x_MsoNormal"><span>I’m having trouble getting features in a layer after sorting with SQL query. It seems that the FIDs change when the layer is sorted. I’m ok with that, but if you take the id returned by GetFID and call GetFeature on the layer, you
 get a different feature. I would have thought GetFID/GetFeature should remain in sync even after sorting. The docs for GetFeature say “If this method returns a non-NULL feature, it is guaranteed that its feature id (OGRFeature::GetFID()) will be the same as
 nFID.“ </span></p>
<p class="x_MsoNormal"><span><a href="https://gdal.org/doxygen/classOGRLayer.html#ace902dfb44335fb1a877aa035ecff209" class="x_moz-txt-link-freetext">https://gdal.org/doxygen/classOGRLayer.html#ace902dfb44335fb1a877aa035ecff209</a> </span></p>
<p class="x_MsoNormal"><span> </span></p>
<p class="x_MsoNormal"><span>I’m aware I could just iterate through the layer, but I want to add/delete features so prefer to iterate through a list of ids instead. Should I just ignore the FIDs and iterate through range(layer.GetFeatureCount()) instead? Is
 that guaranteed to give me every feature in size order? </span></p>
<p class="x_MsoNormal"><span> </span></p>
<p class="x_MsoNormal"><span>I’m using GDAL 3.4.1 on Python 3.8.12 </span></p>
<p class="x_MsoNormal"><span> </span></p>
<p class="x_MsoNormal"><span>Repro case: </span></p>
<p class="x_MsoNormal"><span><a href="https://gist.github.com/jontwo/01d8cbf1e047e36d2fb2f7786ad60e73" class="x_moz-txt-link-freetext">https://gist.github.com/jontwo/01d8cbf1e047e36d2fb2f7786ad60e73</a> </span></p>
<p class="x_MsoNormal"><span>Creates a layer with 4 features, areas 1, 64, 4, 25 </span></p>
<p class="x_MsoNormal"><span>Then sorts them with </span><span>ds.ExecuteSQL(f"SELECT * FROM lname ORDER BY OGR_GEOM_AREA ASC")</span><span> </span></p>
<p class="x_MsoNormal"><span>Gets a list of FIDs in the layer using GetFID </span></p>
<p class="x_MsoNormal"><span>Calls GetFeature for each of these FIDs. </span></p>
<p class="x_MsoNormal"><span> </span></p>
<p class="x_MsoNormal"><span>Output: </span></p>
<p class="x_MsoNormal"><span>Areas before: [(0, 1.0), (1, 64.0), (2, 4.0), (3, 25.0)] </span></p>
<p class="x_MsoNormal"><span>Areas after: [(0, 1.0), (2, 4.0), (3, 25.0), (1, 64.0)] </span></p>
<p class="x_MsoNormal"><span>Requested FID 0 (area 1.0) got 0 (area 1.0) </span></p>
<p class="x_MsoNormal"><span>Requested FID 2 (area 4.0) got 3 (area 25.0) </span></p>
<p class="x_MsoNormal"><span>Requested FID 3 (area 25.0) got 1 (area 64.0) </span></p>
<p class="x_MsoNormal"><span>Requested FID 1 (area 64.0) got 2 (area 4.0) </span></p>
<p class="x_MsoNormal"><span> </span></p>
<p class="x_MsoNormal"><span>Thanks, </span></p>
<p class="x_MsoNormal"><span> </span></p>
<p class="x_MsoNormal"><span>Jon </span></p>
<br>
</div>
<br>
<fieldset class="x_moz-mime-attachment-header"></fieldset>
<pre class="x_moz-quote-pre">_______________________________________________
gdal-dev mailing list
<a class="x_moz-txt-link-abbreviated" href="mailto:gdal-dev@lists.osgeo.org">gdal-dev@lists.osgeo.org</a>
<a class="x_moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/gdal-dev">https://lists.osgeo.org/mailman/listinfo/gdal-dev</a>
</pre>
</blockquote>
<pre class="x_moz-signature" cols="72">-- 
<a class="x_moz-txt-link-freetext" href="http://www.spatialys.com">http://www.spatialys.com</a>
My software is free, but my time generally not.</pre>
</div>
</body>
</html>