Коэффициент протяженности полигона.

MapInfo, MapBasic
Ответить
Аватара пользователя
xax_nv
Новоприбывший
Сообщения: 3
Зарегистрирован: 26 фев 2017, 17:13
Репутация: 0

Коэффициент протяженности полигона.

Сообщение xax_nv » 26 фев 2017, 17:16

Приветствую всех!
Коллеги, помогите найти алгоритм расчета коэффициента протяженности полигона, т.е. отношение средней длины к средней ширине. Что-то ничего сам придумать не смог. :oops:

gamm
Гуру
Сообщения: 4048
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: Коэффициент протяженности полигона.

Сообщение gamm » 26 фев 2017, 20:18

xax_nv писал(а):Коллеги, помогите найти алгоритм расчета коэффициента протяженности полигона, т.е. отношение средней длины к средней ширине. Что-то ничего сам придумать не смог.
самый простой вариант - сносить каждый полигон на растр, и считать главные компоненты, отношение осей (корней из собственных чисел) даст примерно то, что нужно. Грубо говоря, делаем регулярную сетку точек (достаточно частую), фильтруем те, которые попали в полигон, и, рассматривая их как двумерную выборку, считаем ковариационную матрицу и главные оси (собственные вектора). Поскольку координат всего две, все считается явно и просто. Если полигон не свернут "улиткой", то ответ будет вполне приемлимый, это проверено - фактически, эт о результат аппроксимации полигона эллипсом, может и готовые функции такого рода есть.

Аватара пользователя
xax_nv
Новоприбывший
Сообщения: 3
Зарегистрирован: 26 фев 2017, 17:13
Репутация: 0

Re: Коэффициент протяженности полигона.

Сообщение xax_nv » 26 фев 2017, 20:32

gamm, спасибо за ответ!
Пока что мой старческий мозг не смог переварить всего, вот если бы примерчик... :oops:

gamm
Гуру
Сообщения: 4048
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: Коэффициент протяженности полигона.

Сообщение gamm » 27 фев 2017, 20:36

xax_nv писал(а):вот если бы примерчик
питон с картинками тыц, формулы в вики тыц

Константин Г.
Интересующийся
Сообщения: 29
Зарегистрирован: 19 окт 2012, 13:52
Репутация: 2

Re: Коэффициент протяженности полигона.

Сообщение Константин Г. » 28 фев 2017, 13:17

gamm писал(а):Если полигон не свернут "улиткой.
А если свернут, то можно просто делить площадь на квадрат периметра, чем не коэффициент? подскажу и пределы : (0; 1/ 4 / Pi] :D

Аватара пользователя
xax_nv
Новоприбывший
Сообщения: 3
Зарегистрирован: 26 фев 2017, 17:13
Репутация: 0

Re: Коэффициент протяженности полигона.

Сообщение xax_nv » 28 фев 2017, 14:28

А если не свернут, есть решение попроще, чем предложил gamm? Меня устроит даже приблизительное значение.

Константин Г.
Интересующийся
Сообщения: 29
Зарегистрирован: 19 окт 2012, 13:52
Репутация: 2

Re: Коэффициент протяженности полигона.

Сообщение Константин Г. » 28 фев 2017, 15:10

Если приблизительно устроит - пожалуйста используйте вышеприведенную формулу.

Ну и если полигоном считать северную колбасу постоянной ширины, то очевидно, ее длина будет [периметр/2 - ширина] или [площадь / ширина]. Т.е. P/2 - L = S / L Отсюда находите и ширину и длину и их отношение. Но это для идеального случая.
Насчет решения gamm, мне кажется "сносить каждый полигон на растр" излишне. Есть готовые формулы для подсчета всех моментов полилинии. Но они больше помогут для вычисления "приближенного" экстента, если вас устроят его ширина и длина - вперед.

gamm
Гуру
Сообщения: 4048
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: Коэффициент протяженности полигона.

Сообщение gamm » 28 фев 2017, 16:49

xax_nv писал(а):А если не свернут, есть решение попроще, чем предложил gamm? Меня устроит даже приблизительное значение.
1) если полигон более-менее представим эллипсом, то считаем то, что я написал.

2) Если полигон - "червяк", то считаем осевую (это можно сделать в векторе, называется скелетон), и пляшем от нее: если скелетон просто линия, то площадь есть примерно ее длина на среднюю ширину, если много веточек - то в векторе пытаемся их отрезать. Упрощенный вариант - в посте выше

3) Если полигон ни, ни другое (а типа корня имбиря), то ширина и длина лоя него не определены, считаем компактность из площади А и периметра Р (круглость или квадратность, кто что любит):

Код: Выделить всё

круглость = 2*sqrt(pi)*sqrt(A)/P
квадратность = 4*sqrt(A)/P
первая равна 1 для круга, вторая для квадрата. А если посмотреть Fragstats, то там можно найти еще 100500 разных индексов формы на любой вкус.
Последний раз редактировалось gamm 28 фев 2017, 17:01, всего редактировалось 3 раза.

gamm
Гуру
Сообщения: 4048
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: Коэффициент протяженности полигона.

Сообщение gamm » 28 фев 2017, 16:52

Константин Г. писал(а):Есть готовые формулы для подсчета всех моментов полилинии.
у нас не полилиния, а полигон произвольной формы, возможно с дырками, и многосвязный. Поэтому насчет готовых формул у меня большие сомнения.

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей