Краткая информация
Упрощает линии посредством удаления лишних вершин с сохранением основной формы.
Более подробно о работе инструментов Упростить линию и Упростить полигон
Использование
Этот инструмент задействует различные алгоритмы упрощения для разных целей:
- Алгоритм POINT_REMOVE работает путём выявления и удаления относительно излишних вершин для упрощения данных, чтобы отображать их в мелких масштабах. Это самый быстрый алгоритм упрощения в данном инструменте. Этот алгоритм часто используется для сжатия данных или грубого упрощения. Угловатость получившейся линии значительно возрастает при увеличении допуска. Данный алгоритм основан на алгоритме Дугласа-Пекера: Douglas, David and Peucker, Thomas, "Algorithms for the reduction of the number of points required to represent a digitized line or its caricature," The Canadian Cartographer 10(2), 112–122 (1973).
- Алгоритм BEND_SIMPLIFY работает путём выявления и сглаживания относительно незначительных изгибов для упрощения данных, чтобы отображать их в мелких масштабах. Он гораздо добросовестнее обрабатывает входную геометрию, чем алгоритм POINT_REMOVE, но его работа занимает гораздо больше времени. Он является более медленным, зато обычно позволяет получить более точный результат. Метод заключается в удалении незначительных изгибов линий. Данный алгоритм основан на алгоритме, описанном в работе Wang, Zeshen and Müller, Jean-Claude, "Line Generalization Based on Analysis of Shape Characteristics," Cartography and Geographic Information Systems 25(1), 3–15 (1998).
- Алгоритм WEIGHTED_AREA определяет треугольник полезной площади для каждой вершины. Затем эти треугольники взвешиваются по набору определений, для оценки их однородности, асимметричности и выпуклости для каждой области. Взвешенные области указывают на избыточные вершины для удаления, позволяющие упростить линию, максимально возможно сохраняя при этом ее характеристики. Данный алгоритм основан на алгоритме, описанном в работе Zhou, Sheng and Jones, Christopher B., (2005) Shape-Aware Line Generalisation with Weighted Effective Area" in Fisher, Peter F. (Ed.) Developments in Spatial Handling 11th International Symposium on Spatial Handling, 369–80.
Параметр Допуск упрощения определяет степень упрощения. Чем больше допуск, тем более грубая выходная геометрия. Меньшие значения допусков дают более достоверную геометрию. MinSimpTol и поля MaxSimpTol добавляются к выходным данным, чтобы там хранился использованный допуск.
- Для алгоритма POINT_REMOVE допуском является максимально допустимое перпендикулярное расстояние от каждой из вершин до новой созданной линии.
- Для алгоритма BEND_SIMPLIFY допуском является диаметр окружности, приближенной к значимому изгибу.
- Для алгоритма WEIGHTED_AREA квадрат допуска – это площадь значительного треугольника, заданного тремя соседними вершинами.
Используйте параметр Сохранить линии нулевой длины (collapsed_point_option в Python), чтобы создать выходной класс пространственных объектов, который будет представлять полигоны, удалённые по причине их размеров меньше минимальной площади. Получаются выходные точки; они используют те же имя и местоположение, как у параметра Выходной класс пространственных объектов (out_feature_class в Python), но с суффиксом _Pnt. В выходном классе линейных объектов имеются все поля, представленные во входном классе. Выходной класс точечных объектов не содержит ни одного из этих полей.
Выходными данными будет топологически корректный линейный класс пространственных объектов. Все топологические ошибки входных данных будут помечены в выходном линейном классе пространственных объектов. Выходной класс пространственных объектов содержит два дополнительных поля: InLine_FID и SimLnFlag, в которых содержатся соответственно идентификаторы входных пространственных объектов и топологические ошибки входных данных. Значение SimLnFlag в 1 означает наличие топологической ошибки; 0 (zero) означает, что ошибок нет.
Используйте параметр Входные барьерные слои для указания пространственных объектов, которые не должны пересекаться упрощаемыми линиями. Объектами-барьерами могут быть полигоны, линии или точки.
Обработка больших наборов входных данных может вызвать превышение ограничений использования оперативной памяти. В таком случае попытайтесь разделить входные данные на части, определив соответствующий полигональный класс пространственных объектов с помощью параметра среды Картографические части. Части данных, разделенные между собой границами разделов, будут последовательно обрабатываться отдельно друг от друга. Полученный класс объектов будет бесшовным и совпадать с границами разделов. Более подробно см. Генерализация больших наборов данных путем разделения на части.
Синтаксис
SimplifyLine_cartography (in_features, out_feature_class, algorithm, tolerance, {error_resolving_option}, {collapsed_point_option}, {error_checking_option}, {in_barriers})
Параметр | Объяснение | Тип данных |
in_features | Входные линейные объекты, которые будут упрощены. | Feature Layer |
out_feature_class | Упрощённый выходной класс линейных объектов. В нём имеются все поля, представленные во входном классе. Выходными данными будет топологически корректный линейный класс пространственных объектов. Инструмент не вводит топологические ошибки, но все топологические ошибки входных данных будут помечены в выходном линейном классе пространственных объектов. Выходной класс пространственных объектов содержит два дополнительных поля: InLine_FID и SimLnFlag, в которых содержатся соответственно идентификаторы входных пространственных объектов и топологические ошибки входных данных. Значение SimLnFlag в 1 означает наличие входной топологической ошибки; 0 (zero) означает, что входных ошибок нет. | Feature Class |
algorithm | Определяет используемый алгоритм упрощения линий.
| String |
tolerance | Допуск, определяющий степень упрощения. Вы можете выбрать предпочитаемые единицы измерения; в противном случае будут использоваться единицы входных данных. MinSimpTol и поля MaxSimpTol добавляются к выходным данным, чтобы там хранился использованный во время обработки допуск.
| Linear Unit |
error_resolving_option (Дополнительный) | Boolean | |
collapsed_point_option (Дополнительный) | Определяет, надо ли создать выходной класс пространственных объектов, который будет представлять конечные точки линий, удалённых по причине их размеров меньше допуска. Получаются выходные точки; они используют те же имя и местоположение, как у параметра out_feature_class, но с суффиксом _Pnt.
| Boolean |
error_checking_option (Дополнительный) | Boolean | |
in_barriers [in_barriers,...] (Дополнительный) | Входные данные, содержащие пространственные объекты, действующие при упрощении как барьеры. Выходные упрощённые линии, которые не касаются и не пересекают объекты-барьеры. Например, при упрощении изолиний точки высот выступают как барьеры, чтобы упрощённые линии не могли проходить через точки высот. Выходные данные не будут нарушать форму рельефа. | Feature Layer |
Пример кода
SimplifyLine, пример 1 (окно Python)
Следующий скрипт окна Python показывает, как использовать инструмент SimplifyLine в режиме прямого запуска.
import arcpy
import arcpy.cartography as CA
arcpy.env.workspace = "C:/data"
CA.SimplifyLine("roads.shp",
"C:/output/output.gdb/simplified_roads",
"POINT_REMOVE",
20)
SimplifyLine, пример 2 (автономный скрипт)
В следующем автономном скрипте показано, как использовать инструмент SimplifyLine.
# Name: SimplifyLine_Example2.py
# Description: Simplify line features from two feature classes, rivers and coastlines,
# while maintaining their connections
# Import system modules
import arcpy
import arcpy.management as DM
import arcpy.cartography as CA
# Set environment settings
arcpy.env.workspace = "C:/data/Portland.gdb/Hydrography"
# Set local variables
inRiverFeatures = "rivers"
inCoastlineFeatures = "coastlines"
mergedFeatures = "C:/data/PortlandOutput.gdb/merged_lines"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/merged_lines_simplified"
tempLayer = "tempLyr"
outRiverFeatureClass = "C:/data/PortlandOutput.gdb/rivers_final"
outCoastlineFeatureClass = "C:/data/PortlandOutput.gdb/coastlines_final"
# Merge rivers and coastlines into one feature class,
# assuming that they have a common f-code field
# with value 40 for rivers and 80 for coastlines.
DM.Merge(inRiverFeatures, inCoastlineFeatures, mergedFeatures)
# Simplify all lines.
CA.SimplifyLine(mergedFeatures,
simplifiedFeatures,
"BEND_SIMPLIFY",
100,
"KEEP_COLLAPSED_POINTS")
# Select rivers and coastlines by their f-code values
# and put them in separate feature classes.
DM.MakeFeatureLayer(simplifiedFeatures, tempLayer, "f-code = 40")
DM.CopyFeatures(tempLayer, outRiverFeatureClass)
DM.MakeFeatureLayer(simplifiedFeatures, tempLayer, "f-code = 80")
DM.CopyFeatures(tempLayer, outCoastlineFeatureClass)
Параметры среды
Информация о лицензиях
- ArcGIS Desktop Basic: Нет
- ArcGIS Desktop Standard: Да
- ArcGIS Desktop Advanced: Да