Цитата |
---|
Andrey Gheleznyakov написал: Чем пользуетесь для расчета пересечений? Рекомендую TMapOverlay.cntOverlapTest. |
form_main.MapFind2.Active := false; // Обрабатываемый объект
form_main.MapFind2.FindPoint := false;
form_main.MapFind2.MapSelect.Clear;
form_main.MapFind2.MapObj.Style := OS_NORMAL;
form_main.MapFind2.MapSelect.Excode[-1,OL_SQUARE] := false;
form_main.MapFind2.MapSelect.Excode[ExCode,OL_SQUARE] := true;
form_main.MapFind2.Active := true;
form_main.MapFind2.First;
While not form_main.MapFind2.Eof do
begin
SquareObject := 0;
res := form_main.ovlObj.CreateOVL(1, 0.001, -1, 0);
If res = 0 then
ShowMessage ('Программа не может определить результат взаимного'+#10#13+'расположения рассматриваемых для пересечения объектов.');
res := form_main.ovlObj.SetObjectCross(-1, 0.001, 0, ovl_METHOD_SQUARE, ovl_OBJECTINSIDE);
case res of
1 :
begin
If mapGetExclusiveSubject(form_main.MapObj1.ObjHandle, 0) <> 0 // шаблон замкнут
then
begin
// Все контура объекта совпадают с шаблоном (лежат на шаблоне
SquareObject := form_main.MapFind2.MapObj.Square;
NameObject := form_main.MapFind2.MapObj.ObjName;
ExCode := form_main.MapFind2.MapObj.ExCode;
AppendSanitObjects(); // Запишем результат
end;
end;
2 :
begin
// ShowMessage ('Все контура объекта '+form_main.MapFind2.MapObj.ObjName+' вне шаблона '+
end;
3 :
begin
SquareObject := 0;
// Один или несколько контуров объекта пересекаются с шаблоном
NameObject := form_main.MapFind2.MapObj.ObjName;
ExCode := form_main.MapFind2.MapObj.ExCode;
While 1=1 do
begin
form_main.MapObj3.CreateObjectByKey(1, KM_IDDOUBLE2, form_main.MapObj2.KeyName);
If form_main.ovlObj.GetNextObject = 0 then
break;
SquareObject := SquareObject+form_main.MapObj3.Square;
end;
AppendSanitObjects(); // Запишем результат
end;
4 :
begin
SquareObject := form_main.MapObj1.Square;
// ShowMessage (' Обрабатываемый объект '+form_main.MapFind2.MapObj.ObjName+' внутри него находиться шаблон '+form_main.MapFind1.MapObj.ObjName+' площадь шаблона = '+FloatToStr(SquareObject));
NameObject := form_main.MapFind2.MapObj.ObjName;
ExCode := form_main.MapFind2.MapObj.ExCode;
AppendSanitObjects(); // Запишем результат
end;
0 :
begin
ShowMessage('Ошибка топологии карты! '+#10#13+'Проверьте качество векторной карты.');
end;
end;
form_main.ovlObj.FreeOVL;
form_main.MapFind2.Next;
end;
end;
Карту Ногинска отправил в техподдержку.
Что-то здесь не правильно?