MapINFO: Как определить имеется ли у полигона "Окно"

MapInfo, MapBasic
Ответить
Albert
Интересующийся
Сообщения: 16
Зарегистрирован: 03 мар 2008, 12:27
Репутация: 0

MapINFO: Как определить имеется ли у полигона "Окно"

Сообщение Albert » 10 мар 2008, 16:56

Имеем полигон.. Внутри этого полигона есть пустое "окно"
Как средствами MapBASIC'а определить координаты вершин этого окна

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: MapINFO: Как определить имеется ли у полигона "Окно"

Сообщение Boris » 11 мар 2008, 07:10

Albert писал(а):Имеем полигон.. Внутри этого полигона есть пустое "окно"
Как средствами MapBASIC'а определить координаты вершин этого окна
А что такое окно? Если "дырка внутри", то
самый простой способ разобраться - выкиньте все в MIF и глазами посмотрите, что он там прописывает перед "окном", заодно оттуда и координаты получите. Причем без всякого Basic'а. Иначе предстоит вам долгий путь по перечисляемым сегментам и их вершинам, другого в функциях Basic'а не видел.

Albert
Интересующийся
Сообщения: 16
Зарегистрирован: 03 мар 2008, 12:27
Репутация: 0

Сообщение Albert » 11 мар 2008, 09:19

Спасибо, попробую... просто хотел этот процесс автоматизировать, ибо имеются сложные полигоны с большим количеством вершин

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Сообщение KolesovDmitry » 11 мар 2008, 10:41

Вставлю свои пять копеек, может они натолкнут на мысль: если меня память не обманывает (MapInfo под рукой нет и проверить не могу), то узнать, является ли данный полигон составным или нет, достаточно легко - нужно лишь выделить полигон и нажать F7 (а может, F5 - не помню точно - надо в справке посмотреть). Появится окно информации - количество сегментов, составляющих полигон, количество полигонов, составляющих данный полигон и т.п.

Эту процедуру (выдающую информацию о геометр. объекте) можно вызвать прораммно из MapBasic - нужно только узнать ее итентификационный номер (команда Call ID, - если опять же меня память не подводит, - но опять же, все это описано в справке по MapBasic). Идентификационные номера стандартных процедур можно узнать в подключаемом заголовочном файле называется то ли mapinfo.mnu, то ли mapinfo.bas, то ли еще как... (склероз проклятый!) . Но точно помню, что этот файл лежит в основном каталоге, в который устанавливался MapInfo (в каталоге, где лежит екзешник).

Albert
Интересующийся
Сообщения: 16
Зарегистрирован: 03 мар 2008, 12:27
Репутация: 0

Сообщение Albert » 11 мар 2008, 12:10

Спасибо

Albert
Интересующийся
Сообщения: 16
Зарегистрирован: 03 мар 2008, 12:27
Репутация: 0

Сообщение Albert » 11 мар 2008, 17:40

Значит сделал так
При помощи ObjectInfo(new_obj, OBJ_INFO_NPOLYGONS) узнал количество полигонов,
А при помощи ObjectInfo(new_obj, OBJ_INFO_NPOLYGONS+i) получил поличество вершин в заданном полигоне
А потом при помощи ObjectNodeX(new_obj, i, n) и ObjectNodeY(new_obj, i, n) обошел все полигоны в двойном цикле где i цикл полигонов, а n цикл вершин

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: MapINFO: Как определить имеется ли у полигона "Окно"

Сообщение Boris » 22 мар 2008, 00:21

Boris писал(а):Иначе предстоит вам долгий путь по перечисляемым сегментам и их вершинам, другого в функциях Basic'а не видел.
Что и требовалось доказать...

Ответить

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

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

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