D 2012-08-30T10:27:54.286 L tesselations-4.0 P 341896cf8c8983cf781a56ce2036ebfd7dab0676 U sandro W 20126
| ||
using Square cells
This SQL query will return a regular grid (square cells) covering Tuscany (cod_reg=9). Each grid's cell will have an edge length of exactly 10 Km |
![]() | |
using Triangular cells
|
![]() | |
using Hexagonal cells
|
![]() | |
|
prototype: ST_DelaunayTriangulation( input Geometry ) : delaunay Geometry ST_DelaunayTriangulation( input Geometry, edges_only boolean ) : delaunay Geometry ST_DelaunayTriangulation( input Geometry, edges_only boolean, tolerance double precision ) : delaunay Geometry |
This SQL query will return a Delaunay Triangulation based on Italy's populated places (about 8,000+ Points). The visual example simply covers Tuscany, so the ensure an easy readability. |
![]() |
|
The Voronoj Diagram simply is the dual graph of the Delaunay Triangulation.
A Voronoj Diagram still is a tessellation, and cells in a Voronoj can have any arbitrary polygonal (irregular) shape. This figure clearly shows the relation joining the Delaunay Triangulation and the corresponding Voronoj Diagram. Each single Voronoj's cell is obtained by connecting all the circumcenters of adjacent Delaunay's triangles; consequently each Voronoj cell surely contains one (and only one) Delaunay's node. The cell in the Voronoj Diagram presents an interesting property: all points falling within the same cell are ensured to be nearest to the Delaunay's node placed on the cell itself than to any other Delaunay's node placed in a different cell. So the Voronoj Diagram is a very effective conceptual tool allowing to divide an arbitrary space region into many rationally defined cells, and is thus widely used on many applicative fields based on Computational Geometry. This obviously including Geography itself. read more |
|
Please note: any Voronoj Diagram will always present an unpleasant complication; when reaching the exterior boundary of the input point-set, there aren't enough points allowing to properly close a cell. And consequently many cells laying near to the exterior boundary actually are open cells, presenting edges going directly to the infinite. The directions of such edges are absolutely well determined; but assigning them a finite length isn't allowed at all. And consequently isn't possible defining a polygon representing these cells. This figure shows a limited Voronoj Diagram always based on the same dataset as above, but this time including only Populated Places laying on the Island of Elba. |
|
Anyway we can usefully apply a trick effectively allowing to ensure that all cells in a Voronoj will be properly closed. We simply have to constrain the Voronoj Diagram within a rectangular frame of arbitrary size, then computing the intersections between infinite lines and the frame itself. This figure shows the same Voronoj as before, this time opportunely framed; as you can easily notice, now all cells are surely closed and can be safely be represented by a well defined polygon. The size (aka extent) of the frame is absolutely arbitrary, and can be freely set as you wish better accordingly to your specific requirements. Please notice: the blue and the red frame have a strongly different extent, but both them have the same identical overall shape. |
|
prototype: ST_VoronojDiagram( input Geometry ) : voronoj Geometry ST_VoronojDiagram( input Geometry, edges_only boolean ) : voronoj Geometry ST_VoronojDiagram( input Geometry, edges_only boolean, extra_frame_size double precision ) : voronoj Geometry ST_VoronojDiagram( input Geometry, edges_only boolean, extra_frame_size double precision, tolerance double precision ) : voronoj Geometry |
This SQL query will return a Voronoj Diagram based on Italy's populated places (about 8,000+ Points). The visual example simply covers Tuscany, so the ensure an easy readability. All populated places (aka cell seeds) are explicitly represented. |
![]() |
|
An interesting point absolutely worth to be explicitly noted: the boundary of any Delaunay Triangulation exactly corresponds to the Convex Hull for the same input Geometry.
read more And this in turn opens the way to a further consideration: we could purposely simplify a Delaunay Triangulation so to get a concave hull. You can get more extensive informations about this approach from here Please note well: the convex hull concept corresponds to a robust and formal mathematical definition. On the other side the concave hull is a much more vague and undetermined notion. There is one and only one ConvexHull for a given Geometry; but many ConcaveHulls are possible. Choosing the one or the other is much more a matter of personal taste than a mathematical operation formally defined. Computing a ConcaveHull always is an inherently arbitrary and heuristic process. |
The SpatiaLite's own approach to ConcaveHull
Adopting a very high factor value practically means applying a very bland filtering (very few triangles will be discarded, and you'll consequently get a rather convex shape). On the other side adopting a very low factor values will apply a very strong filtering (many triangles will be now discarded, and you'll get a very concave shape). Useful constants: assuming a perfectly normal distribution of edge lengths (a by far unrealistic assumption for real world datasets), 3σ will imply suppressing about 0.1% triangles (only the few ones presenting abnormally lengthy edges), 2σ corresponds to about 2.1%, and 1σ roughly corresponds to 15.8%. Usually values ranging between 3σ and 2σ are the most appropriate to be used. The figure shows what you can actually get by applying a 3σ filtering to Italian Populated Places; for clarity all Italian Regions are represented in yellow, and the ConvexHull is represented in blue. The ConcaveHull itself is represented in red. |
|
|
prototype: ST_ConcaveHull( input Geometry ) : concave Geometry ST_ConcaveHull( input Geometry, factor double precision ) : concave Geometry ST_ConcaveHull( input Geometry, factor double precision, allow_holes boolean ) : concave Geometry ST_ConcaveHull( input Geometry, factor double precision, allow_holes boolean, tolerance double precision ) : concave Geometry |
This SQL query will return a ConcaveHull based on Italy's populated places (about 8,000+ Points) by applying a 2.5σ filtering factor. The figure also shows the ConcaveHull returned by the previous example by applying a 3σ factor (red boundary), so to evidentiate the relative differences. |
![]() |