POSTGIS obtient la longueur maximale du polygone et la largeur moyenne

13

J'ai dans postgis une table de type polygone.

J'ai besoin de calculer automatiquement la longueur maximale du polygone:

entrez la description de l'image ici

Et le second est la largeur moyenne:

entrez la description de l'image ici

Je doute maintenant que cela soit possible, car bien que tous mes polygones soient presque rectangulaires dans d'autres cas, cela peut être vraiment ambigu et il est presque impossible de distinguer la largeur de la hauteur.

Voyons voir si quelqu'un peut faire la lumière là-dessus.

Cordialement,

Egidi
la source
C'est une question intéressante, et c'est certainement possible. À tout le moins, vous tracez simplement une ligne de chaque sommet à chaque autre, l'exécution polynomiale à coup sûr, mais une solution. Pour des solutions plus élégantes, consultez gis.stackexchange.com/questions/32552/…
John Powell
Votre illustration de la «longueur maximale» semble claire, mais votre exemple de «largeur moyenne» n'est pas perpendiculaire à ladite longueur. N'est-ce pas? Vous parlez ensuite de "hauteur". Un peu déroutant!
Martin F
Je pense que plus de détails sont nécessaires sur ce concept de largeur moyenne, en particulier avec des exemples des géométries réelles que vous utilisez
raphael

Réponses:

13

Pour la première partie de votre question: qu'en est- il de ST_LongestLine utilisant deux fois la même géométrie en entrée?

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

Pour la deuxième partie de votre question:

Concernant le calcul de la largeur moyenne des polygones, quelques réponses intéressantes peuvent être trouvées ici: Comment puis-je calculer la largeur moyenne d'un polygone?

Thomas B
la source
C'est intelligent, je ne connaissais pas cette fonction.
John Powell
C'est super utile. Existe-t-il un moyen de créer une polyligne à partir de cette plus longue ligne résultante?
user1655130
7

Pour la première partie, utilisez ST_MaxDistance

Renvoie la distance maximale bidimensionnelle entre deux chaînes de lignes en unités projetées. Si g1 et g2 ont la même géométrie, la fonction renvoie la distance entre les deux sommets les plus éloignés l'un de l'autre dans cette géométrie.

Exemple:

SELECT
gid,
ST_MaxDistance(geom, geom) AS "Max Length"
FROM layer
raphael
la source