Упростить линию (Картография)

Краткая информация

Упрощает линии посредством удаления лишних вершин с сохранением основной формы.

Иллюстрация

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

Использование

  • Этот инструмент использует различные алгоритмы упрощения для разных целей. Более подробно о работе этих алгоритмов, см. Как работают инструменты Упростить линию и Упростить полигон.

    • Алгоритм Сохранение критических точек (Дугласа-Пекера) (algorithm = "POINT_REMOVE" в Python) идентифицирует и удаляет относительно излишние вершины для упрощения данных, чтобы отображать их в мелких масштабах. Это самый быстрый алгоритм упрощения в данном инструменте. Этот алгоритм часто используется для сжатия данных или грубого упрощения. Угловатость получившейся линии значительно возрастает при увеличении допуска. Данный алгоритм основан на алгоритме Дугласа-Пекера: 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).
    • Алгоритм Сохранение критических изгибов (Ванга-Мюллера) (algorithm = "BEND_SIMPLIFY" в Python) выявляет и сглаживает относительно незначительные изгибы для упрощения данных, чтобы отображать их в мелких масштабах. Он гораздо точнее обрабатывает входную геометрию, чем алгоритм Сохранение критических точек (Дугласа-Пекера), но его работа занимает гораздо больше времени. Данный алгоритм основан на алгоритме, описанном в работе 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).
    • Алгоритм Сохранение взвешенной полезной площади (Джоуи-Джонс) (algorithm = "WEIGHTED_AREA" в Python) определяет треугольник полезной площади для каждой вершины. Затем эти треугольники взвешиваются по набору определений, для оценки их однородности, асимметричности и выпуклости для каждой области. Взвешенные области указывают на избыточные вершины для удаления, позволяющие упростить линию, максимально возможно сохраняя при этом ее характеристики. Данный алгоритм основан на алгоритме, описанном в работе Zhou, Sheng и Jones, Christopher B., 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 (2005).
    • Алгоритм Сохранение полезных областей (Визвалингам-Ватт) (algorithm = "EFFECTIVE_AREA" в Python) идентифицирует треугольники полезной области для каждой вершины, чтобы направлять удаление вершин для упрощения линии, сохраняя при этом как можно точнее её характеристики. Этот алгоритм опирается на алгоритм, описанный Visvalingam, M. и Whyatt, J. D., "Line Generalisation by Repeated Elimination of the Smallest Area," Cartographic Information Systems Research Group (CISRG) Discussion Paper 10, The University of Hull (1992).

  • Параметр Допуск упрощения определяет степень упрощения. Чем больше допуск, тем грубее будет полученная геометрия. Меньшие значения допусков позволяют получить геометрию, более точно представляющую входные данные. Поля MinSimpTol и MaxSimpTol добавляются к выходным данным, и в них записывается используемый допуск.

    Прежние версии:

    При исправлении ошибок топологии, в предыдущих версиях этого инструмента до ArcGIS Pro 1.4, изменялся кластерный допуск для каждого объекта, и эти значения хранились в полях MinSimpTol и MaxSimpTol. Теперь значения в этих полях остаются неизменными и соответствует допуску, указанному в параметре Допуск упрощения. Не забудьте изменить существующие модели и скрипты, если они ссылаются на эти поля.

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

  • Используйте параметр Сохранить линии нулевой длины (collapsed_point_option в Python), чтобы создать выходной класс пространственных объектов, который будет представлять полигоны, удалённые по причине их размеров меньше минимальной площади. Получаются выходные точки, у которых будут такие же имя и местоположение, как в параметре Выходной класс объектов (out_feature_class в Python), но с суффиксом _Pnt. В выходном классе линейных объектов имеются все поля, представленные во входном классе. Выходной класс точечных объектов не содержит ни одного из этих полей.

  • Выходными данными будет топологически корректный линейный класс пространственных объектов. Все топологические ошибки входных данных будут помечены в выходном линейном классе пространственных объектов. Выходной класс пространственных объектов содержит два дополнительных поля: InLine_FID и SimLnFlag, в которых содержатся соответственно идентификаторы входных пространственных объектов и топологические ошибки входных данных. Значение SimLnFlag, равное 1, означает наличие топологической ошибки; 0 (ноль) означает, что ошибок нет.

    Прежние версии:

    До версии ArcGIS Pro 1.4 этого инструмента топологические ошибки могли генерироваться в процессе обработки. Параметры Проверка на топологические ошибки (error_checking_option в Python) и Исправлять ошибки топологии (error_resolving_option в Python) включены для выявления и при желании разрешения этих ошибок. Эти параметры пока присутствуют в синтаксисе скрипта для совместимости в скриптах и моделях, но в диалоговом окне инструмента скрыты и в данный момент не используются. Поле SimLnFlag использовалось для того, чтобы помечать топологические ошибки, возникшие в процессе работы инструмента. В этом поле отмечены ошибки, присутствующие во входных данных.

  • Используйте параметр Входные барьерные слои для указания пространственных объектов, которые не должны пересекаться упрощаемыми линиями. Объектами-барьерами могут быть полигоны, линии или точки.

  • Домены и подтипы копируются в выходные данные, даже если параметр среды Перенесение доменов, подтипов и правил атрибутов не отмечен.

  • Обработка больших наборов входных данных может вызвать превышение ограничений использования оперативной памяти. В таком случае попытайтесь разделить входные данные на части, определив соответствующий полигональный класс пространственных объектов с помощью параметра среды Картографические части. Части данных, разделенные между собой границами разделов, будут последовательно обрабатываться отдельно друг от друга. Полученный класс объектов будет бесшовным и совпадать с границами разделов. Более подробно см. Генерализация больших наборов данных путем разделения на части.

