axMapOverlay.SetObjectCross

Previous Top Next

AxMapOverlay

 

Установить обрабатываемый объект и метод обработки

 

function SetObjectCross(ObjInNumSubject : integer; precision : double; flag3d : integer;

                                        method : integer; location : integer) : integer;

 

Описание:

Параметры метода:

ObjInNumSubject - номер обрабатываемого контура:

1 - обработать все контура;

0 - основной контур объекта;

от 1 и более - подобъект объекта.

precision - точность согласования точек объекта с точками шаблона (DOUBLENULL и выше). Выполняется обновление точек объекта. Используется для сохранения контуров близлежащих объектов. Рекомендуется precision = 0.001 (метров на местности).

flag3d   - флаг формирования высоты в точках трехмерной метрики, соответствующих участкам контуров шаблона:

FLAG3D_NONE    (0) - результат не содержит трехмерной метрики;

FLAG3D_TEMPLET (2) - третья координата выбирается из контура шаблона;

FLAG3D_MATRIX  (8) - третья координата выбирается из карты (по наиболее точной открытой матрице высот);

FLAG3D_LINE   (32) - третья координата вычисляется по крайним точкам участка, не содержащего высоты (методом линейной интерполяции);

FLAG3D_ALL    (42) - совместное использование всех флагов

FLAG3D_TEMPLET|FLAG3D_MATRIX|FLAG3D_LINE

Допускается совместное использование флагов:

FLAG3D_TEMPLET|FLAG3D_MATRIX, FLAG3D_MATRIX|FLAG3D_LINE, FLAG3D_TEMPLET|FLAG3D_LINE.

При совместном использовании используется приоритет выполнения:

FLAG3D_TEMPLET -> FLAG3D_MATRIX -> FLAG3D_LINE.

Если обрабатываемый объект не содержит трехмерную метрику, то допустим только метод FLAG3D_NONE (0).

method - флаг типа результирующих контуров (флаги метода обработки):

METHOD_LINE   0 - замкнутые и незамкнутые контура линейных объектов;

METHOD_SQUARE 1 - замкнутые контура (части object) площадных объектов;

METHOD_FAST  16 - быстрый способ обработки - используется только для объектов, которые не содержат самопересечений !!!

Если контур шаблона незамкнут, то допустим только метод METHOD_LINE.

Допускается совместное использование флагов:

METHOD_LINE|METHOD_FAST, METHOD_SQUARE|METHOD_FAST

location - флаги размещения результирующих контуров:

ANYOBJECT или 0 - поиск всех контуров;

ANYOBJECT2      - поиск всех контуров, включая отрезки контура равные отрезкам шаблона;

OBJECTINSIDE    - поиск контуров внутри шаблона;

OBJECTINSIDE2   - поиск контуров внутри шаблона, включая отрезки контура равные отрезкам шаблона;

OBJECTOUTSIDE   - поиск контуров вне шаблона;

OBJECTOUTSIDE2  - поиск контуров вне шаблона, включая отрезки контура равные отрезкам шаблона.

Допускается совместное использование флагов:

OBJECTINSIDE|OBJECTOUTSIDE, OBJECTINSIDE2|OBJECTOUTSIDE, OBJECTINSIDE|OBJECTOUTSIDE2, OBJECTINSIDE2|OBJECTOUTSIDE2.

Если объект точечный, векторный, подпись или шаблон, то параметры precision, method, location игнорируются. Положение объекта определяется по первой точке первого подобъекта, а метод SetObjectCross возвращает:

1 - объект внутри шаблона (в данном случае GetNextObject не вызывать);

2 - объект вне шаблона (в данном случае GetNextObject не вызывать);

Если контур шаблона НЕЗАМКНУТ, то SetObjectCross возвращает:

1 - все контура объекта совпадают с шаблоном (лежат на шаблоне) (в данном случае GetNextObject не вызывать);

2 - все контура объекта вне шаблона (в данном случае GetNextObject не вызывать);

3 - один или несколько контуров объекта пересекаются с шаблоном (при возврате 3 вызывать GetNextObject в цикле).

Если контур шаблона ЗАМКНУТ и method == 0, то SetObjectCross возвращает:

1 - все контура объекта внутри шаблона, либо совпадают (в данном случае GetNextObject не вызывать);

2 - все контура объекта вне шаблона (в данном случае GetNextObject не вызывать);

3 - один или несколько контуров объекта пересекаются с шаблоном, либо обнаружены внутренние и внешние контура (относительно шаблона) (при возврате 3 вызывать GetNextObject в цикле).

Если контур шаблона ЗАМКНУТ и method == 1, то SetObjectCross возвращает:

1 - все контура объекта внутри шаблона, либо совпадают;

2 - все контура объекта вне шаблона;

3 - один или несколько контуров объекта пересекаются с шаблоном, либо обнаружены внутренние и внешние контура (относительно шаблона).

4 - контур шаблона внутри контура объекта (при возврате 3 и 4 вызывать GetNextObject в цикле)

При ошибке возвращает 0.