2. Introduction to Voronoi diagrams
Voronoi diagrams are continuous set of cells generated from an set of input
geometries.
Each input geometry will generate one cell that define its area of influence.
It is usually based on Euclidean distance.
Any point inside that cell is closer to the input geometry of that cell than to
any other input geometry
Used to determine
areas of influence
or
obstacle avoidance
3. Limitation in current GIS software
Software Support point input Support line input
Esri ArcGIS Yes No
QGIS Yes No
PostGIS Yes No
Mapinfo Yes ???
What is you want to determine areas of influence of a line…
• Postal code out of a road network and buildings.
• What if you want to avoid obstacles that would be line
and points
4. Let there be Boost
Boost is a free, extensive C++ library. And there is a hidden gem..
http://www.boost.org/doc/libs/1_54_0/libs/polygon/doc/
voronoi_main.htm
5. Introducing Boost for ArcGIS
A simple geoprocessing script that works for ArcGIS Desktop and ArcGIS Pro.
Relies on Pyvoronoi (https://github.com/Voxel8/pyvoronoi)
A simple geoprocessing script wrapped in a toolbox.
Lets you interpolate curve for your geometries.
Points and lines are delimited by parabolas.
Provide a mechanism to extract points on those parabolas.
C++ code precompiled for Windows platform so that you don’t have to
Python wheels delivered with Python 2.7
Conda package for Python 3.5 and 3.6
DEMO
6. How to prepare your GIS data
Constraints raised by the boost Voronoi API:
Coordinates of the input points and endpoints of the input segments should be of
the integer type.
Input segments should not overlap except their endpoints.
Passing invalid data can:
Cause the Voronoi construction to freeze.
Return invalid results.
Controlling your input data quality is paramount.
7. Example
Good data Bad data (small overlap)
From the Sample WPF App in SharpBoostVoronoi:
https://github.com/fabanc/SharpBoostVoronoi/tree/master/SharpBoostVoronoi/SampleWPFApp
8. Wrapping up
Check out Pyvoronoi and SharpBoostVoronoi
SharpBoostVoronoi: https://github.com/fabanc/SharpBoostVoronoi
Pyvoronoi: https://github.com/Voxel8/pyvoronoi
Check out Boost Voronoi for ArcGIS: https://github.com/fabanc/Boost-
Voronoi-For-ArcGIS
Comments or questions?
Thank you!