POSTGIS poligonun maksimum uzunluğunu ve ortalama genişliğini alır


13

Postgis'de çokgen tipi bir tablo var.

Otomatik olarak çokgenin maksimum uzunluğunu hesaplamak gerekir:

resim açıklamasını buraya girin

İkincisi ortalama genişlik:

resim açıklamasını buraya girin

Tüm poligonlarım diğer durumlarda neredeyse dikdörtgen olacak olsa da, gerçekten belirsiz olabilir ve genişlik ile yükseklik arasında ayrım yapmak neredeyse imkansız olduğu için, bu mümkün ise, şüphe ediyorum.

Bakalım birisi buna ışık tutabilir mi?

Saygılarımızla,


Bu ilginç bir soru ve kesinlikle mümkün. En azından her köşeden birbirine, bir polinom çalışma zamanına bir çizgi çizersiniz, ancak bir çözümdür. Daha zarif çözümler için gis.stackexchange.com/questions/32552/…
John Powell

"Maks. Uzunluk" resminiz net görünüyor, ancak "ortalama genişliği" örneğiniz söz konusu uzunluğa dik değil. Olmamalı mı? Sonra "yükseklik" den bahsediyorsunuz. Hepsi biraz kafa karıştırıcı!
Martin F

Bu ortalama genişlik kavramı, özellikle kullandığınız gerçek geometrilerin örnekleri ile daha fazla ayrıntıya ihtiyacım olduğunu düşünüyorum
raphael

Yanıtlar:


13

Sorunuzun ilk kısmı için: Girişle aynı geometriyi iki kez kullanan ST_LongestLine'a ne dersiniz ?

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

Sorunuzun ikinci kısmı için:

Çokgenlerin ortalama genişliğinin hesaplanmasıyla ilgili olarak burada bazı ilginç cevaplar bulunabilir: Bir çokgenin ortalama genişliğini nasıl hesaplayabilirim?


Bu zekice, bu işlevi bilmiyordum.
John Powell

Bu çok faydalı. Bu sonuçtaki en uzun çizgiden bir çoklu çizgi oluşturmanın bir yolu var mı?
user1655130

7

Birinci bölüm için ST_MaxDistance kullanın

Yansıtılan birimlerde iki satır dizisi arasındaki 2 boyutlu maksimum mesafeyi döndürür. G1 ve g2 aynı geometriyse işlev, iki geometri arasındaki mesafeyi o geometride birbirinden en uzağa döndürür.

Misal:

SELECT
gid,
ST_MaxDistance(geom, geom) AS "Max Length"
FROM layer
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.