AddElementFromRaw method (Layer)

Добавляет в слой элемент, заданный переменной, в которой содержится объект во внутреннем формате системы.

Применяется к:

Layer

Синтаксис:

Visual Basic:

Function AddElementFromRaw(Elem, ElemID As Long ) As Long

Elem - добавляемый элемент

ElemID - ID добавляемого элемента

Описание:

Добавляемый объект содержится в переменной типа VARIANT, которая может быть получена, например, как результат пространственного SQL запроса к слою. Если добавление элемента выполнено успешно, метод возвращает ID добавленного элемента. В противном случае метод возвращает -1.

Пример:

Пример демонстрирует получение графических данных во внутреннем формате Zulu через SQL запрос и запись полученных данных в новый слой.

    
    Dim Src As Layer 'Слой источник 
    Set Src = MapCtrl1.Map.Layers.Active 'Aктивный слой карты
    
    Dim Dest As Layer 'Слой для записи
    
    Dim Res As IZSqlResult      
    'Запрос на выборку геометрии во внутреннем формате Zulu 
    'для выделенных объектов активного слоя карты
    Set Res = Src.ExecSQL("SELECT Sys, Geometry.AsRaw() WHERE Geometry.Selected() = 1")
    
    Dim ds As IZbDataset
    
    If TypeName(Res.DataSet) = "IZbDataset" Then
    'Если ответ получен
        Set ds = Res.DataSet
        
        Dim Tools As ZuluTools        
        
        Set Tools = New ZuluTools
        
        'Создаем новый пустой слой с копированием графической структуры слоя источника
        Tools.LayerCopyEx MapCtrl1.Map.Layers.Active.Name, "d:\a\test.b00", "Test Layer", 4
        
        Set Dest = New Layer
        
        Dest.Open "d:\a\test.b00"
        
        'Идем по ответу
        ds.MoveFirst
        
        Do        
            If ds.EOF Then Exit Do
            
            Dim Sys As Long
            
            'Получаем ID объекта
            Sys = ds.GetFieldValueVar(0)
                        
            Dim val As Variant
            'Получаем геометрию объекта во внутреннем формате Zulu
            val = ds.GetFieldValueVar(1)
            
            'Добавляем объект в новый слой с тем же ID
            Dest.AddElementFromRaw val, Sys
            
            ds.MoveNext        
        Loop    
    Else    
        MsgBox Res.ErrorString    
    End If