pgRouting Manual (2.0.0)

pgr_alphaShape

«  pgr_drivingDistance   ::   Contents   ::   pgr_pointsAsPolygon  »


pgr_alphaShape

Nombre

pgr_alphashape — Función central para el cálculo de la forma alfa.

Nota

Esta función no debe utilizarse directamente. Usar pgr_drivingDistance en su lugar.

Sinopsis

Devuelve una tabla con registros (x, y) que describen los vértices de una figura de alfa.

table() pgr_alphashape(text sql);

Descripción

sql:

text una consulta SQL la cual debe proporcionar un conjunto de registros con los siguientes campos:

SELECT id, x, y FROM vertex_table
id:int4 Identificador del vértice
x:float8 Coordenada x
y:float8 Coordenada y

Devuelve un registro de vértices para cada fila:

x:Coordenada x
y:Coordenada y

Historia

  • Renombrado en la versión 2.0.0

Ejemplos

En la código para la forma alfa, no hay forma de controlar el orden de los puntos, por lo que el resultado que obtenga puede variar en el orden del lost vertices. En el ejemplo, la consulta simple es seguida por una más complejoa que construye un polígono y calcula las áreas de él. Este ultimo resultado debe ser el mismo en su sistema. Le dejamos los detalles de la consulta compleja al lector como un ejercicio, si desean descomponerla en pedazos comprensibles o que simplemente copiarla y pegarla en una ventana SQL para su ejecución.

SELECT * FROM pgr_alphashape('SELECT id, x, y FROM vertex_table');

 x | y
---+---
 2 | 0
 4 | 1
 4 | 2
 4 | 3
 2 | 4
 0 | 2
(6 rows)

SELECT round(st_area(ST_MakePolygon(ST_AddPoint(foo.openline, ST_StartPoint(foo.openline))))::numeric, 2) as st_area
from (select st_makeline(points order by id)  as openline from
(SELECT st_makepoint(x,y) as points ,row_number() over() AS id
FROM pgr_alphAShape('SELECT id, x, y FROM vertex_table')
) as a) as foo;

 st_area
---------
   10.00
(1 row)


SELECT * FROM pgr_alphAShape('SELECT id::integer, st_x(the_geom)::float as x, st_y(the_geom)::float as y  FROM edge_table_vertices_pgr');
  x  |  y
-----+-----
 0.5 | 3.5
   0 |   2
   2 |   0
   4 |   1
   4 |   2
   4 |   3
 3.5 |   4
   2 |   4
(8 rows)

SELECT round(st_area(ST_MakePolygon(ST_AddPoint(foo.openline, ST_StartPoint(foo.openline))))::numeric, 2) as st_area
from (select st_makeline(points order by id)  as openline from
(SELECT st_makepoint(x,y) as points ,row_number() over() AS id
FROM pgr_alphAShape('SELECT id::integer, st_x(the_geom)::float as x, st_y(the_geom)::float as y  FROM edge_table_vertices_pgr')
) as a) as foo;

 st_area
---------
   10.00
(1 row)

Las consulta usa la red de ejemplo Datos Muestra

Véase también

«  pgr_drivingDistance   ::   Contents   ::   pgr_pointsAsPolygon  »