SlideShare a Scribd company logo
Using line-based Voronoi
diagrams in GIS
Fabien Ancelin
2016, Apr 21st
Introduction to Voronoi diagrams
 Voronoi diagrams are continuous set of cells generated from an set of input
points.
 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
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.
• Divide a road network into zones based on attributes.
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
Problems for the GIS community
 Few GIS users know of to code in C++. Python is definitely more popular, and
so is .NET to a lesser extent. Here is how you can use boost Voronoi with your
favorite language:
 Python: https://github.com/Voxel8/pyvoronoi
 .NET (C#): https://github.com/fabanc/SharpBoostVoronoi
 Those wrappers let you to use boost Voronoi library, but also give you built-in
functions to manage curvy shapes in your GIS data.
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.
Example
Good data Bad data (small overlap)
From the Sample WPF App in SharpBoostVoronoi:
https://github.com/fabanc/SharpBoostVoronoi/tree/master/SharpBoostVoronoi/SampleWPFApp
Building a graph with integers (no scale
factor):
Introducing scale factor:
Using the output
 Three primitives:
 Cells …
 Are made of Edges …
 That are made of Vertices
 Complete information about Boost
output at:
http://www.boost.org/doc/libs/1_54_0
/libs/polygon/doc/voronoi_diagram.ht
m
Output type: vertices
Vertices
X (double precision) The X coordinate
Y (double precision) The Y coordinate.
Voronoi output objects: edges
Edges
Start The index of the start vertex of this segment.
End The index of the end vertex of this segment.
IsPrimary False if the edge goes through the endpoint of the
segment site, else true.
IsLinear True is a segment is a line, false if the segment is an
arc.
IsFinite True if the edge is delimited by two known vertices,
False otherwise.
Cell The index of the cell associated with this segment
Twin The index of the twin cell associated with this
segment
Voronoi output objects: cells
Cells
Index The voronoi cell identifier
Site The index of the source feature
ContainsPoint True if the cell is made from a point
ContainsSegment True if the cell is made from a segment
EdgesIndex Indexes of the segment that makes the cell
IsOpen True if the cell has a segment that is infinite
SourceCategory The type of element used to create the edge.
Code sample (C#)
Draw curvy segments
Demo!
Let’s use some real GIS data!
Wrapping up
 Any idea of what problems this could solve for you?
 Any comments or questions?
 If you’re working with ArcGIS, you can make a geoprocessing tool.
Thank you!

More Related Content

Similar to Using line-based Voronoi cells in GIS

Design the implementation of 1D Kalman Filter Encoder and Accelerometer.
Design the implementation of 1D Kalman Filter Encoder and Accelerometer.Design the implementation of 1D Kalman Filter Encoder and Accelerometer.
Design the implementation of 1D Kalman Filter Encoder and Accelerometer.Ankita Tiwari
 
Design the implementation of Anytime D Star on an Occupancy Grid
Design the implementation of Anytime D Star on an Occupancy GridDesign the implementation of Anytime D Star on an Occupancy Grid
Design the implementation of Anytime D Star on an Occupancy GridAnkita Tiwari
 
design the implementation of trajectory path of the robot using parallel loop
design the implementation of trajectory path of the robot using parallel loopdesign the implementation of trajectory path of the robot using parallel loop
design the implementation of trajectory path of the robot using parallel loopAnkita Tiwari
 
Design the implementation of Brushless DC Motor Six Step Control.
Design the implementation of Brushless DC Motor Six Step Control.Design the implementation of Brushless DC Motor Six Step Control.
Design the implementation of Brushless DC Motor Six Step Control.Ankita Tiwari
 
Design the implementation of Robotic Simulator: Goalkeeper.
Design the implementation of Robotic Simulator: Goalkeeper.Design the implementation of Robotic Simulator: Goalkeeper.
Design the implementation of Robotic Simulator: Goalkeeper.Ankita Tiwari
 
Virtual Instrumentation & LabVIEW-lini.ppt
Virtual Instrumentation & LabVIEW-lini.pptVirtual Instrumentation & LabVIEW-lini.ppt
Virtual Instrumentation & LabVIEW-lini.pptAvinashJain66
 
Design the implementation of trajectory path of the robot using parallel loop...
Design the implementation of trajectory path of the robot using parallel loop...Design the implementation of trajectory path of the robot using parallel loop...
Design the implementation of trajectory path of the robot using parallel loop...Ankita Tiwari
 
PVS-Studio, a solution for developers of modern resource-intensive applications
PVS-Studio, a solution for developers of modern resource-intensive applicationsPVS-Studio, a solution for developers of modern resource-intensive applications
PVS-Studio, a solution for developers of modern resource-intensive applicationsPVS-Studio
 
Line Detection on the GPU
Line Detection on the GPU Line Detection on the GPU
Line Detection on the GPU Gernot Ziegler
 
Design the implementation of NMEA Get GPS Data from Record
Design the implementation of NMEA Get GPS Data from RecordDesign the implementation of NMEA Get GPS Data from Record
Design the implementation of NMEA Get GPS Data from RecordAnkita Tiwari
 
Joey gonzalez, graph lab, m lconf 2013
Joey gonzalez, graph lab, m lconf 2013Joey gonzalez, graph lab, m lconf 2013
Joey gonzalez, graph lab, m lconf 2013MLconf
 
RS and GIS TW- 1&2.pdf
RS and GIS TW- 1&2.pdfRS and GIS TW- 1&2.pdf
RS and GIS TW- 1&2.pdfSatishKhadse3
 
Adaptive membership functions for hand written character recognition by voron...
Adaptive membership functions for hand written character recognition by voron...Adaptive membership functions for hand written character recognition by voron...
Adaptive membership functions for hand written character recognition by voron...JPINFOTECH JAYAPRAKASH
 
Reviews on Deep Generative Models in the early days / GANs & VAEs paper review
Reviews on Deep Generative Models in the early days / GANs & VAEs paper reviewReviews on Deep Generative Models in the early days / GANs & VAEs paper review
Reviews on Deep Generative Models in the early days / GANs & VAEs paper reviewchangedaeoh
 
CC-4007, Large-Scale Machine Learning on Graphs, by Yucheng Low, Joseph Gonza...
CC-4007, Large-Scale Machine Learning on Graphs, by Yucheng Low, Joseph Gonza...CC-4007, Large-Scale Machine Learning on Graphs, by Yucheng Low, Joseph Gonza...
CC-4007, Large-Scale Machine Learning on Graphs, by Yucheng Low, Joseph Gonza...AMD Developer Central
 
Digital Fabrication Studio.03 _Software @ Aalto Media Factory
Digital Fabrication Studio.03 _Software @ Aalto Media FactoryDigital Fabrication Studio.03 _Software @ Aalto Media Factory
Digital Fabrication Studio.03 _Software @ Aalto Media FactoryMassimo Menichinelli
 
Bryan Thompson, Chief Scientist and Founder at SYSTAP, LLC at MLconf NYC
Bryan Thompson, Chief Scientist and Founder at SYSTAP, LLC at MLconf NYCBryan Thompson, Chief Scientist and Founder at SYSTAP, LLC at MLconf NYC
Bryan Thompson, Chief Scientist and Founder at SYSTAP, LLC at MLconf NYCMLconf
 
Easy edd phd talks 28 oct 2008
Easy edd phd talks 28 oct 2008Easy edd phd talks 28 oct 2008
Easy edd phd talks 28 oct 2008Taha Sochi
 

Similar to Using line-based Voronoi cells in GIS (20)

Design the implementation of 1D Kalman Filter Encoder and Accelerometer.
Design the implementation of 1D Kalman Filter Encoder and Accelerometer.Design the implementation of 1D Kalman Filter Encoder and Accelerometer.
Design the implementation of 1D Kalman Filter Encoder and Accelerometer.
 
Design the implementation of Anytime D Star on an Occupancy Grid
Design the implementation of Anytime D Star on an Occupancy GridDesign the implementation of Anytime D Star on an Occupancy Grid
Design the implementation of Anytime D Star on an Occupancy Grid
 
design the implementation of trajectory path of the robot using parallel loop
design the implementation of trajectory path of the robot using parallel loopdesign the implementation of trajectory path of the robot using parallel loop
design the implementation of trajectory path of the robot using parallel loop
 
Design the implementation of Brushless DC Motor Six Step Control.
Design the implementation of Brushless DC Motor Six Step Control.Design the implementation of Brushless DC Motor Six Step Control.
Design the implementation of Brushless DC Motor Six Step Control.
 
Design the implementation of Robotic Simulator: Goalkeeper.
Design the implementation of Robotic Simulator: Goalkeeper.Design the implementation of Robotic Simulator: Goalkeeper.
Design the implementation of Robotic Simulator: Goalkeeper.
 
Virtual Instrumentation & LabVIEW-lini.ppt
Virtual Instrumentation & LabVIEW-lini.pptVirtual Instrumentation & LabVIEW-lini.ppt
Virtual Instrumentation & LabVIEW-lini.ppt
 
Design the implementation of trajectory path of the robot using parallel loop...
Design the implementation of trajectory path of the robot using parallel loop...Design the implementation of trajectory path of the robot using parallel loop...
Design the implementation of trajectory path of the robot using parallel loop...
 
Wmc lab (1)
Wmc lab (1)Wmc lab (1)
Wmc lab (1)
 
PVS-Studio, a solution for developers of modern resource-intensive applications
PVS-Studio, a solution for developers of modern resource-intensive applicationsPVS-Studio, a solution for developers of modern resource-intensive applications
PVS-Studio, a solution for developers of modern resource-intensive applications
 
NIS LabView
NIS LabViewNIS LabView
NIS LabView
 
Line Detection on the GPU
Line Detection on the GPU Line Detection on the GPU
Line Detection on the GPU
 
Design the implementation of NMEA Get GPS Data from Record
Design the implementation of NMEA Get GPS Data from RecordDesign the implementation of NMEA Get GPS Data from Record
Design the implementation of NMEA Get GPS Data from Record
 
Joey gonzalez, graph lab, m lconf 2013
Joey gonzalez, graph lab, m lconf 2013Joey gonzalez, graph lab, m lconf 2013
Joey gonzalez, graph lab, m lconf 2013
 
RS and GIS TW- 1&2.pdf
RS and GIS TW- 1&2.pdfRS and GIS TW- 1&2.pdf
RS and GIS TW- 1&2.pdf
 
Adaptive membership functions for hand written character recognition by voron...
Adaptive membership functions for hand written character recognition by voron...Adaptive membership functions for hand written character recognition by voron...
Adaptive membership functions for hand written character recognition by voron...
 
Reviews on Deep Generative Models in the early days / GANs & VAEs paper review
Reviews on Deep Generative Models in the early days / GANs & VAEs paper reviewReviews on Deep Generative Models in the early days / GANs & VAEs paper review
Reviews on Deep Generative Models in the early days / GANs & VAEs paper review
 
CC-4007, Large-Scale Machine Learning on Graphs, by Yucheng Low, Joseph Gonza...
CC-4007, Large-Scale Machine Learning on Graphs, by Yucheng Low, Joseph Gonza...CC-4007, Large-Scale Machine Learning on Graphs, by Yucheng Low, Joseph Gonza...
CC-4007, Large-Scale Machine Learning on Graphs, by Yucheng Low, Joseph Gonza...
 
Digital Fabrication Studio.03 _Software @ Aalto Media Factory
Digital Fabrication Studio.03 _Software @ Aalto Media FactoryDigital Fabrication Studio.03 _Software @ Aalto Media Factory
Digital Fabrication Studio.03 _Software @ Aalto Media Factory
 
Bryan Thompson, Chief Scientist and Founder at SYSTAP, LLC at MLconf NYC
Bryan Thompson, Chief Scientist and Founder at SYSTAP, LLC at MLconf NYCBryan Thompson, Chief Scientist and Founder at SYSTAP, LLC at MLconf NYC
Bryan Thompson, Chief Scientist and Founder at SYSTAP, LLC at MLconf NYC
 
Easy edd phd talks 28 oct 2008
Easy edd phd talks 28 oct 2008Easy edd phd talks 28 oct 2008
Easy edd phd talks 28 oct 2008
 

Recently uploaded

Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...rajkumar669520
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandIES VE
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareinfo611746
 
AI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAlluxio, Inc.
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILNatan Silnitsky
 
GraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysisGraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysisNeo4j
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...Alluxio, Inc.
 
Breaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfBreaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfMeon Technology
 
iGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by SkilrockiGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by SkilrockSkilrock Technologies
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowPeter Caitens
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?XfilesPro
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownloadvrstrong314
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEJelle | Nordend
 
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion Clinic
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationWave PLM
 
Agnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in KrakówAgnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in Krakówbim.edu.pl
 

Recently uploaded (20)

Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
AI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in Michelangelo
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024
 
GraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysisGraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysis
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 
Breaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfBreaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdf
 
iGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by SkilrockiGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by Skilrock
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM Integration
 
Agnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in KrakówAgnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in Kraków
 

Using line-based Voronoi cells in GIS

  • 1. Using line-based Voronoi diagrams in GIS Fabien Ancelin 2016, Apr 21st
  • 2. Introduction to Voronoi diagrams  Voronoi diagrams are continuous set of cells generated from an set of input points.  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
  • 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. • Divide a road network into zones based on attributes.
  • 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. Problems for the GIS community  Few GIS users know of to code in C++. Python is definitely more popular, and so is .NET to a lesser extent. Here is how you can use boost Voronoi with your favorite language:  Python: https://github.com/Voxel8/pyvoronoi  .NET (C#): https://github.com/fabanc/SharpBoostVoronoi  Those wrappers let you to use boost Voronoi library, but also give you built-in functions to manage curvy shapes in your GIS data.
  • 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. Building a graph with integers (no scale factor):
  • 10. Using the output  Three primitives:  Cells …  Are made of Edges …  That are made of Vertices  Complete information about Boost output at: http://www.boost.org/doc/libs/1_54_0 /libs/polygon/doc/voronoi_diagram.ht m
  • 11. Output type: vertices Vertices X (double precision) The X coordinate Y (double precision) The Y coordinate.
  • 12. Voronoi output objects: edges Edges Start The index of the start vertex of this segment. End The index of the end vertex of this segment. IsPrimary False if the edge goes through the endpoint of the segment site, else true. IsLinear True is a segment is a line, false if the segment is an arc. IsFinite True if the edge is delimited by two known vertices, False otherwise. Cell The index of the cell associated with this segment Twin The index of the twin cell associated with this segment
  • 13. Voronoi output objects: cells Cells Index The voronoi cell identifier Site The index of the source feature ContainsPoint True if the cell is made from a point ContainsSegment True if the cell is made from a segment EdgesIndex Indexes of the segment that makes the cell IsOpen True if the cell has a segment that is infinite SourceCategory The type of element used to create the edge.
  • 16. Demo! Let’s use some real GIS data!
  • 17. Wrapping up  Any idea of what problems this could solve for you?  Any comments or questions?  If you’re working with ArcGIS, you can make a geoprocessing tool. Thank you!