10 votos

Cálculo de la longitud de cada lado del polígono en PostGIS

En PostGIS, quiero calcular la longitud de los diferentes lados de un polígono. Sé cómo calcular un perímetro, pero ¿cómo calcular la longitud de lado a lado?

El perímetro es la suma de las longitudes de los lados, por lo que creo que PostGIS realiza esta operación.

Por ejemplo, un polígono básico como este :

WITH data AS (
    SELECT
        1 AS gid,
        'SRID=2154;POLYGON((0 1, 1 10, 20 30, 30 1, 0 1))'::geometry AS geom
)

SELECT
    gid,
    geom,
    ST_Perimeter(geom) AS perimeter
FROM
    data;

polygon_sides

¿Cuál es la longitud entre A y B, B y C, C y D, D y A?

11voto

Anton8000 Puntos 165

Ver: https://stackoverflow.com/questions/7595635/how-to-convert-polygon-data-into-line-segments-using-postgis :

SELECT st_length(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 yourtable
       ) 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