Ситуация следующая.
Полноценная поддержка функций работы с мультиполигонами будет реализована только в GIS ToolKit версии 12 и ГИС "Панорама 12".
Соответствующие изменения уже внесены, в настоящее время проходят тестирование и в ближайшее время станут доступны в составе дистрибутивов на нашем сайте.
Реализовать поддержку аналогичного функционала в ГИС-ядре версии 11, к сожалению, не представляется возможным.
Пользователи GIS ToolKit 11 могут обработать внешние подобъекты мультиполигонов самостоятельно.
Примерно так:
Скрытый текст |
---|
Код |
---|
HCROSS hcross;
HOBJ infocross = mapCreateSiteObject(Hmap,TempSite,IDDOUBLE2, 0);
HOBJ minfo = mapCreateSiteObject(Hmap,TempSite,IDDOUBLE2, 0);
double square;
// Info1 - мультиполигон
if (mapIsMultiPolygon(Info1))
{
for (int j=1; j<mapPolyCount(Info1); j++)
{
if (mapGetSubjectMultiFlag(Info1,j) == 0) continue;
// Сделать объект из подобъекта c номером j
if (mapReadCopySubject(minfo, Info1, j) == 0) continue;
hcross = mapCreateObjectsCrossSquare(minfo,Info2,0);
if (hcross == 0) continue; // нет пересечения
while (mapGetNextCross(hcross,infocross) != 0)
{
// что-то сделаем с полученным фрагментом-пересечением
// например, сохраним как отдельный объект
NumObj = mapCommitObjectAsNew(infocross);
// или просуммируем площади пересечений
if (mapPointCount(infocross,0)>3)
square += mapConventionalSquare(infocross);
}
mapFreeObjectsCross(hcross);
hcross = 0;
} |
|
Tim, в качестве компенсации за предоставленные неудобства мы готовы рассмотреть вопрос об обновлении Вашего GIS ToolKit 11 до версии 12 на индивидуальных условиях.
Для этого обратитесь, пожалуйста, в техподдержку по e-mail. В письме укажите номер ключа и другую идентификационную информацию, предоставленную при покупке GIS ToolKit 11, а также ссылку на данную тему.