Параметры

ПодписьОписаниеТип данных
Входные объекты

Входные линейные объекты, которые будут упрощены.

Feature Layer
Выходной класс пространственных объектов

Упрощённый выходной класс линейных объектов. В нём имеются все поля, представленные во входном классе. Выходными данными будет топологически корректный линейный класс пространственных объектов. Инструмент не вводит топологические ошибки, но все топологические ошибки входных данных будут помечены в выходном линейном классе пространственных объектов. Выходной класс пространственных объектов содержит два дополнительных поля, InLine_FID и SimLnFlag, в которых содержатся соответственно идентификаторы входных пространственных объектов и топологические ошибки входных данных. Значение SimLnFlag равное 1 означает наличие входной топологической ошибки, а значение 0 (ноль) означает, что входных ошибок нет.

Feature Class
Алгоритм упрощения

Определяет используемый алгоритм упрощения линий.

  • Сохранение критических точек (Дуглас-Пекер)Критические точки, которые образуют главную форму линии, сохраняются, а все остальные точки удаляются (Дуглас – Пекер). Используется по умолчанию.
  • Сохранение критических изгибов (Ванг-Мюллер)Критические изгибы сохраняются, а лишние изгибы удаляются из линии (Ванг – Мюллер).
  • Сохранение взвешенной полезной площади (Джоуи-Джонс)Вершины, которые формируют треугольники эффективной площади, взвешенные согласно треугольной геометрии - сохраняются (Джоуи – Джонс).
  • Сохранение полезных областей (Визвалингам – Ватт)Вершины, которые формируют треугольники эффективной площади (Визвалингам – Ватт) - сохраняются.
String
Допуск упрощения

Допуск, определяющий степень упрощения. Вы можете выбрать предпочитаемые единицы измерения; в противном случае будут использоваться единицы входных данных. Поля MinSimpTol и MaxSimpTol добавляются к выходным данным, чтобы там хранился использованный во время обработки допуск.

  • Для алгоритма Сохранение критических точек (Дугласа-Пекера) допуском является максимально допустимое перпендикулярное расстояние от каждой из вершин до новой созданной линии.
  • Для алгоритма Сохранение критических изгибов (Ванга-Мюллера) допуском является диаметр окружности, приближенной к значимому изгибу.
  • Для алгоритма Сохранение взвешенной полезной площади (Джоуи-Джонс) квадрат допуска – это площадь значительного треугольника, заданного тремя соседними вершинами. Чем дальше треугольник отклоняется от равностороннего, тем больший вес он получает и тем меньше вероятность его удаления.
  • Для алгоритма Сохранение полезных областей (Визвалингам-Ватт) квадрат допуска – это площадь значительного треугольника, заданного тремя соседними вершинами.
