MapINFO: Как определить имеется ли у полигона "Окно"
-
- Интересующийся
- Сообщения: 16
- Зарегистрирован: 03 мар 2008, 12:27
- Репутация: 0
MapINFO: Как определить имеется ли у полигона "Окно"
Имеем полигон.. Внутри этого полигона есть пустое "окно"
Как средствами MapBASIC'а определить координаты вершин этого окна
Как средствами MapBASIC'а определить координаты вершин этого окна
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: MapINFO: Как определить имеется ли у полигона "Окно"
А что такое окно? Если "дырка внутри", тоAlbert писал(а):Имеем полигон.. Внутри этого полигона есть пустое "окно"
Как средствами MapBASIC'а определить координаты вершин этого окна
самый простой способ разобраться - выкиньте все в MIF и глазами посмотрите, что он там прописывает перед "окном", заодно оттуда и координаты получите. Причем без всякого Basic'а. Иначе предстоит вам долгий путь по перечисляемым сегментам и их вершинам, другого в функциях Basic'а не видел.
-
- Интересующийся
- Сообщения: 16
- Зарегистрирован: 03 мар 2008, 12:27
- Репутация: 0
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Вставлю свои пять копеек, может они натолкнут на мысль: если меня память не обманывает (MapInfo под рукой нет и проверить не могу), то узнать, является ли данный полигон составным или нет, достаточно легко - нужно лишь выделить полигон и нажать F7 (а может, F5 - не помню точно - надо в справке посмотреть). Появится окно информации - количество сегментов, составляющих полигон, количество полигонов, составляющих данный полигон и т.п.
Эту процедуру (выдающую информацию о геометр. объекте) можно вызвать прораммно из MapBasic - нужно только узнать ее итентификационный номер (команда Call ID, - если опять же меня память не подводит, - но опять же, все это описано в справке по MapBasic). Идентификационные номера стандартных процедур можно узнать в подключаемом заголовочном файле называется то ли mapinfo.mnu, то ли mapinfo.bas, то ли еще как... (склероз проклятый!) . Но точно помню, что этот файл лежит в основном каталоге, в который устанавливался MapInfo (в каталоге, где лежит екзешник).
Эту процедуру (выдающую информацию о геометр. объекте) можно вызвать прораммно из MapBasic - нужно только узнать ее итентификационный номер (команда Call ID, - если опять же меня память не подводит, - но опять же, все это описано в справке по MapBasic). Идентификационные номера стандартных процедур можно узнать в подключаемом заголовочном файле называется то ли mapinfo.mnu, то ли mapinfo.bas, то ли еще как... (склероз проклятый!) . Но точно помню, что этот файл лежит в основном каталоге, в который устанавливался MapInfo (в каталоге, где лежит екзешник).
-
- Интересующийся
- Сообщения: 16
- Зарегистрирован: 03 мар 2008, 12:27
- Репутация: 0
-
- Интересующийся
- Сообщения: 16
- Зарегистрирован: 03 мар 2008, 12:27
- Репутация: 0
Значит сделал так
При помощи 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 цикл вершин
При помощи 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 цикл вершин
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: MapINFO: Как определить имеется ли у полигона "Окно"
Что и требовалось доказать...Boris писал(а):Иначе предстоит вам долгий путь по перечисляемым сегментам и их вершинам, другого в функциях Basic'а не видел.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя