Всім доброго дня.
Є в мене така задача - розділити збірний полігональний об'єкт на не збірні. Немає проблем: функція
@Map.SplitMultiPolygon N "Разбивает составной полигон на отдельные полигоны, сохраняя внутренние".
Та ж сама задача - розділити збірний полігональний об'єкт на не збірні, однак об'єкт збірно-складний (комплексний полігон - бублик з частиною полігона в дірці від бублика). Функція не справляється з таким комплексом, відокремлюючи лише полігон№1 від складного №2&№3. Очевидно функція сприймає полігон №2&№3 як складний.
Вложение:
KomplexPolig.JPG [ 5.7 Кб | Просмотров: 9288 ]
Вирішення можливе двома шляхами:
1) зробити самому на тимчасовій карті
- після розділення функцією
@Map.SplitMultiPolygon N перебрати всі полігони, утворені функцією spbSplit (Операції з об'єктами.Розділити), застосованої до об'єктів, що мають розрив у коодинатах;
- зібрати полігони заново, перебравши їх в порядку зростання їхньої площі з оцінкою кількості перетинів горизонтального правого променя від центроїда, координати якого визначені функцією
@Map.Object[N].Centroid (якщо кількість перетинів не парна - полігон, якщо парна - дірка в полігоні);
2)
просити розробників допрацювати функцію @Map.SplitMultiPolygon N, на предмет розділення збірно-складних полігонів на прості та/або складні.
Бачте як: якщо самому (методом трасування променів), то перетини порахувати можна й без тимчасової карти, а от отримати площі чи координати центроїда - ніяк. Щоб без тимчасової карти, треба мати ще й функціональні скрипти:
- обчислення площі полігону за координатами поворотних точок межі;
- визначення координат центроїда за координатами точок межі полігона.
Складно