Linear Unit
Исправлять ошибки топологии
(Дополнительный)
Прежние версии:

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

Boolean
Сохранить линии нулевой длины
(Дополнительный)

Определяет, будет ли создан выходной класс точечных объектов, который будет представлять конечные точки линий, удалённых по причине их размеров меньше допуска. Создаются выходные точки; они используют те же имя и местоположение, как у параметра Выходной класс объектов, но с суффиксом.

  • Отмечено - производный выходной класс точечных объектов создается для хранения конечных точек удаленных линий нулевой длины. Это значение по умолчанию
  • Не отмечено - производный выходной класс точечных объектов не создается.
Boolean
Проверка на топологические ошибки
(Дополнительный)
Примечание:

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

Boolean
Входные слои барьеров
(Дополнительный)

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

Feature Layer

Производные выходные данные

ПодписьОписаниеТип данных
Линии, сжатые в точки

Если используется параметр Сохранить линии нулевой длины (collapsed_point_option в Python), то создается точечный выходной класс пространственных объектов, который будет хранить конечные точеки любых линий короче значения пространственного допуска этого набора данных.

Feature Class

arcpy.cartography.SimplifyLine(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 (ноль) означает, что входных ошибок нет.

Feature Class
algorithm

Определяет используемый алгоритм упрощения линий.

  • POINT_REMOVEКритические точки, которые образуют главную форму линии, сохраняются, а все остальные точки удаляются (Дуглас – Пекер). Используется по умолчанию.
  • BEND_SIMPLIFYКритические изгибы сохраняются, а лишние изгибы удаляются из линии (Ванг – Мюллер).
  • WEIGHTED_AREAВершины, которые формируют треугольники эффективной площади, взвешенные согласно треугольной геометрии - сохраняются (Джоуи – Джонс).
  • EFFECTIVE_AREAВершины, которые формируют треугольники эффективной площади (Визвалингам – Ватт) - сохраняются.
String
tolerance

Допуск, определяющий степень упрощения. Вы можете выбрать предпочитаемые единицы измерения; в противном случае будут использоваться единицы входных данных. Поля MinSimpTol и MaxSimpTol добавляются к выходным данным, чтобы там хранился использованный во время обработки допуск.

  • Для алгоритма POINT_REMOVE допуском является максимально допустимое перпендикулярное расстояние от каждой из вершин до новой созданной линии.
  • Для алгоритма BEND_SIMPLIFY допуском является диаметр окружности, приближенной к значимому изгибу.
  • Для алгоритма WEIGHTED_AREA квадрат допуска – это площадь значительного треугольника, заданного тремя соседними вершинами. Чем дальше треугольник отклоняется от равностороннего, тем больший вес он получает и тем меньше вероятность его удаления.
  • Для алгоритма EFFECTIVE_AREA квадрат допуска – это площадь значительного треугольника, заданного тремя соседними вершинами.
Linear Unit
error_resolving_option
(Дополнительный)
Прежние версии:

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

Boolean
collapsed_point_option
(Дополнительный)

Определяет, будет ли создан выходной класс точечных объектов, который будет представлять конечные точки линий, удалённых по причине их размеров меньше допуска. Создаются выходные точки; они используют те же имя и местоположение, как у параметра out_feature_class объектов, но с суффиксом.

  • KEEP_COLLAPSED_POINTSПроизводный выходной класс точечных объектов создается для хранения конечных точек удаленных линий нулевой длины. Это значение по умолчанию
  • NO_KEEPПроизводный выходной класс точечных объектов не создается.
Boolean
error_checking_option
(Дополнительный)
Примечание:

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

Boolean
in_barriers
[in_barriers,...]
(Дополнительный)

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

Feature Layer

Производные выходные данные

ИмяОписаниеТип данных
out_point_feature_class

Если используется параметр Сохранить линии нулевой длины (collapsed_point_option в Python), то создается точечный выходной класс пространственных объектов, который будет хранить конечные точеки любых линий короче значения пространственного допуска этого набора данных.

Feature Class

Пример кода

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)

Информация о лицензиях

  • Basic: Нет
  • Standard: Да
  • Advanced: Да

Связанные разделы