4 votos

Cómo extraer nodos con PostGIS a una geometría multipunto

Tengo una línea en una tabla PostGIS test_line . Quiero extraer sus nodos en una geometría multipunto.

He probado lo siguiente:

SELECT ST_Collect((ST_DumpPoints(the_geom)).geom) FROM test_line;

Pero me da el error ERROR: set-valued function called in context that cannot accept a set .

¿Qué tengo que cambiar para que funcione?

0 votos

Tengo curiosidad por saber si quieres ampliar tu caso de prueba y cómo.

3voto

neouser99 Puntos 1203

Tuve un problema similar y este post de la lista de correo me ayudó:

http://lists.osgeo.org/pipermail/postgis-users/2010-June/026887.html

La solución que se les ocurrió es la siguiente:

SELECT gid, ST_AsText(replace(ST_AsEWKT(geom), 'LINESTRING',
'MULTIPOINT')::geometry)
FROM
 (SELECT 1 as gid, 'LINESTRING (0 0, 0 3, 3 4)'::geometry AS geom
  UNION ALL
  SELECT 2 as gid, 'LINESTRING (1 1, 2 6, 7 7)'::geometry AS geom) AS g;

1voto

Dr Herbie Puntos 2966

ST_Dump está devolviendo múltiples valores para una fila, que no pueden ser anidados dentro del ST_Collect() por lo que debe separar las cosas mediante una subconsulta.

 SELECT ST_Collect(the_geom2) 
 FROM (
       SELECT (ST_DumpPoints(the_geom)).geom AS the_geom2 
       FROM test_line) foo;

0voto

Snuggs Puntos 537

Un post antiguo, pero esto me ha funcionado:

WITH A AS (
  SELECT (ST_DumpPoints(the_geom)).geom
  FROM test_line
)
SELECT ST_Collect(geom) FROM A;

0voto

user58927 Puntos 11

Creo que deberíamos utilizar Puntos_ST por esto.

SELECT ST_AsText(ST_Points(ST_MakeLine(ST_Point(0,0),ST_Point(1,1))))

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X