Исправление тысяч маленьких перекрывающихся полигонов?

21

Я использую ArcMap 10.3.

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

Используя ответ @ radouxju , я построил топологию для слоя землепользования (с правилом не должен перекрываться). Затем я использовал слияние, чтобы исправить большие перекрывающиеся полигоны.

Тем не менее, у меня есть тысячи маленьких перекрывающихся полигонов. Я могу починить их все вручную, что займет много времени.

Есть ли более быстрый способ исправить все эти ошибки?

введите описание изображения здесь

введите описание изображения здесь


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

блестящий
источник
2
Будет ли работать Integrate Tool для вас?
Фезтер
@Fezter Я так не думаю, потому что их полигоны не имеют одинаковую площадь, и я не могу использовать одинаковый допуск XY для всего слоя.
блестящий
1
@aelwan: Какова ваша цель с этими данными? Вы создаете эти данные для использования другими (как будто вы являетесь источником данных)? Или вы пытаетесь «очистить» его для использования в карте или анализе? Я спрашиваю, почему эти данные выглядят как мусорные данные. Это выходит за рамки ГИС-анализа, его необходимо полностью перенастроить, чтобы кто-то с полномочиями (рабочими знаниями) принимал обоснованные решения о том, где эти границы должны быть. Иначе я бы просто оставил данные как есть.
alexGIS
@alexGIS Я полностью согласен с вами в том, насколько плохи данные. Тем не менее, это ЛУЧШИЕ данные, которые я получил. Я пытаюсь очистить для анализа.
блестящий

Ответы:

6

Обеспокоенность, высказанная @Adam Cara, очень веская. Однако когда я посмотрел на самопересечение, оказалось, что большинство из них являются либо узкими кусочками на границе между двумя массивными полигонами, либо разъединенными кусочками / островками большого полигона, расположенного внутри другого. В этом случае стирание перекрытий и назначение растворенных перекрытий может сработать атрибутом ближайшего соседа (в зависимости от того, что наступит раньше).

Процесс:

arcpy.Intersect_analysis("Landuse2b #","D:/Scratch/mpart.shp","ALL","#","INPUT")
arcpy.MultipartToSinglepart_management("mpart","D:/Scratch/spart.shp")
arcpy.Dissolve_management("spart","D:/Scratch/dissolved_1.shp","#","#","SINGLE_PART","DISSOLVE_LINES")
arcpy.Erase_analysis("Landuse2b","dissolved_1","D:/Scratch/erased.shp","#")
arcpy.DeleteField_management("spart","FID_Landus;OBJECTID;Lnduse2013;Shape_Leng;Shape_Area")
arcpy.SpatialJoin_analysis("spart","erased","D:/Scratch/sj_1.shp","JOIN_ONE_TO_ONE","KEEP_ALL"…..)
arcpy.Merge_management("sj;erased","D:/Scratch/merge_1.shp"….)
arcpy.Dissolve_management("merge_1","D:/Scratch/dissolved.shp","Lnduse2013","#","SINGLE_PART","DISSOLVE_LINES")

Тест:

arcpy.Intersect_analysis("dissolved #","D:/Scratch/test.shp","ALL","#","INPUT")

Сообщение:

  • Выполнение: Пересечь "растворенный #" D: \ Scratch \ test.shp ALL # INPUT
  • Время начала: пт. 22 апреля 10:16:07 2016
  • Особенности чтения ...
  • Особенности взлома ...
  • Особенности сборки ...
  • ПРЕДУПРЕЖДЕНИЕ 000117: Предупреждение о пустом выходе.
  • Успешно в пт 22 апреля 10:16:09 2016 (Истекшее время: 2,34 секунды)

Обратите внимание, что это сообщение означает, что нет никаких самопересекающихся в выходных данных из окончательного распада

Результат:

https://drive.google.com/file/d/0B6B33FrGNitPT0FvbVdHQm0xMDg/view?usp=sharing

FelixIP
источник
1
Это решение делает его «аккуратным», но не «правильным». Если OP не обеспокоен тем, что область, которая перекрывалась с «Dairy» и «Sheep / Beef», теперь переназначается на «Builtup / Parks / Others» и другие подобные произвольные повторные категоризации, которые я вижу при сравнении входных данных с выходными, тогда это решение работает. Тем не менее, это элегантный рабочий процесс, хорошая работа.
alexGIS
1
С такими данными никто не знает, что правильно
FelixIP
7

Если ваши многоугольники являются осколками, команда устранения работает хорошо, чтобы объединить их в многоугольник большей площади или самый длинный край.

Если полигоны являются перекрытиями, возможно, существует более простой способ, но я бы выбрал перекрытия для отдельного слоя, а затем объединил их обратно, создав осколки и используя команду устранения.

