POSTGIS ermittelt die maximale Länge des Polygons und die durchschnittliche Breite

13

Ich habe in postgis eine Polygontabelle.

Ich muss die maximale Länge des Polygons automatisch berechnen:

Bildbeschreibung hier eingeben

Und die zweite ist die durchschnittliche Breite:

Bildbeschreibung hier eingeben

Ich bezweifle jetzt genau, ob dies möglich ist, da alle meine Polygone in anderen Fällen fast rechteckig sein werden, es wirklich mehrdeutig sein kann und es fast unmöglich ist, zwischen Breite und Höhe zu unterscheiden.

Mal sehen, ob jemand Licht ins Dunkel bringen kann.

Grüße,

Egidi
quelle
Es ist eine interessante Frage, und es ist definitiv möglich. Zumindest zeichnen Sie einfach eine Linie von jedem Scheitelpunkt zu jeder anderen polynomischen Laufzeit, aber eine Lösung. Weitere elegante Lösungen finden Sie unter gis.stackexchange.com/questions/32552/…
John Powell,
Ihre Darstellung der "maximalen Länge" scheint klar, aber Ihr Beispiel "durchschnittliche Breite" ist nicht senkrecht zu dieser Länge. Sollte es nicht sein? Dann erwähnen Sie "Höhe". Alles ein bisschen verwirrend!
Martin F
Ich denke, es sind weitere Einzelheiten zu diesem Konzept der durchschnittlichen Breite erforderlich, insbesondere mit Beispielen für die tatsächlichen Geometrien, die Sie verwenden
Raffael,

Antworten:

13

Zum ersten Teil Ihrer Frage: Was ist mit ST_LongestLine , wenn dieselbe Geometrie zweimal als Eingabe verwendet wird?

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

Für den zweiten Teil Ihrer Frage:

Bezüglich der Berechnung der Durchschnittsbreite von Polygonen finden Sie hier einige interessante Antworten: Wie kann ich die Durchschnittsbreite eines Polygons berechnen?

Thomas B
quelle
Das ist klug, wusste diese Funktion nicht.
John Powell
Das ist super nützlich. Gibt es eine Möglichkeit, aus dieser resultierenden längsten Linie eine Polylinie zu erstellen?
user1655130
7

Verwenden Sie für Teil eins ST_MaxDistance

Gibt den zweidimensionalen maximalen Abstand zwischen zwei Linienfolgen in projizierten Einheiten zurück. Wenn g1 und g2 dieselbe Geometrie haben, gibt die Funktion den Abstand zwischen den beiden Scheitelpunkten zurück, die in dieser Geometrie am weitesten voneinander entfernt sind.

Beispiel:

SELECT
gid,
ST_MaxDistance(geom, geom) AS "Max Length"
FROM layer
Raffael
quelle