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
|
---|
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 - Distancia de conducción
- pgr_pointsAsPolygon - Polígono alrededor del conjunto de puntos