Официальный сайт геоинформационной системы (ГИС) ObjectLandОфициальный сайт геоинформационной системы (ГИС) ObjectLand
  
 
ПОИСК ПО САЙТУ:
yandex.ru
КАРТА САЙТА
 
главная / поддержка / форум
E-MAIL:ПАРОЛЬ: 
регистрация

Обсуждение

 COM-интерфейсCOM-интерфейс [ Po ]
Пятница, 12 ноября 2010, 12:48

Нужна помощь....
В GDBThemeBrowser я выбираю какой либо объект, мне нужно получить все данные об этом объекте, как мне это сделать.
На основе примера из ObjectLand.SamplesOfCOMUsing.2.7.CSharp.Rus.zip №047 получаю данный о слои и типе объекта, но этого не достаточно. И еще вопрос, можно ли из моей программы в GDBThemeBrowser выделить объект, зная его идентификатор?
Очень надеюсь на вашу помощь.

 COM-интерфейс [ ObjectLand Support ]
Пятница, 12 ноября 2010, 15:40

Все данные которые можно получить об объекте можно прочитать здесь:
http://objectland.ru/support/doc/comapi/Geometry.html

Выделить объект по идентификатору можно. Вот примерный код на VB.NET:
objFeaturesetCondition = objTheme.CreateFeaturesetCondition(GdbLogicalOps.gdbLogicalNone, GdbFeaturesetOperations.gdbFeaturesetByFeatureNumbers)
objFeaturesetCondition.Layer = objTheme.Layers.Item("Слой")
objFeaturesetCondition.FeatureNumbers = 6 ' внутренний номер
objTheme.FeaturesetConditions.Append(objFeaturesetCondition)
objThemeBrowser.Featureset = objTheme.OpenFeatureset()

Рекомендуем посмотреть похожую тему на форуме:
http://www.objectland.ru/support/forum/2821/

 COM-интерфейс [ Ро ]
Суббота, 13 ноября 2010, 12:58

читал http://objectland.ru/support/doc/comapi/Geometry.html
не пойму как можно узнать к примеры название выделенной улицы в objThemeBrowser
Может я плохо читал "Geometry" и что-то пропустил?
***
Спасибо большое за пример.
Но вот есть небольшие проблемы. на С# срабатывает только один раз.
при попытки выделить объект еще раз, на строке objTheme.FeaturesetConditions.Append(objFeaturesetCondition); выдает ошибку "Недопустимый логический оператор" не пойму чего он хочет :(

 COM-интерфейс [ ObjectLand Support ]
Суббота, 13 ноября 2010, 14:14

Обратите внимание на раздел "Связь с записями" и на метод OpenRecordset (http://objectland.ru/support/doc/comapi/Geometry_OpenRecordset.html). Получив привязанную запись, Вы сможете получить у нее и название улицы (если конечно такое поле существует).

Проверьте, что Вы каждый раз создаете создаете критерий селекции заново, т.е. выполняется строчка:
objFeaturesetCondition = objTheme.CreateFeaturesetCondition(GdbLogicalOps.gdbLogicalNone, GdbFeaturesetOperations.gdbFeaturesetByFeatureNumbers)

 COM-интерфейс [ Po ]
Воскресенье, 14 ноября 2010, 22:36

проверил, objFeaturesetCondition создается каждый раз, все вроде нормально с ним.

на всякий случай решил написать на VB.NET, та же самая ошибка на той же строке.

мой метод:
private void button1_Click(object sender, EventArgs e) {
objThem = objGDBThemeBrowser.Theme;
GDBFeaturesetCondition objFeaturesetCondition = objGDBTheme.CreateFeaturesetCondition(GdbLogicalOps.gdbLogicalNone, GdbFeaturesetOperations.gdbFeaturesetByFeatureNumbers);
objFeaturesetCondition.Layer = objThem.Layers.Item("Улицы");
objFeaturesetCondition.FeatureNumbers = 7;
objThem.FeaturesetConditions.Append(objFeaturesetCondition);
objGDBThemeBrowser.Featureset = objThem.OpenFeatureset(true);
}

 COM-интерфейс [ Ро ]
Понедельник, 15 ноября 2010, 14:36

Проблема решена путем добавления строк:
if (objGDBThemeBrowser.Theme.FeaturesetConditions.Count > 0) {
objGDBThemeBrowser.Theme.FeaturesetConditions.Delete(1);
}
перед вызовом метдоа
objThem.FeaturesetConditions.Append(objFeaturesetCondition);

Но вот вопрос по выборке всех свойств выделенного объекта, остается открытым.
Как-то все слишком замудрено:(

Неужели нельзя просто взять нужно поле выделенного объекта?
Без создания там всяких запросов. и указания имени привязанной таблицы.

Пишу программу, которая должна работать с любой картой OL. Без указания имен таблиц, слоев, типов объектов....
основная часть готова, осталось всего ничего! получить данные о выделенном объекте.

 COM-интерфейс [ Ро ]
Понедельник, 15 ноября 2010, 15:08

Проблема решена путем добавления строк:
if (objGDBThemeBrowser.Theme.FeaturesetConditions.Count > 0) {
objGDBThemeBrowser.Theme.FeaturesetConditions.Delete(1);
}
перед вызовом метдоа
objThem.FeaturesetConditions.Append(objFeaturesetCondition);

Но вот вопрос по выборке всех свойств выделенного объекта, остается открытым.
Как-то все слишком замудрено:(

Неужели нельзя просто взять нужно поле выделенного объекта?
Без создания там всяких запросов. и указания имени привязанной таблицы.

Пишу программу, которая должна работать с любой картой OL. Без указания имен таблиц, слоев, типов объектов....
основная часть готова, осталось всего ничего! получить данные о выделенном объекте.

 COM-интерфейс [ ObjectLand Support ]
Понедельник, 15 ноября 2010, 15:25

Ошибка возникает из-за того, что Вы каждый раз добавляете критерий селекции, а он уже есть в коллекции objThem.FeaturesetConditions после первой селекции.

Поэтому чтобы селектировать второй раз, достаточно выолнить уже одну строчку:
objThemeBrowser.Featureset = objTheme.OpenFeatureset

Ответить

Знаком «*» отмечены обязательные для заполнения поля.
Ваше имя:  *
Адрес электронной почты:  
Тема:  *
Сообщение:
 *
Подтверждение:
(не требуется для зарегистрированных пользователей)
 *
 



Copyright © 1999–2020 ГИС ObjectLand
ГИС ObjectLand ® ООО «Радом-АйТи»
Информация о лицензировании
главная | о продукте | скачать | купить | поддержка | новости