Работа с мышью

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
BodyZ
Участник
Сообщения: 70
Зарегистрирован: 04 сен 2009, 16:47
Репутация: 1

Работа с мышью

Сообщение BodyZ » 18 сен 2011, 20:13

Доброго времени суток :)
Подскажите пожалуйста как можно определить
над какими объектами слоев была нажата кнопка мыши.
Заранее спасибо :wink:

Аватара пользователя
novia
Гуру
Сообщения: 2261
Зарегистрирован: 29 апр 2011, 15:06
Репутация: 489
Откуда: Тель-Авив

Re: Работа с мышью

Сообщение novia » 18 сен 2011, 20:54

конкретизируйте, пожалуйста, вопрос.
для какой священной цели нужно знать над каким объектом произошел клик? (вы что-то программируете свое или это процесс работы со стандартными функциями?)

какая версия ArcGIS у вас установлена (в 10-ке появился специальный подсказчик)

в каком состоянии нажимаете кнопку мыши (какой инструмент выбран)?
понравилось? жми палец вверх :!:

BodyZ
Участник
Сообщения: 70
Зарегистрирован: 04 сен 2009, 16:47
Репутация: 1

Re: Работа с мышью

Сообщение BodyZ » 18 сен 2011, 21:10

Я программирую.
Необходимо чтобы программно можно было
определить какие объекты и каких слоев находятся под мышью во время нажатия левой кнопки мыши

Аватара пользователя
novia
Гуру
Сообщения: 2261
Зарегистрирован: 29 апр 2011, 15:06
Репутация: 489
Откуда: Тель-Авив

Re: Работа с мышью

Сообщение novia » 18 сен 2011, 21:22

не силен в этой области.
но попробуйте посмотреть как работает стандартная идентификация (инструмент Identify), наверняка есть метод, реализующий то, что вам нужно.

пишете на arcobjects?
понравилось? жми палец вверх :!:

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Работа с мышью

Сообщение Дмитрий Барышников » 18 сен 2011, 23:00

У вас есть экранные координаты в пикселах.
У интерфейса IScreenDisplay (http://resources.esri.com/help/9.3/ArcG ... splay2.htm) есть свойство IDisplayTransformation (http://resources.esri.com/help/9.3/ArcG ... mation.htm).
Например, используйте метод ToMapPoint интерфейса IDisplayTransformation чтобы пересчитать в координаты карты. А далее простой пространственный запрос.

Вот примеры
1. http://resources.esri.com/help/9.3/arcg ... 7592e0.htm
2. http://forums.arcgis.com/threads/19513- ... iven-layer

BodyZ
Участник
Сообщения: 70
Зарегистрирован: 04 сен 2009, 16:47
Репутация: 1

Re: Работа с мышью

Сообщение BodyZ » 22 сен 2011, 11:07

Доброго времени суток.
Спасибо за помощь :)
Извините, может быть глупый вопрос :oops: , но как мне организовать обработчик мыши. :?:
Заранее спасибо

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Работа с мышью

Сообщение Дмитрий Барышников » 22 сен 2011, 13:15

Создаете кнопку типа tool - http://edndoc.esri.com/arcobjects/9.2/C ... /ITool.htm
все обработчики там есть.

BodyZ
Участник
Сообщения: 70
Зарегистрирован: 04 сен 2009, 16:47
Репутация: 1

Re: Работа с мышью

Сообщение BodyZ » 23 сен 2011, 08:07

Большое спасибо за помощь. :wink:
С Вами, как всегда, приятно работать.
Чувствуется, что хелп ЕСРИ перерыт по несколько раз. 8)
Спасибо, что помогаете не заблудиться в его дебрях :)

BodyZ
Участник
Сообщения: 70
Зарегистрирован: 04 сен 2009, 16:47
Репутация: 1

Re: Работа с мышью

Сообщение BodyZ » 23 сен 2011, 16:19

Доброго времени суток.
Что-то я торможу :oops:
Сделал так

Код: Выделить всё

ESRI.ArcGIS.Display.IDisplayTransformation dtransf = new DisplayTransformationClass();
            IPoint point = dtransf.ToMapPoint(X, Y);
Нужного результата не добился.
Может интерфейс

Код: Выделить всё

IDisplayTransformation
тянуть от какого то слоя, или от проекта?
Заранее спасибо

BodyZ
Участник
Сообщения: 70
Зарегистрирован: 04 сен 2009, 16:47
Репутация: 1

Re: Работа с мышью

Сообщение BodyZ » 23 сен 2011, 16:58

Разобрался с преобразованием.
Нужно было сделать так

Код: Выделить всё

IMxDocument m_doc = m_application.Document as IMxDocument;
IActiveView pActiveView = m_doc.FocusMap as IActiveView;
IPoint point1 = pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y);

Подскажите как теперь правильно организовать пространственный
запрос, если необходимо проанализировать несколько слоев
в FocusMap.
Заранее спасибо за ответ

BodyZ
Участник
Сообщения: 70
Зарегистрирован: 04 сен 2009, 16:47
Репутация: 1

Re: Работа с мышью

Сообщение BodyZ » 26 сен 2011, 23:09

Нашел такой вариант.
Executing spatial queries
Пока разбираюсь

Ответить

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

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

Сейчас этот форум просматривают: Ahrefs [Bot] и 2 гостя