11 votos

Explotar MULTILINESTRING en segmentos individuales en PostGIS 1.5

Tengo un MULTILINESTRING en PostGIS que consta de varios LINESTRING's. Considerar cada LINESTRING tener un conjunto de POINT's

P1, P2, ... PN

la formación de los segmentos de línea

L1, L2, ... LDE N-1

donde LX es el segmento de línea que une PX a PX+1.

El uso de PostGIS 1.5 ¿cómo puedo explotar la MULTILINESTRING en determinados segmentos de línea de cada LINESTRING?

13voto

Symmetric Puntos 158

Dos opciones vienen a la mente. Si desea que un determinado LINESTRING a continuación, puede utilizar ST_NumGeometries() y ST_GeometryN(). Alternativamente, si desea que todas las sub-geometrías, ST_Dump() es el camino a seguir.

Después de leer la pregunta, usted tendrá que hacer algo similar a este post desde el postgis-los usuarios de la lista:

SELECT ST_AsText( ST_MakeLine(sp,ep) )
FROM
-- extract the endpoints for every 2-point line segment for each linestring
(SELECT
  ST_PointN(geom, generate_series(1, ST_NPoints(geom)-1)) as sp,
  ST_PointN(geom, generate_series(2, ST_NPoints(geom)  )) as ep
FROM
   -- extract the individual linestrings
  (SELECT (ST_Dump(ST_Boundary(geom))).geom
   FROM mypolygontable
   -- eliminate 0 length linestring 
    where st_x(st_startpoint(geom))<> st_x(st_endpoint(geom))
   ) AS linestrings
) AS segments;

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