<div dir="ltr">Thanks Howard! I think this is the way to go. I would be interested in exploring the pull request version as well, but I may have to wait until after the holiday break to get to that.<br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><span><div dir="ltr"><div><div><div><div>Jason McVay<br></div></div><br></div>MS Geography, Virginia Tech<br></div>BA Environmental Studies, University of Montana<br><a href="http://www.linkedin.com/in/jasonmcvay86/" title="View public profile" name="SignatureSanitizer_SafeHtmlFilter_UNIQUE_ID_SafeHtmlFilter_14933b4cad52e0be_SafeHtmlFilter_webProfileURL" target="_blank">www.linkedin.com/in/jasonmcvay86/</a><br><span><a href="https://twitter.com/jasonmcvay" target="_blank">https://twitter.com/jasonmcvay</a></span></div><div dir="ltr"><br><i>"May your trails be crooked, winding, lonesome, dangerous, leading to the most amazing view"</i></div><div dir="ltr">- Ed Abbey<br></div></span></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Dec 9, 2019 at 8:36 AM Howard Butler <<a href="mailto:howard@hobu.co">howard@hobu.co</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 style="overflow-wrap: break-word;"><br><div><br><blockquote type="cite"><div>On Dec 8, 2019, at 7:09 PM, Jason McVay <<a href="mailto:jasonmcvay09@gmail.com" target="_blank">jasonmcvay09@gmail.com</a>> wrote:</div><br><div><div dir="ltr">I'm looking for some advice on the best way/how to loop in thousands of bounding coordinates into a pdal pipeline.<div><br></div><div>I have a csv (and a geojson) of several thousand min/max x/y and a unique ID. The AOI's are not very big, so the pipeline runs quickly, but there are a lot of AOIs to capture! I'm querying an entwine dataset, the extent of which is national, so I'm limiting the data with a bounding box of each AOI.</div><div><br></div><div>My pipeline currently runs HAG and Ferry Z filter, then uses the gdal.writer to make a GeoTiff at 1m resolution. It works perfectly when I manually enter in a set of test coordinates. How can I scale this to loop and update the bounds automatically?</div><div><br></div><div>I'm running this locally on a MacBook Pro.</div><div><br></div><div>Thank you, any advice is appreciated!<br></div></div></div></blockquote><br></div><div>Jason,</div><div><br></div><div>PDAL doesn't multithread or operate in a parallel fashion for you. You must use external tools to do this yourself. I have had good success using GNU parallel or xargs on bash along with the Python multiprocessing library to achieve that.</div><div><br></div><div>You scenario would seem to fit that model quite well. Here's a GNU parallel example. In short, use your favorite scripting language (or sed/awk/cat) to write a script that contains all of the job entries you need to run (bounds entries are all the same in my example, but you should get the point:</div><div><br></div><div><blockquote type="cite"><div>pdal pipeline pipe.json --readers.ept.filename="<a>ept://http://path/to/location</a>" --readers.ept.bounds="([-10063436.56, -10060190.36], [5038996.16, 5043062.79])" --writers.gdal.filename="hag_mean_henry_co.tif"</div><div>pdal pipeline pipe.json --readers.ept.filename="<a>ept://http://path/to/location</a>" --readers.ept.bounds="([-10063436.56, -10060190.36], [5038996.16, 5043062.79])" --writers.gdal.filename="hag_mean_howard_co.tif"</div><div>pdal pipeline pipe.json --readers.ept.filename="<a>ept://http://path/to/location</a>" --readers.ept.bounds="([-10063436.56, -10060190.36], [5038996.16, 5043062.79])" --writers.gdal.filename="hag_mean_james_co.tif"</div><div>pdal pipeline pipe.json --readers.ept.filename="<a>ept://http://path/to/location</a>" --readers.ept.bounds="([-10063436.56, -10060190.36], [5038996.16, 5043062.79])" --writers.gdal.filename="hag_mean_mike_co.tif"</div></blockquote><div><div><br></div></div><div><br></div><div>Then run that script:</div><div><br></div><div><blockquote type="cite">parallel -j 16 < jobs.txt</blockquote><div><br></div><div>Filtering EPT resources with boundaries is a common desire. I recently added a pull request to master (not yet released) that allows you to specify filtering (for faster query) and cropping (eliminating an extra stage specification) for EPT resources. See <a href="https://github.com/PDAL/PDAL/pull/2771#issue-323371431" target="_blank">https://github.com/PDAL/PDAL/pull/2771#issue-323371431</a> The goal with the approach in the pull request is to not have to change format of the bounding geometries to text simply to feed them into a pipeline. We may add similar capability to other drivers if it is indeed useful in other contexts. </div><div><br></div><div>With the PR, you could express your query boundaries as an OGR query and then iterate through your EPT resources. The current PR implementation doesn't "split" by the polygons, however. We might need to add the same capability to filters.crop to achieve that. Feedback is appreciated so we can learn how people wish to use this.</div><div><br></div><div>Howard</div><div><br></div></div></div></div></blockquote></div>