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

Обсуждение

 Импорт растров через COMИмпорт растров через COM [ Вадим Протасов ]
Среда, 19 июня 2013, 10:25

Добрый день. Есть следующая задача. В OL загружаются растры разных размеров: большой (планшет), а потом на него со временем накладываются мелкие растры для того, чтобы информация на планшете оставалась актуальной. Во внешнем приложении мне нужно получить актуальный планшет со всеми наложенными на него растрами. В примерах не нашел подобного

 Импорт растров через COM [ Вадим Протасов ]
Четверг, 20 июня 2013, 16:51

у меня есть идентификатор планшета, при желании можно получить идентификаторы маленьких изображений. Можно ли каким-либо образом вытащить растры из ГБД?

 Импорт растров через COM [ ObjectLand Support ]
Понедельник, 24 июня 2013, 11:13

Вы можете получить объект Feature по идентификатору, а у него есть метод GetImage (http://www.objectland.ru/support/doc/comapi/Geometry_GetImage.html), который и вернет растр.

 Импорт растров через COM [ Вадим Протасов ]
Среда, 26 июня 2013, 13:19

Остался вопрос: как получить геометрию по идентификатору? Пока что получилось только открыв GDBThemeBrowser и выделив геометрию с нужным идентификатором взять GDBThemeBrowser.Featureset.Feature. Можно ли получить Feature без открытия окна темы?

 Импорт растров через COM [ ObjectLand Support ]
Среда, 26 июня 2013, 14:48

Обратите внимание на свойство Bookmark объекта Featureset (http://www.objectland.ru/support/doc/comapi/Geoset_Bookmark.html).

Вот пример кода получения геометрии с номером 6 на VB:
objFeatureset = objMap.Layers.Item(LAYER_NAME).OpenFeatureset
objFeatureset.Bookmark = 6 'внутренний номер
objFeature = objFeatureset.Feature

Еще один пример на VB, который может оказать Вам полезным и возможно откроет новые возможности использования СОМ-модели ГИС ObjectLand:
' Функция GetFeatureByAttribute находит геометрию с заданными атрибутами и возвращает ее номер.
' Параметры для функции м.б. например такими:
' TableName = "Таблица с кварталами"
' FieldName = "GID"
' FieldValue = "{255E4A26-1C26-4FEC-828C-89076790BCD0}"
' ThemeName = "Квартал 01 02 38"
' LayerName = "Кварталы"
Public Function GetFeatureByAttribute(ByVal TableName As String, ByVal FieldName As String, ByVal FieldValue As String, ByVal ThemeName As String, ByVal LayerName As String) As Integer
Dim aQuery As GDBQuery
Dim aField As GDBField
Dim aSearchCondition As GDBFieldSearchCondition
Dim aRecordset As GDBRecordset

GetFeatureByAttribute = 0

' Строим выборку на основе заданной таблицы <TableName>.
' Путем задания критерия поиска в созданной выборке,
' находим набор записей таблицы поле <FieldName> которых содержит значение <FieldValue>.
' Далее работаем с первой записью набора.
aQuery = GeoDatabase.CreateQuery(GeoDatabase.Tables.Item(TableName))
aField = aQuery.Fields.Item(FieldName)
aSearchCondition = aField.CreateSearchCondition(GdbLogicalOps.gdbLogicalNone, GdbQueryRelations.gdbQueryRelEQ, FieldValue, "")
aQuery.FieldSearchConditions.Append(aSearchCondition)
aRecordset = aQuery.OpenRecordset
If (aRecordset.RecordCount = 0) Then Exit Function
aRecordset.MoveFirst()

Dim aLayer As GDBLayer
Dim bFeatureFound As Boolean = False

' Перебираем типы слоя <LayerName> до тех пор, пока набор геометрий для текущей записи набора записей
' будет не пустым. Возвращаем первую геометрию набора.
aLayer = GeoDatabase.Themes.Item(ThemeName).Layers.Item(LayerName)
For i As Integer = 1 To aLayer.FeatureTypes.Count
Dim aFeatureset As GDBFeatureset = Nothing

' Если тип не связан с таблицей на основе которой построен набор записей, то
' возникает исключение!
Try
aFeatureset = aRecordset.OpenFeatureset(aLayer.FeatureTypes.Item(i), GdbScopeTypes.gdbScopeCurrentRecord)
Catch e As COMException
If (e.ErrorCode And &HFFFF) <> 4034 Then Throw
End Try

If (aFeatureset IsNot Nothing) Then
If (aFeatureset.FeatureCount > 0) Then
bFeatureFound = True
aFeatureset.MoveFirst()
GetFeatureByAttribute = aFeatureset.Feature.Number
End If
aFeatureset.Close()
End If

If bFeatureFound Then Exit For
Next

aRecordset.Close()
End Function

 Импорт растров через COM [ Вадим Протасов ]
Пятница, 5 июля 2013, 14:38

Вроде разобрался. Спасибо за информацию

Ответить

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



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