Формы VBA в ArcMap
-
- Участник
- Сообщения: 73
- Зарегистрирован: 03 сен 2007, 12:40
- Репутация: 3
- Откуда: Москва
- Контактная информация:
Формы VBA в ArcMap
Ищу совета в реализации следующей задачи:
Есть точечная тема с индексами точек и таблица, где каждому индексу соответствуют записи (индекс, дата, значение). Хочется сделать так, чтобы при нажатии на точку выскакивала форма (например VBA), в которой для данного индекса можно составить SQL-запрос на выбор определенных данных из таблицы. Запрос должен открываться в отдельном окне.
Как это сделать на MySQL+PHP+какой-нибудь карт. API я себе представляю, а в ArcMap почему-то не представляю. Подскажите, пожалуйста.
Есть точечная тема с индексами точек и таблица, где каждому индексу соответствуют записи (индекс, дата, значение). Хочется сделать так, чтобы при нажатии на точку выскакивала форма (например VBA), в которой для данного индекса можно составить SQL-запрос на выбор определенных данных из таблицы. Запрос должен открываться в отдельном окне.
Как это сделать на MySQL+PHP+какой-нибудь карт. API я себе представляю, а в ArcMap почему-то не представляю. Подскажите, пожалуйста.
- gimran
- Гуру
- Сообщения: 1902
- Зарегистрирован: 07 июл 2010, 15:43
- Репутация: 242
- Откуда: Уфа
Re: Формы VBA в ArcMap
help.arcgis.com
то есть как понял: щелчок по точке в ArcMap — получение индекса из таблицы атрибутов для данной точки — «некая sql-обработка».
а теперь вопрос: таблица из сторонней программы или запрос из таблицы атрибутов в ArcMap?
можете привести примерную схему работы того, что Вам нужно?
желательно пример приближенный к реальности
то есть как понял: щелчок по точке в ArcMap — получение индекса из таблицы атрибутов для данной точки — «некая sql-обработка».
а теперь вопрос: таблица из сторонней программы или запрос из таблицы атрибутов в ArcMap?
можете привести примерную схему работы того, что Вам нужно?
желательно пример приближенный к реальности
-
- Участник
- Сообщения: 73
- Зарегистрирован: 03 сен 2007, 12:40
- Репутация: 3
- Откуда: Москва
- Контактная информация:
Re: Формы VBA в ArcMap
запрос из таблицы в базе геоданных (конкретно - таблица Access). Схема - щелкаем на точке из шейпа, получаем ее индекс, по этому индексу строим некий запрос в форме, по выполнении запроса получаем новую таблицу с данными. Проблема в том, что задача поставлена так и никак иначе, а то я бы лучше в онлайне сделал.
-
- Новоприбывший
- Сообщения: 13
- Зарегистрирован: 29 мар 2011, 08:58
- Репутация: 0
Re: Формы VBA в ArcMap
esmo
Если индекс (idx) получен, то средствами ADO/DAO выполнить запрос к таблице Access.
Если надо средствами ArcObject, то:
создаёшь новый AcessWorkspaceFactory для интерфейса IWorkspaceFactory
открываешь базу в интерфейс IFeatureWorkspace
IWorkspaceFactory.OpenFromFile("d:\path.mybase.mdb", 0)
открываешь таблицу в интерфейс ITable
IFeatureWorkspace.OpenTable("MyTableName")
Создаёшь QueryFilter для интерфейса IQueryFilter
настраиваешь фильтр на выборку из таблицы IQueryFilter.WhereClause = "MyFieldName = " & CStr(idx)
получаешь строку(и) из таблицы в ICursor
ITable.Search(IQueryFilter, False)
получаешь (или нет) строку в IRow
ICursor.NextRow
далее выводишь значения в форму через IRow.Value(FieldNumber)
Если индекс (idx) получен, то средствами ADO/DAO выполнить запрос к таблице Access.
Если надо средствами ArcObject, то:
создаёшь новый AcessWorkspaceFactory для интерфейса IWorkspaceFactory
открываешь базу в интерфейс IFeatureWorkspace
IWorkspaceFactory.OpenFromFile("d:\path.mybase.mdb", 0)
открываешь таблицу в интерфейс ITable
IFeatureWorkspace.OpenTable("MyTableName")
Создаёшь QueryFilter для интерфейса IQueryFilter
настраиваешь фильтр на выборку из таблицы IQueryFilter.WhereClause = "MyFieldName = " & CStr(idx)
получаешь строку(и) из таблицы в ICursor
ITable.Search(IQueryFilter, False)
получаешь (или нет) строку в IRow
ICursor.NextRow
далее выводишь значения в форму через IRow.Value(FieldNumber)
-
- Участник
- Сообщения: 73
- Зарегистрирован: 03 сен 2007, 12:40
- Репутация: 3
- Откуда: Москва
- Контактная информация:
Re: Формы VBA в ArcMap
anvg
спасибо за очень подробный ответ! буду пробовать! два маленьких вопроса: индекс я получаю из таблицы точечной темы с помощью инструмента Hyperlink? И если база данных подключена к проекту, или является частью базы геоданных, что-нибудь меняется?
спасибо за очень подробный ответ! буду пробовать! два маленьких вопроса: индекс я получаю из таблицы точечной темы с помощью инструмента Hyperlink? И если база данных подключена к проекту, или является частью базы геоданных, что-нибудь меняется?
-
- Новоприбывший
- Сообщения: 13
- Зарегистрирован: 29 мар 2011, 08:58
- Репутация: 0
Re: Формы VBA в ArcMap
esmo
Можно только добраться до таблицы несколько по другому.
Получить через IMxDocument FocusMap (текущий Data Frame), поддерживающий ITableCollection и перебрать подключенные таблицы поиском нужной по имени, для чего очередную таблицу приводить к интерфейсу IDataset, чтобы получить её имя.
Честно говоря, не знаю как при помощи этого инструмента получить в коде индекс. Сам делал UIToolControl, который имеет события MouseUp и MouseDown, в которые передаются экранные координаты. Через DisplayTransformation получаем по ним IPoint в координатах карты. Далее, при помощи ITopologicalOperator.Buffer получаем полигон для пространственной выборки объектов. Далее для FeatureClass интересующего слоя создаём ISpatialFilter с геометрией буфера (пространственные отношения для поиска задаём в ISpatialFilter.SpatialRel) и выполняем пространственный запрос IFeatureClass.Search получаем IFeatureCursor, содержащий объект(ы). Перебираем через IFeatureCursor.NextFeature, получив IFeature. Доступ к значениям атрибутивной таблицы IFeature.Value(ИндексПоля).с помощью инструмента Hyperlink?
В принципе, нет.И если база данных подключена к проекту, или является частью базы геоданных, что-нибудь меняется?
Можно только добраться до таблицы несколько по другому.
Получить через IMxDocument FocusMap (текущий Data Frame), поддерживающий ITableCollection и перебрать подключенные таблицы поиском нужной по имени, для чего очередную таблицу приводить к интерфейсу IDataset, чтобы получить её имя.
-
- Участник
- Сообщения: 98
- Зарегистрирован: 20 ноя 2010, 14:37
- Репутация: 0
Re: Формы VBA в ArcMap
А с какими форматами таблиц этот интерфейс может работать?anvg писал(а):интерфейс IFeatureWorkspace
Кто сейчас на конференции
Сейчас этот форум просматривают: Ahrefs [Bot], Bing [Bot] и 6 гостей