POSTGIS отримують максимальну довжину багатокутника і середню ширину


13

Я маю в postgis таблицю типу багатокутника.

Мені потрібно автоматично обчислити максимальну довжину багатокутника:

введіть тут опис зображення

А другий - середня ширина:

введіть тут опис зображення

Я сумніваюсь у жорсткості, якщо це можливо, хоча хоча всі мої багатокутники будуть майже прямокутними, в інших випадках це може бути дійсно неоднозначно, і розрізнити ширину та висоту майже неможливо.

Подивимось, чи може хтось пролити на це світло.

З повагою,


Це цікаве питання, і це, безумовно, можливо. Принаймні, ви просто накресліть межу від кожної вершини до кожної іншої, поліноміальне виконання точно, але рішення. Щоб отримати більш вишукані рішення, подивіться на gis.stackexchange.com/questions/32552/…
Джон Пауелл

Ваша ілюстрація "максимальної довжини" здається зрозумілою, але ваш приклад "середня ширина" не перпендикулярний до вказаної довжини. Чи не повинно бути? Тоді ви згадуєте "висоту". Все трохи заплутано!
Мартін Ф

Я думаю, що більше інформації про цю концепцію середньої ширини потрібно, зокрема з прикладами фактичної геометрії, яку ви використовуєте
Рафаель

Відповіді:


13

На першу частину вашого питання: Що з ST_LongestLine, що використовує ту саму геометрію вдвічі як вхідний?

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

Щодо другої частини вашого питання:

Щодо обчислення середньої ширини багатокутників, тут можна знайти деякі цікаві відповіді: Як я можу обчислити середню ширину багатокутника?


Це розумно, не знав цієї функції.
Джон Пауелл

Це супер корисно. Чи є спосіб створити поліліній з цього результату найдовшого рядка?
користувач1655130

7

Для першої частини використовуйте ST_MaxDistance

Повертає двовимірне максимальне відстань між двома рядками рядків у проектованих одиницях. Якщо g1 і g2 однакова геометрія, функція поверне відстань між двома вершинами, найбільш віддаленими одна від одної в цій геометрії.

Приклад:

SELECT
gid,
ST_MaxDistance(geom, geom) AS "Max Length"
FROM layer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.