POSTGIS mendapatkan panjang maksimal poligon dan lebar rata-rata

13

Saya punya di postgis tabel jenis poligon.

Saya perlu menghitung secara otomatis panjang maksimum poligon:

masukkan deskripsi gambar di sini

Dan yang kedua adalah lebar rata-rata:

masukkan deskripsi gambar di sini

Saya ragu-ragu sekarang jika ini mungkin karena meskipun semua poligon saya akan hampir persegi panjang dalam kasus lain itu bisa sangat ambigu dan hampir mustahil untuk membedakan antara lebar dan tinggi.

Mari kita lihat apakah seseorang dapat menjelaskan hal ini.

Salam,

Egidi
sumber
Ini pertanyaan yang menarik, dan itu pasti mungkin. Paling tidak Anda cukup menggambar garis dari setiap titik ke titik lainnya, runtime polinomial pasti, tetapi solusi. Untuk solusi yang lebih elegan, lihat gis.stackexchange.com/questions/32552/…
John Powell
Ilustrasi "panjang maks" Anda tampak jelas, tetapi contoh "lebar rata" Anda tidak tegak lurus terhadap panjang tersebut. Bukankah seharusnya begitu? Lalu Anda menyebutkan "tinggi". Semua agak membingungkan!
Martin F
Saya pikir diperlukan lebih banyak detail pada konsep lebar rata-rata ini, khususnya dengan contoh-contoh geometri aktual yang Anda gunakan
raphael

Jawaban:

13

Untuk bagian pertama dari pertanyaan Anda: Bagaimana dengan ST_LongestLine menggunakan geometri yang sama dua kali sebagai input?

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

Untuk bagian kedua dari pertanyaan Anda:

Mengenai perhitungan rata-rata lebar poligon, beberapa jawaban menarik dapat ditemukan di sini: Bagaimana saya bisa menghitung lebar rata-rata poligon?

Thomas B
sumber
Itu pintar, tidak tahu fungsi itu.
John Powell
Itu sangat berguna. Apakah ada cara membuat polyline dari garis terpanjang yang dihasilkan ini?
user1655130
7

Untuk bagian satu gunakan ST_MaxDistance

Mengembalikan jarak maksimum 2 dimensi antara dua linestrings dalam unit yang diproyeksikan. Jika g1 dan g2 adalah geometri yang sama, fungsi akan mengembalikan jarak antara dua simpul yang paling jauh satu sama lain dalam geometri itu.

Contoh:

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