Область по углам карты
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 01 мар 2009, 17:44
- Репутация: 0
Область по углам карты
Здравствуйте!!! Столкнулся с проблемой, подскажите если можете. Суть такова...
Имеется область (обычный прямоугольник) и необходимо поместить ее в окно карты
по значениям:
x_min = ObjectGeography(objcopy, OBJ_GEO_MINX)
y_min = ObjectGeography(objcopy, OBJ_GEO_MINY)
x_max = ObjectGeography(objcopy, OBJ_GEO_MAXX)
y_max = ObjectGeography(objcopy, OBJ_GEO_MAXY)
То есть по углам, правый верхний и левый нижний.
если область поворачивается, то соответственно необходимо менять размер карты (масштаб заданный!)
Может и не менять масштаб, а просто вписать по углам.
Перерыл все руководство и справочник, но ничего...
Пробовал через MapperInfo() (MAPPER_INFO_MINX и т.п), не получилось.
Имеется область (обычный прямоугольник) и необходимо поместить ее в окно карты
по значениям:
x_min = ObjectGeography(objcopy, OBJ_GEO_MINX)
y_min = ObjectGeography(objcopy, OBJ_GEO_MINY)
x_max = ObjectGeography(objcopy, OBJ_GEO_MAXX)
y_max = ObjectGeography(objcopy, OBJ_GEO_MAXY)
То есть по углам, правый верхний и левый нижний.
если область поворачивается, то соответственно необходимо менять размер карты (масштаб заданный!)
Может и не менять масштаб, а просто вписать по углам.
Перерыл все руководство и справочник, но ничего...
Пробовал через MapperInfo() (MAPPER_INFO_MINX и т.п), не получилось.
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Область по углам карты
Из описания задача не ясна совершенно. И прямоугольник и окно карты. Напишите полную задачу.
И особенно не понятно, как именно вращается прямоугольник или для чего?
И особенно не понятно, как именно вращается прямоугольник или для чего?
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 01 мар 2009, 17:44
- Репутация: 0
Re: Область по углам карты
Суть такова имеется полоса, состоящая из множества снимков. Снимки обводятся областями (прямоугольниками). То есть каждая область по контуру повторяет каждый снимок. Полоса изгибается, соответственно меняется положение снимков (соответственно и областей) на экране. Нужно вписать снимок (область) в окно карты. Сначала один, потом второй, третий и т.д. Соответственно надо, чтобы окно карты подстраивалось под конкретную область
У меня мысли такие. Есть функция ObjectGeography(), которая определяет минимальные и максимальные координаты прямоугольного покрытия выбранной области
x_min = ObjectGeography(objcopy, OBJ_GEO_MINX)
y_min = ObjectGeography(objcopy, OBJ_GEO_MINY)
x_max = ObjectGeography(objcopy, OBJ_GEO_MAXX)
y_max = ObjectGeography(objcopy, OBJ_GEO_MAXY)
И полученные значения, я хотел использовать вместо значений функции MapperInfo() которая определяет минимальную и максимальную координату карты, показанного в окне
min_x = MapperInfo(map_win_id,MAPPER_INFO_MINX)
min_y = MapperInfo(map_win_id,MAPPER_INFO_MINY)
max_x = MapperInfo(map_win_id,MAPPER_INFO_MAXX)
max_y = MapperInfo(map_win_id,MAPPER_INFO_MAXY)
Из этого ничего не вышло.... Надеюсь, что объяснил подробно. Спасибо))
У меня мысли такие. Есть функция ObjectGeography(), которая определяет минимальные и максимальные координаты прямоугольного покрытия выбранной области
x_min = ObjectGeography(objcopy, OBJ_GEO_MINX)
y_min = ObjectGeography(objcopy, OBJ_GEO_MINY)
x_max = ObjectGeography(objcopy, OBJ_GEO_MAXX)
y_max = ObjectGeography(objcopy, OBJ_GEO_MAXY)
И полученные значения, я хотел использовать вместо значений функции MapperInfo() которая определяет минимальную и максимальную координату карты, показанного в окне
min_x = MapperInfo(map_win_id,MAPPER_INFO_MINX)
min_y = MapperInfo(map_win_id,MAPPER_INFO_MINY)
max_x = MapperInfo(map_win_id,MAPPER_INFO_MAXX)
max_y = MapperInfo(map_win_id,MAPPER_INFO_MAXY)
Из этого ничего не вышло.... Надеюсь, что объяснил подробно. Спасибо))
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Область по углам карты
Я все равно не понял степень автоматизации ваших задач. Какое именно условие включает именно этот переход. Если вам необходимо это автоматизировать, то скажите до какой степени. Потому как руками это делается 1 движением мышки и двумя нажатиями клавиш:
А) Создаем окно с картой и полосой снимков
Б) Открываем окно Таблица ( Browse) с таблицей контуров снимков
Теперь:
1. выделяем в таблице нужный снимок
2. Нажимаем две комбинации клавиш - Ctrl+A (найти во всех окнах) + Ctrl+W (Снять выделение)
--
Все - ваш снимок максимально расположен на экране.
А) Создаем окно с картой и полосой снимков
Б) Открываем окно Таблица ( Browse) с таблицей контуров снимков
Теперь:
1. выделяем в таблице нужный снимок
2. Нажимаем две комбинации клавиш - Ctrl+A (найти во всех окнах) + Ctrl+W (Снять выделение)
--
Все - ваш снимок максимально расположен на экране.
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Область по углам карты
Да, забыл добавить - раз это работает по нажатию клавиш - значит это стандартные (ну по крайней мере начиная с некоторой версии) команды. Их текст можно увидеть в списке команд меню - файле MAPINFOW.MNU. Это "чистые" команды на MB:
Код: Выделить всё
'** Find Selection submenu ****************************************************
Create Menu "Fin&d Selection" As
"In Current &Map Window\tCtrl+G/W^G"
HelpMsg "Select an item/row and find the selection in the front map window."
calling 312,
"In All &Windows\tCtrl+A/W^A"
HelpMsg "Select an item/row and find the selection in all windows."
calling 306
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 01 мар 2009, 17:44
- Репутация: 0
Re: Область по углам карты
Видимо все таки плохо объяснил)))
Необходимо вписать область в окно карты, целиком и без лишнего места
Необходимо вписать область в окно карты, целиком и без лишнего места
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Область по углам карты
Если вообще ничего не вышло, то самый возможный вариант - таблица, окно и ВНУТРЕННЯЯ система координат MapInfo - разные. По умолчанию MI держит и вычисляет внутренние данные в проекции 1,0 - WGS84 градусы-минуты.
Для того, что бы явно ее сменить используется команда Set CoordSys...
----
Если вам не жалко терять текущее выделение, или наоборот, вам нужно, что бы команда работала именно с выделенным объектом (объектами), то самое простое - использовать команды, которые я указал выше. Вот последовательность действий:
1. выделяем объект
2. переходим в окно, в котором надо его верно отобразить
3. выполняем команду: Ctrl+G M_QUERY_FIND_SELECTION_CURRENT_MAP = 312
4. если необходимо - снимаем выделение Ctrl+W M_QUERY_UNSELECT=304
------
Небольшие границы - всегда остаются, MI не точно вычисляет границы экрана ил скорее всего плохо вычисляет ширину полос прокрутки.
------
Функция MapperInfo - не устанавливает границ окна. Окно устанавливается двумя командами:
1. - устанавливаются границы и размер ЛЮБОГО окна в единицах монитора
2. - Устанавливает центр окна и его ширину в единицах проекта. Внешние границы окна - при этом НЕ меняются. Только происходит центрирование и задание масштаба.
Для того, что бы явно ее сменить используется команда Set CoordSys...
----
Если вам не жалко терять текущее выделение, или наоборот, вам нужно, что бы команда работала именно с выделенным объектом (объектами), то самое простое - использовать команды, которые я указал выше. Вот последовательность действий:
1. выделяем объект
2. переходим в окно, в котором надо его верно отобразить
3. выполняем команду: Ctrl+G
Код: Выделить всё
Run Menu M_QUERY_FIND_SELECTION_CURRENT_MAP
4. если необходимо - снимаем выделение Ctrl+W
Код: Выделить всё
Run Menu M_QUERY_UNSELECT
------
Небольшие границы - всегда остаются, MI не точно вычисляет границы экрана ил скорее всего плохо вычисляет ширину полос прокрутки.
------
Функция MapperInfo - не устанавливает границ окна. Окно устанавливается двумя командами:
1.
Код: Выделить всё
Set Window window_id
[ Position ( x, y ) [ Units paper_units ] ]
[ Width win_width [ Units paper_units ] ]
[ Height win_height [ Units paper_units ] ]
2.
Код: Выделить всё
Set Map
[ Window window_id ]
[ Center ( longitude, latitude ) [ Smart Redraw ] ]
[ Clipping { Object clipper | Off | On } | Using
[Display { All | PolyObj } | Overlay ] } ]]
[ Zoom { zoom_distance [ Units dist_unit ] |
Entire [ Layer layer_id ] } ]
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя