POSTGIS ottiene la lunghezza massima del poligono e la larghezza media


13

Ho nei postgis una tabella dei tipi di poligoni.

Devo calcolare automaticamente la lunghezza massima del poligono:

inserisci qui la descrizione dell'immagine

E il secondo è la larghezza media:

inserisci qui la descrizione dell'immagine

Ora dubito del rigore se questo è possibile, poiché anche se tutti i miei poligoni saranno quasi rettangolari in altri casi, può essere davvero ambiguo ed è quasi impossibile distinguere tra larghezza e altezza.

Vediamo se qualcuno può far luce su questo.

Saluti,


È una domanda interessante ed è sicuramente possibile. Per lo meno basta semplicemente tracciare una linea da ogni vertice a vicenda, il runtime polinomiale di sicuro, ma una soluzione. Per soluzioni più eleganti, dai un'occhiata a gis.stackexchange.com/questions/32552/…
— John Powell,

L'illustrazione di "lunghezza massima" sembra chiara, ma l'esempio "larghezza media" non è perpendicolare a tale lunghezza. Non dovrebbe essere? Quindi menzioni "altezza". Tutto un po 'confuso!
— Martin F,

Penso che siano necessari maggiori dettagli su questo concetto di larghezza media, in particolare con esempi delle geometrie effettive che stai usando
— Raffaello

Risposte:


13

Per la prima parte della domanda: che dire di ST_LongestLine che utilizza la stessa geometria due volte come input?

SELECT 
  ST_Length(ST_LongestLine(
   (SELECT geom FROM mylayer WHERE gid=1),
   (SELECT geom FROM mylayer WHERE gid=1))
);

Per la seconda parte della tua domanda:

Per quanto riguarda il calcolo della larghezza media dei poligoni, è possibile trovare alcune risposte interessanti qui: Come posso calcolare la larghezza media di un poligono?


È intelligente, non conoscevo quella funzione.
— John Powell,

È super utile. C'è un modo per creare una polilinea da questa linea più lunga risultante?
— user1655130

7

Per la prima parte utilizzare ST_MaxDistance

Restituisce la distanza massima bidimensionale tra due stringhe di linea in unità proiettate. Se g1 e g2 hanno la stessa geometria, la funzione restituirà la distanza tra i due vertici più distanti tra loro in quella geometria.

Esempio:

SELECT
gid,
ST_MaxDistance(geom, geom) AS "Max Length"
FROM layer
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.