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

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-ке появился специальный подсказчик)

в каком состоянии нажимаете кнопку мыши (какой инструмент выбран)?
How to open GeoJSON, SHP, GPKG or GDB on Mac?

GeoPreview – fast GIS viewer for macOS
Step-by-step guides | Watch demo

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?
How to open GeoJSON, SHP, GPKG or GDB on Mac?

GeoPreview – fast GIS viewer for macOS
Step-by-step guides | Watch demo

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 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»

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

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