Только разбираюсь в устройстве GIS ToolKit и возникли трудности в казалось бы простой операции вырезки одного площадного объекта из внешнего площадного объекта. привожу код на C#, где
MapObj - контур шаблона (то что вырезаем)
MapObj2 - контур из чего вырезаем (он всегда больше чем MapObj)
MapCross.cObjIn1 = MapObj.C_CONTAINER;
MapCross.cObjIn2 = MapObj2.C_CONTAINER;
MapCross.cObjOut = MapObj2.C_CONTAINER;
MapCross.LocalOut = axGisToolKit.TxLOCALOUT.OUT_SQUARE;
//Создаём пересечение двух объектов
MapCross.CreateCross();
//Проверяем наличие пересечения
if (MapCross.isCross == true)
{
MapOverlay.FlageMessage = true;
MapOverlay.cMapObjIn = MapObj2.C_CONTAINER;
MapOverlay.cMapObjTemplet = MapObj.C_CONTAINER;
if (MapOverlay.CreateOVL(1, 0.001, 0, 0) == 0)
{
MessageBox.Show("Произошла ошибка выполнения вырезки контура!");
}
else {
//if resultCross == 4 - контур шаблона внутри контура объекта (при возврате 3 и 4 вызывать GetNextObject в цикле)
int resultCross = MapOverlay.SetObjectCross(0, 0.001, 0, 1, 0);
int resultMetrica = MapOverlay.GetCrossPoints();
if (resultCross != 4)
{
MessageBox.Show("Вырезаемый объект должен быть вне границы вырезки!");
}
else
{
while ((int)MapOverlay.GetNextObject()!=0) {
//предположив, что в cObjOut будет находиться части после обрезки, сохраняю их как новые объекты
MapCross.cObjOut.CommitAsNew();
} }
}
}
else {
MessageBox.Show("Области НЕ пересекаются");
}
В результате ничего. Вероятно я что-то упустил. Буду благодарен за пояснения.
MapObj - контур шаблона (то что вырезаем)
MapObj2 - контур из чего вырезаем (он всегда больше чем MapObj)
MapCross.cObjIn1 = MapObj.C_CONTAINER;
MapCross.cObjIn2 = MapObj2.C_CONTAINER;
MapCross.cObjOut = MapObj2.C_CONTAINER;
MapCross.LocalOut = axGisToolKit.TxLOCALOUT.OUT_SQUARE;
//Создаём пересечение двух объектов
MapCross.CreateCross();
//Проверяем наличие пересечения
if (MapCross.isCross == true)
{
MapOverlay.FlageMessage = true;
MapOverlay.cMapObjIn = MapObj2.C_CONTAINER;
MapOverlay.cMapObjTemplet = MapObj.C_CONTAINER;
if (MapOverlay.CreateOVL(1, 0.001, 0, 0) == 0)
{
MessageBox.Show("Произошла ошибка выполнения вырезки контура!");
}
else {
//if resultCross == 4 - контур шаблона внутри контура объекта (при возврате 3 и 4 вызывать GetNextObject в цикле)
int resultCross = MapOverlay.SetObjectCross(0, 0.001, 0, 1, 0);
int resultMetrica = MapOverlay.GetCrossPoints();
if (resultCross != 4)
{
MessageBox.Show("Вырезаемый объект должен быть вне границы вырезки!");
}
else
{
while ((int)MapOverlay.GetNextObject()!=0) {
//предположив, что в cObjOut будет находиться части после обрезки, сохраняю их как новые объекты
MapCross.cObjOut.CommitAsNew();
} }
}
}
else {
MessageBox.Show("Области НЕ пересекаются");
}
В результате ничего. Вероятно я что-то упустил. Буду благодарен за пояснения.