<div dir="ltr">Thank you for the write up, Dan! I appreciate what you've done for the project and community. The outcome of the grant is beyond my expectations, for sure. <br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Feb 27, 2023 at 7:35 AM Daniel Baston <<a href="mailto:dbaston@gmail.com">dbaston@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt" id="m_1921444513566371091gmail-docs-internal-guid-5ae5c52b-7fff-c201-055f-1c6066f1eac4"><span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Hi All,</span></p><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">As February comes to a close, I’m winding down the GEOS maintenance work that the GDAL PSC funded in 2022 [1]. I appreciate the opportunity to do this work and am especially thankful to those who reported issues, reviewed pull requests, or participated in discussions about this work.</span></p><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">For anyone who’s interested, I wanted to share a few of the highlights from my perspective.</span></p><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">New functionality: GEOS now supports reading, writing, and overlay of geometries with an M dimension. I added a number of C API utility functions requested by client library developers: GEOSLineSubstring, GEOSEqualsIdentical, and thread/context-specific interrupt handlers. I also brought in clustering algorithms such as DBSCAN that were previously only available in PostGIS.</span></p><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Performance enhancements: I found some nice performance wins in key GEOS algorithms such as geometry intersection testing (GEOSIntersects and GEOSPreparedIntersects), distance (GEOSPreparedDistance and GEOSPreparedDistanceWithin) and buffering complex geometries. There are also some gains in core internal classes such as CoordinateSequence and STRtree that deliver across-the-board gains.</span></p><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Project maintenance. I was able to simplify our CI setup by removing the use of Azure and AppVeyor services and bringing the associated environments into GitHub Actions, write a harness for performance testing and visualization, and perform code cleanup such as migrating from raw to managed pointers in key classes. I resolved a number of long-standing bug reports with WKT input/output, geometry simplification, and crashes/incorrect results from multiple algorithms in edge cases such as empty geometry inputs.</span></p><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Not everything panned out, or at least not yet. Something we’ve wanted in GEOS for a long time is the ability to create a GEOS geometry directly from an external memory buffer, such as a PostGIS LWGEOM or a GDAL OGRGeometry <span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap"> (“zero-copy”)</span>. I added experimental support for this, but so far I haven’t found a case where it offers much performance benefit.</span></p><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Dan</span></p><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">[1] <a href="https://lists.osgeo.org/pipermail/gdal-dev/2022-February/055433.html" target="_blank">https://lists.osgeo.org/pipermail/gdal-dev/2022-February/055433.html</a></span></p></div>
_______________________________________________<br>
gdal-dev mailing list<br>
<a href="mailto:gdal-dev@lists.osgeo.org" target="_blank">gdal-dev@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/gdal-dev" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/gdal-dev</a><br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature">Sean Gillies</div>