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.