www.map-info.ru :: Просмотр темы - Коэффициент протяженности полигона.
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
xax_nv



Зарегистрирован: 28.10.2011
Сообщения: 43
Откуда: г. Нижневартовск

СообщениеДобавлено: Вс Фев 26, 2017 4:20 pm    Заголовок сообщения: Коэффициент протяженности полигона. Добавить ответ со ссылкой на данный текст

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



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Пн Фев 27, 2017 2:43 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Смотри Функция ObjectGeography( ), параметры OBJ_GEO_MINX, ...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
xax_nv



Зарегистрирован: 28.10.2011
Сообщения: 43
Откуда: г. Нижневартовск

СообщениеДобавлено: Пн Фев 27, 2017 2:44 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Спасибо, посмотрю.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
xax_nv



Зарегистрирован: 28.10.2011
Сообщения: 43
Откуда: г. Нижневартовск

СообщениеДобавлено: Пн Фев 27, 2017 5:22 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Посмотрел, но что-то не понял, какую пользу я могу из нее извлечь.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Ср Мар 01, 2017 11:03 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

особо никакую... стандартные функции дадут информацию об MBR (minimum boundary rectangle). и, в общем случае, эта информация никак не связана с длинной средней линии: объект может быть расположен по диагонали, объект может быть "незамкнутый бублик". Для решения задачи надо придумывать какой-то свой алгоритм.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Ср Мар 01, 2017 2:07 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Польза есть. Строим объект, который очерчивает полигон. Находим четыре общие точки полигона и объекта. Строим две линии. Отношение длин линий и будет искомое.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Ср Мар 01, 2017 2:31 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Nick4 писал(а):
Польза есть. Строим объект, который очерчивает полигон. Находим четыре общие точки полигона и объекта. Строим две линии. Отношение длин линий и будет искомое.

ну тогда посмотрим на примеры:
[img]http://screenshot.ru/upload/image/zYNP[/img]
слева бублик. какая линия от MBR будет давать длину, а какая ширину?
справа многоугольник. как запариться и взять какие именно 4 точки на пересечении с MBR?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Пт Мар 03, 2017 1:50 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

С бубликом все работает, как я описал. Четыре точки, которые соприкасаются с контуром создают две линии. Со вторым объектом, Вы взяли случай, когда грани идут строго по описывающему прямоугольнику. В этом случае надо взять среднюю точку из общей линии соприкосновения. Если на одной грани отсутствует общая точка (угловая), тогда строим одну линию там где есть две опозитные точки и относительно её строим перпендикуляр, который начинается с третьей тоски соприкосновения, пересекает построенную линию и заканчивается на границе объекта.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
xax_nv



Зарегистрирован: 28.10.2011
Сообщения: 43
Откуда: г. Нижневартовск

СообщениеДобавлено: Пт Мар 03, 2017 1:55 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Вы предлагаете все это проделывать вручную? Question
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Пт Мар 03, 2017 1:57 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

т.е. у бублика средняя длина будет раза в 2 меньше чем есть по факту?
а ширина у бублика раз в 5 меньше чем высота MBR?
я без картинок тяжело понимаю о каких линиях идет речь, но что-то мне подсказывает, что как не крути - двумя линиями не обойтись.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Вс Мар 05, 2017 12:54 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Для ответа на вопрос про линии, прошу вернуться Вас к первому посту. Требуется вычислить соотношение длины и ширины полигона. Для решения задачи нужно построить две линии, которые соединяют максимальную длину и ширину. Коэффициент есть отношение длин линий. Таким образом задача состоит лишь в правильном построении двух линий. Функции на mapbasic построения перпендикуляров или линий объектов с общими точками не сложны. Не справитесь, помогу.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
sunzh



Зарегистрирован: 13.05.2006
Сообщения: 19

СообщениеДобавлено: Пн Июл 31, 2017 3:39 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Интересная тема. 100 пудово есть математическое решение MBR в чистом виде задачу не решает. Навскидку: Создается копия исходного объекта, строиться MBR вычисляется площадь, заноситься в массив, затем копию объекта поворачивают на (предположим) 1 градус. Снова вычиляется площадь МОП, и т. д. до 180 градусов. Затем берется МОП с минимальной площадью. Отношение сторон и будет коэффициентом вытянутости. шаг в градусах влияет на точность. Решение громоздкое с виду но думаю математически возможно сделать все проще, например через афинное преобразование начальной СК. Вобщем нужны математики. Крутить ротейтом можно, но в ранних версиях не работает.
З.Ы. Поделитесь решением если получиться.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru