Función ST_DumpPoints: en términos simples, esta función devuelve los vértices o puntos que está formado una geometría. El resultado que devuelve está compuesto por dos componentes (*):
Path: que es la ubicación del vértice o punto obtenido. De tipo Array de enteros.
Geom: que es el punto mismo. De tipo Geometry.
(*) Esta terminología es obtenida de la ayuda del Postgis
Ejemplo polígono:
Select st_DumpPoints(the_geom) From TablaPoligono
Resultado: “{1,1,1}”,0100001111111
Dónde:
{1,1,1}: Es un array de enteros que indica que este punto está en el Polígono 1, Parte 1, vértice 1
0100001111111: es el punto en formato binario
Ejemplo de Aplicación:
Para el caso de los polígonos, teniendo una tabla como la obtenida de esta consulta SQL:
Create Table poligonomz (gid serial NOT NULL, nombpol varchar(10), CONSTRAINT poligonomz_pkey PRIMARY KEY (gid)); Select addGeometryColumn('poligonomz', 'the_geom', -1, 'MULTIPOLYGON', 4); Insert Into poligonomz (nombpol, the_geom) Values ('pol-1', GeomFromText('MULTIPOLYGON(((511994.025 8319496.485 10 -10, 511994.172 8319496.513 20 -20, 511994.181 8319496.421 30 -30, 511994.050 8319496.403 40 -40, 511994.025 8319496.485 10 -10)))')); Insert Into poligonomz (nombpol, the_geom) Values ('pol-2', GeomFromText('MULTIPOLYGON(((511993.862 8319496.494 100 -100, 511993.926 8319496.490 200 -200, 511993.926 8319496.407 300 -300, 511993.860 8319496.406 400 -400, 511993.862 8319496.494 100 -100 ),(511993.756 8319496.364 110 -110, 511993.846 8319496.370 220 -220, 511993.845 8319496.295 330 -330, 511993.757 8319496.286 440 -440, 511993.756 8319496.364 110 -110 ) ))')); Insert Into poligonomz (nombpol, the_geom) Values ('pol-3', GeomFromText('MULTIPOLYGON(((511994.062 8319496.359 1000 -1000, 511994.073 8319496.295 2000 -2000, 511993.944 8319496.282 3000 -3000, 511993.966 8319496.351 4000 -4000, 511994.062 8319496.359 1000 -1000),(511993.981 8319496.328 1100 -1100, 511993.984 8319496.303 2200 -2200, 511994.042 8319496.306 3300 -3300, 511994.045 8319496.338 4400 -4400, 511993.981 8319496.328 1100 -1100 ) ))'));
Y si lo vemos en el QGIS, tenemos lo siguiente
La consulta es que extrae los Puntos, el componente Z y M es:
select nombpol, GeometryType(the_geom), st_dumppoints(the_geom), (st_dumppoints(the_geom)).path, (st_dumppoints(the_geom)).path[1], (st_dumppoints(the_geom)).path[2], (st_dumppoints(the_geom)).path[3], st_astext((st_dumppoints(the_geom)).geom), st_z((st_dumppoints(the_geom)).geom), st_m((st_dumppoints(the_geom)).geom) from poligonomz
Dónde:
nombpol: nombre del polígono (viene de la consulta de creación de los polígonos).
GeometryType(the_geom): obtengo el tipo de geometría que está en la columna the_geom.
st_dumppoints(the_geom): la función ST_DumpPoints aplicada a la columna the_geom.
(st_dumppoints(the_geom)).path: obtenemos la componente Path de ST_DumpPoints
(st_dumppoints(the_geom)).path[1], [2] y [3]: obtenemos los elementos del Path obtenido.
st_astext((st_dumppoints(the_geom)).geom): obtenemos el componente Geom de ST_DumpPoints y lo pasamos por la function ST_AsText para ver las coordenadas.
st_z((st_dumppoints(the_geom)).geom) obtenemos el Z de los vértices del polígono.
st_m((st_dumppoints(the_geom)).geom) obtenemos el M de los vértices del polígono.
El resultado es como sigue:
Esperando que sea de su ayuda, será hasta el otro mes.