AddElementFromRaw method (Layer)

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

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

Layer

Синтаксис:

Visual Basic:

Function AddElementFromRaw(Elem, ElemID As Long ) As Long

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

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

Описание:

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

Если значение ElemID равно -1, то записываемому элементу ID присваивается автоматически.

Занят ли указанный ID, метод не проверяет: элемент добавляется и с занятым ID, и тогда в слое оказываются два объекта с одинаковым ID. Чтобы ключ проверялся, применяются методы AddElementEx и AddEnumElement.

Объект переносится целиком: геометрия, стиль, тип и режим у него те же, что в слое источника.

Пример:

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

Visual Basic:

Sub Layer_AddElementFromRaw
'Берем активный слой карты
Set Src = Zulu.ActiveMapDoc.Layers.Active
'Запрашиваем ключи и геометрию объектов во внутреннем формате Zulu
Set Res = Src.ExecSQL("SELECT Sys, Geometry.AsRaw()")
If Res.DataSet Is Nothing Then
  MsgBox Res.ErrorString
  Exit Sub
End If
'Создаем пустой слой той же структуры
Set Tools = CreateObject("ZuluLib.ZuluTools")
Tools.LayerCreateByExample Src.Name, "C:\Data\raw", "Копия слоя", 0
Set Dst = CreateObject("ZuluLib.Layer")
Dst.Open "C:\Data\raw"
'Переписываем объекты, сохраняя их ключи
Set ds = Res.DataSet
ds.MoveFirst
n = 0
Do While Not ds.Eof
  If Dst.AddElementFromRaw(ds.GetFieldValueVar(1), ds.GetFieldValueVar(0)) <> -1 Then n = n + 1
  ds.MoveNext
Loop
MsgBox "Перенесено объектов: " & n
End Sub