При разрезании многоугольника с помощью ломаной линии геометрический движок группирует определенные куски вместе.Arcgis javascript api - PullRequest
0 голосов
/ 09 июля 2019

При предварительном формировании действия вырезания на многоугольнике с ломаной линией некоторые возвращаемые геометрии группируются, а другие нет?

У меня есть простая программа, в которой пользователь может создать многоугольник с помощью SketchViewModel. Затем пользователь создает полилинию с помощью SketchViewModel. Затем я беру геометрию из каждого эскиза и предварительно срезаю из geometryEngine. Я получаю массив геометрий из разреза и добавляю их в слой, удаляя исходный многоугольник и полилинию. Я ожидал, что получу каждую часть в отдельности, но по некоторым причинам некоторые будут объединены в одну геометрию, даже если они не связаны.

   //polylineLayer and polygonLayer are graphiclayers
   //submit is a html button to call the execution
   submit.addEventListener("click", function() {

   //subDivisions is an Geometry[] for the produced geometries
   //ex. one line through a circle polygon would produce
   // two geometries of each half. (this works)
   // anything more complicated starts having grouping issues
   // (see pictures)
   var subDivisions = 
         geometryEngine.cut(polygonLayer.graphics.getItemAt(0).geometry, 
         polylineLayer.graphics.getItemAt(0).geometry);
    polygonLayer.removeAll();
    polylineLayer.removeAll();
    //show the number of subdivisions
    alert("size: " + subDivisions.length);
    // add created geometries to the graphiclayer
    for (var i = 0; i < subDivisions.length; i++){
           tempGraphic = new Graphic ({
           geometry: subDivisions[i]                    
           });
           polygonLayer.graphics.add(tempGraphic,i);

        }
    });

(извините за ссылки на фотографии, у меня нет 10 репутации для публикации фотографий, и это очень визуальный проект / проблема)

Открыть экран: https://ibb.co/WDcgmSn

Нарисуйте первый многоугольник: https://ibb.co/wd6CDbV

Рисование ломаной линии для разрезания многоугольника: https://ibb.co/BG32863

Ожидаемые подразделения - 10 Фактические - 7: https://ibb.co/0VMsHGg

Некоторые разделены на отдельные полигоны: https://ibb.co/SKXCJR8

Другие не являются: https://ibb.co/7WqNB9q

Все разбитые кусочки: https://ibb.co/Pr0smrw

1 Ответ

0 голосов
/ 09 июля 2019

Хотел бы я комментировать вместо того, чтобы просто отвечать, но трудно сказать без кода.

По сути, вы получаете многокомпонентные полигоны, вам нужно их разбить.

Используйте разделение в вашем массиве, чтобы разбить разбиение на многоугольники ("]], [[")

Упрощение полигонов с использованием сервиса геометрии также стоило бы. (до и после резки)

https://developers.arcgis.com/rest/services-reference/geometry-service.htm

...