Упростить линию (Simplify Line) (Картография)
Резюме
Упрощает линию посредством удаления ее лишних изгибов с сохранением основной формы.
Более подробно о том, как работает инструмент Упростить линию (Simplify Line)
Рисунок
Использование
Используется два метода упрощения:
- Метод Удаление точки (Point remove) является наиболее быстрым из двух. Он заключается в удалении избыточных вершин. Используйте этот метод для сжатия и грубого их упрощения хорошо известных данных. Угловатость получившейся линии после применения этого инструмента значительно возрастет, в связи с чем линия может выглядеть не слишком реалистично.
- Алгоритм Упрощение изгибов (Bend simplify) является более медленным, зато обычно позволяет получить болеекачественный результат. Метод заключается в удалении незначительных изгибов линий. Используйте этот метод для более точного упрощения.
Значение Допуск упрощения (Simplification tolerance) определяет степень упрощения. Это значение рекомендуется установить равным или более минимально допустимого расстояния между графическими элементами. При одинаковом допуске упрощения алгоритм Удаление точек (Point remove) дает менее точные, более упрощенные результаты, чем алгоритм Упрощение изгибов (Bend simplify).
-
Инструмент создает два выходных класса объектов: класс линейных пространственных объектов, в котором сохраняются упрощенные линии, и класс точечных пространственных объектов для сохранения в нем точек, соответствующих линиям, которые в результате обработки стали "нулевыми". Имя и местоположение выходного класса точечных объектов вычисляются автоматически при добавлении суффикса _Pnt. Выходной линейный класс объектов будет содержать все поля входного слоя, а выходной точечный слой не будет содержать никаких полей из числа входных.
-
Предусмотрены разные варианты обработки топологических ошибок выходных данных:
- Параметр Проверка на топологические ошибки (Check for topological errors) выявляет ошибки топологии, получившиеся в результате процесса упрощения линий. Когда выбрана эта опция, параметр Исправлять ошибки топологии (Resolve topological errors) будет тоже включен. Хотя обработка без проверки топологии будет осуществляться быстрее, следует, однако, включать этот параметр, если вы не уверены в корректности топологии данных.
- Выходные линейные данные будут иметь два новых поля для отображения, имеют ли объекты топологические ошибки. Поля InLine_FID и SimLnFlag содержат, соответственно, идентификаторы объектов и топологические ошибки. Значение 1 означает наличие ошибки, значение 0 означает, что ошибки не обнаружены.
- Метки останутся после исправления топологических ошибок. Для изучения объектов, имеющих топологические ошибки, используйте поле SimLnFlag.
-
Параметры Проверка на топологические ошибки (Check for topological errors) и Исправлять ошибки топологии (Resolve topological errors) не могут использоваться во время сессии редактирования. Выключите параметр Проверка на топологические ошибки (Check for topological errors), для того чтобы запустить инструмент во время сессии редактирования.
Синтаксис
Параметр | Объяснение | Тип данных |
in_features |
Линейные объекты, которые необходимо упростить. | Feature Layer |
out_feature_class |
Создаваемый выходной класс линейных пространственных объектов. | Feature Class |
algorithm |
Определяет используемый алгоритм упрощения линий.
| String |
tolerance |
Допуск, определяющий степень упрощения. Должен быть указан допуск, значение которого больше нуля. Вы можете выбрать предпочитаемые единицы измерения; единицами измерения по умолчанию являются единицы измерения объекта.
| Linear unit |
error_resolving_option (дополнительно) |
Определяет способ обработки топологических ошибок, которые могут появиться в процессе обработки (в том числе пересечения и перекрытия линий, а также образовавшиеся линии нулевой длины). Параметр будет задействован, если опция error_checking_option включена (это значение по умолчанию).
| Boolean |
collapsed_point_option (дополнительно) |
Определяет, необходимо ли сохранять найденные в процессе обработки линии нулевой длины в качестве точечных объектов. Опция применяется в случае, когда выбран параметр NO_CHECK или указаны два параметра - FLAG_ERRORS и CHECK - одновременно.
| Boolean |
error_checking_option (дополнительно) |
Определяет способ обработки топологических ошибок, которые могут появиться в процессе обработки (в том числе пересечения и перекрытия линий, а также образовавшиеся линии нулевой длины).
| Boolean |
Пример кода
Представленный скрипт Окна Python демонстрирует порядок непосредственного использования инструмента.
import arcpy
from arcpy import env
import arcpy.cartography as CA
env.workspace = "C:/data"
CA.SimplifyLine("roads.shp", "C:/output/output.gdb/simplified_roads", "POINT_REMOVE", 20)
Этот автономный скрипт демонстрирует пример использования инструмента 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
from arcpy import env
import arcpy.management as DM
import arcpy.cartography as CA
# Set environment settings
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, "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK")
# 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)