AddBufferZone method (Layer)

Создает буферную зону и записывает в слой.

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

Layer

Синтаксис:

Visual Basic:

Function AddBufferZone(SourceLayer As Layer,Style As ElemStyle,Value As Double,ZbName As String,FieldName As String,koeff As Double, UseDefault As Boolean) As Boolean

SourceLayer - слой источник

Style - стиль контурных объектов буферной зоны

Value - ширина буфера (в см)

ZbName, FieldName  - имя базы данных и название поля из этой базы, откуда берутся значения ширины буфера

koeff - определяет единицы измерения значений в выбранном поле

UseDefault - устанавливается в значение True, если необходимо, чтобы значения буфера брались из таблицы, а при отсутствии этих данных брались из переменной Value

Описание:

Построение буферной зоны заключается в очерчивании вокруг группы объектов слоя контура (или нескольких контуров), все точки которого отстоят от объектов группы на заданную величину. Расстояние для построения буферной зоны либо задается постоянным для всех объектов группы, либо берется из указанного числового поля подключенной в данный момент к слою таблицы.

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

Пример:

Для запуска примера на форме необходимо разместить элемент управления MapCtrl с именем MapCtrl1.

Dim tools As ZuluTools
Dim st As ElemStyleDim
Dim Ln As ZuluLib.PolyLine
Dim Id As Long

Set st = New ElemStyleSet
Set tools = New ZuluTools
Set Ln = New ZuluLib.PolyLine

'установка стиля элемента
st.BorderColor = 0
st.BorderStyle = 0
st.BorderWidth = 2
st.PatColor = 255
st.FillStyle = 2
st.LineColor = RGB(0, 0, 255)
st.LineWidth = 3

'создание линейного объекта
Ln.AddPoint 0, 0
Ln.AddPoint 30000, 20000
Ln.AddPoint 10000, 70000

'создания слоя Линии
tools.LayerCreate "e:\temp\bbb", "Линии", eMixedLayer

'создания слоя Буферные зоны
tools.LayerCreate "e:\temp\aaa", "Буферные зоны", eMixedLayer

'Слой Линии добавляется в список загруженных в карту слоев
MapCtrl1.Map.Layers.Add "e:\temp\bbb"

'в  активный слой добавляется линия с установленными координатами узлов и стилем
Id = MapCtrl1.Map.Layers.Active.AddPolyLine(Ln, st, -1, -1)
'выделение созданного элемента

MapCtrl1.Map.Layers.Active.Selection.Modify eSelCreate, 1, Id
'слой Буферные зоны добавляется в список загруженных в карту слоев
MapCtrl1.Map.Layers.Add "e:\temp\aaa"
MapCtrl1.Map.Layers.Item(MapCtrl1.Map.Layers.Count).AddBufferZone MapCtrl1.Map.Layers.Active, st, 2000, "", "", 1, True
MapCtrl1.Map.Layers.Active.Selection.Clear
'слой Буферные зоны перемещается вперед
MapCtrl1.Map.Layers.Move MapCtrl1.Map.Layers.Count, eMoveBackOne
'карта рисуется по размерам слоя
MapCtrl1.DrawInMapExtents