Брайан Уоллер
источник
Спасибо за ваше время и помощь. Мои полигоны перекрываются. Чтобы следовать вашему ответу, как я могу выбрать перекрытия для отдельного слоя? Перекрытия отображаются как ошибки области после того, как я построил топологию.
блестящий
Просто запустите Intersect ( resources.arcgis.com/EN/HELP/MAIN/10.1/index.html#//… ) на слое полигонов. Результатом Intersect будут все совпадения в этом слое.
15:33
@iRfAn Спасибо, я пересек перекресток и получил перекрытие.
блестящий
@Bryan Waller Я пытался следовать тому, что вы предложили: я выбрал перекрытия на отдельный слой, используя «пересечение»; затем объедините их обратно в "НО НЕ БЫЛО СОЗДАН СЕРЕБРО". После того, как я использовал команду устранения, я все еще могу обнаружить, что один и тот же полигон имеет два разных типа землепользования. Любая помощь будет оценена. Вы можете найти слой землепользования здесь goo.gl/0aE3wq
блестящий
6
  1. Выберите небольшую область и преобразуйте ее в два файла формы, чтобы увидеть, работает ли этот процесс.
  2. Создайте новое поле с именем test (number) в s1 и s2.
  3. Пересечь два файла формы S1 и S2.
  4. Перекрывающиеся области будут определены в отдельном файле, например с именем Common1 (заштрихованная область на рисунке).
  5. Рассчитайте полевой тест как 1 в общем.
  6. Союз S1 и Общий
  7. Выберите 1 введите описание изображения здесьиз тестового поля и удалите заштрихованную область.
  8. Теперь сливаю с2 и обще. Команда Erase может быть использована для стирания общей области.
Шампа
источник
@Shampe Спасибо за вашу помощь. Мои перекрытия находятся в одном и том же шейп-файле, а не в двух файлах.
блестящий
6

Рассматривали ли вы разделение отдельных классов землепользования на отдельные шейп-файлы, чтобы работать с ними таким образом. Сначала я подумал о том, чтобы пересечь дорогу, но увидел, что это не помогло. Однако если у вас есть семь отдельных шейп-файлов, вы сможете легче ими управлять.

Главный вопрос, который у меня возникает: если есть совпадение, есть ли у вас иерархия, для которой класс выигрывает и должен показывать в конце? Например: если кадрирование и молочные продукты пересекаются, что вы сохраняете? Как только вы определите эту иерархию, пересекайте 2 класса за раз, начиная с самого низкого и заканчивая самым высоким. Если ваши выходные данные на данном пересечении пусты, это означает, что они не пересекаются.

Адам Кара
источник
2
Здесь вы затронули самую важную проблему: как классифицировать перекрытия? Просто сделать данные «аккуратными» не значит, что они «правильные».
alexGIS
@alexGIS Опять же, я согласен с вами. Однако, учитывая цель этого анализа и небольшую площадь перекрывающихся полигонов данных, категория перекрытия не является главной целью по сравнению с исправлением перекрытий.
блестящий
Это может быть хорошей идеей по другой причине. Перекрытия могут представлять изменения границ полей и обрезку с течением времени.
nmtoken
5

Создав топологию, вы выявили ошибки.

В списке, отображающем ошибки, вы можете выбрать все ошибки одного типа, щелкнуть правой кнопкой мыши по этому списку и выбрать «исправить». В вашем случае исправлением будет «создать элемент», который создаст новый многоугольник, если два многоугольника перекрываются. Это первый шаг (обратите внимание, что вы можете достичь аналогичного результата, используя инструмент объединения со своим слоем землепользования в качестве единого входа, затем инструмент, состоящий из нескольких частей и отдельных частей (но тогда перекрытия все равно будут перекрываться, поэтому вам нужно удалить один из значение атрибута), или преобразуйте полигон в линии, а затем обратно в полигон (но тогда вы теряете атрибут, вам нужно пространственное соединение для восстановления атрибутов))

Второй шаг состоит в удалении маленьких полигонов. Проблема в том, что у вас нет правила, чтобы решить, какое значение атрибута вы хотите сохранить. Мой любимый инструмент - это инструмент устранения , где вы можете выбрать, к какому соседнему многоугольнику будут объединены маленькие многоугольники (на основе самой большой общей границы или самой большой области).

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

radouxju
источник
4

Хотя я согласен с другими в отношении того, являются ли они полигонами внахлест или осколками, из того, что я вижу здесь на этой картинке, вы показываете всем. Я бы порекомендовал вам изменить цвета символов для землепользования. Таким образом, вы можете увидеть, какой из них должен идти или другой. Один цвет, который вы показали нам в розовом, действительно трудно читать, и он может занять много времени для вас.

Во второй части я бы выделил все полигоны с перекрытиями или осколками и экспортировал их в новый шейп-файл. Таким образом, вы можете определить, что они используют в землепользовании.

Проберт
источник
Спасибо за вашу помощь. Я обновил карту, чтобы показать цвета для всех видов землепользования.
блестящий
4

Одним из возможных решений, если у вас есть Spatial Analyst или 3D Analyst, вы преобразуете полигоны землепользования в растровое изображение, используя инструмент (Преобразование полигона в растр), чтобы гарантировать, что перекрывающиеся полигоны не будут выходить, поскольку вы не можете получить перекрывающиеся пиксели. Затем преобразуйте растр обратно в полигоны, используя инструмент (Растр в полигон), если он вам все еще нужен в векторном формате. В этом случае выберите размер ячейки с высоким разрешением (подробный размер ячейки), чтобы получить полигоны хорошего качества, но вам нужно учитывать объем памяти. Возможно, вам придется попробовать это несколько раз, изменив размер ячейки, пока вы не будете удовлетворены результатами. Возможно, вам придется выполнить некоторое сглаживание выходных полигонов, если оно не идеально, но это зависит от того, есть ли у вас хотя бы Стандартная лицензия для ArcGIS Desktop. Я знаю, что это нелегкая задача, но она может решить вашу проблему.

ahmadhanb
источник
4

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

введите описание изображения здесь

Venug
источник