Select to view content in your preferred language

Data Generation At Scale

627
2
11-04-2025 08:41 AM
BruceHarold
Esri Frequent Contributor
3 2 627
Spoiler
Warning:  The tool in the blog download has a known issue, in ArcGIS Pro 3.6 when run in the foreground thread the output is not properly returned - the lookup table for alternative place categories is missing - so use the geoprocessing thread, which is the default behavior.

Here's 350K places of interest points in the Czech Republic I generated on demand, with descriptive base table fields and related alternate category descriptions, all as features in ArcGIS Pro's memory workspace.  You can make your own data for any area of interest worldwide using the data generation script tool in the blog download.  You'll need ArcGIS Pro 3.5+ and a few seconds of your time - in my case 35 seconds for the Czech data (that's 761422 features total between the place points and lookup table).

Place points in the Czech RepublicPlace points in the Czech Republic

I'll let you inspect the tool source yourself, but the key takeaway is that it's easy to wrangle global scale data in Pro without worrying about scale limitations or performance - when you are using the right approach - namely with DuckDB.

Inspiration for this post came when I was reviewing a presentation from PyData 2025, where I was reminded that larger than memory workflows can be handled by DuckDB, including queries with a spatial component.

In the case of the post's tool, the spatial component is an input parameter of polygon data (any coordinate system, any number of polygons, the pale blue feature in the map) that encloses an area of interest, and for a non-spatial component, an optional where clause to be applied in addition to the area of interest.  In the case of the data shown, the clause was country = 'CZ'.  You should make some test data in a small area of interest to refine any where clause you need - the clause must use identifiers from the output data schema and DuckDB SQL syntax.

Note in the tool I do not bounce the data through a dataframe, I use a DuckDB relation and ArcPy insert cursor.

That's it, performant data generation into ArcGIS on demand.  The tool accesses the latest release of Overture Maps Foundation places theme data, refreshed monthly.

Please do comment here with any issues.

2 Comments
MasanobuHIRANO
Esri Contributor

Hello Bruce,

Since this article and tool were featured in the “ArcGIS: Support for Geospatial Standards” technical session at Esri UC 2026, I immediately installed them on my PC’s ArcGIS Pro and gave them a try. They’re really great.

However, there’s one thing that concerns me. At first, I ran the tool in ArcGIS Pro 3.6 and was able to load the GeoParquet data without any issues. But after updating Pro to version 3.7 and running the tool again, I got an error and it wouldn’t run (it appears to be an error that occurred while executing the Python script).

MasanobuHIRANO_0-1785395431602.png

 

If you have some time, could you please test how it works in version 3.7? (Unfortunately, I’m not familiar with Python, so I can’t debug it myself.)

BruceHarold
Esri Frequent Contributor

@MasanobuHIRANO Thank you for trying out the sample.  The error you found is my fault, I had a typo in the code that made the operating_status field too small to hold the data, I have edited line #61 in the GeneratePlaces tool source to correct that, it's now 20 bytes wide, not 10.  I also increased the width of the address field from 300 to 350 bytes, I had an error there too.  I think the data is crowd sourced and strange values can creep in.

Contributors