Сводка
Добавляет вершины вдоль линейных и многоугольных объектов. Инструмент произведет замену отрезков кривых (кривых Безье, дуг окружности, дуг эллипса) на линейные сегменты с множеством вершин.
Иллюстрация
Использование
Прямые линейные сегменты будут уплотнены со значением параметра Расстояние (Distance). Кривые будут упрощены посредством добавления вершин по значению параметров Расстояние (Distance), Максимальный угол отклонения (Maximum Deflection Angle) или Отклонение максимального сдвига (Maximum Offset Deviation).
Уплотнение производится посегментно.
При запуске инструмента Уплотнить (Densify) может быть использован только один метод уплотнения.
Пространственная привязка (Spatial Reference) данных очень важна для корректной работы инструмента. Пространственные объекты должны быть уплотнены с использованием нужной системы координат для поддержания корректной формы пространственных объектов.
Для каждой вершины исходного объекта, включая точку начала и конца, будет совпадающая вершина в результирующем объекте.
При уплотнении с помощью параметра Отклонение максимального сдвига (Maximum Offset Deviation), если входные объекты содержат дуги окружности, то максимальное значение сдвига будет ограничено таким образом, чтобы угол между двумя последовательными линейными сегментами в выходных данных не превышал десяти градусов. Значение этого угла может быть превышено, если вы используете параметр Максимальный угол отклонения (Maximum Deflection Angle).
Синтаксис
arcpy.edit.Densify(in_features, {densification_method}, {distance}, {max_deviation}, {max_angle})
Параметр | Объяснение | Тип данных |
in_features | Класс пространственных объектов линий или полигонов, объекты которого будут уплотнены. | Feature Layer |
densification_method (Дополнительный) | Метод уплотнения пространственных объектов.
| String |
distance (Дополнительный) | Максимальное линейное расстояние между вершинами. Это расстояние всегда будет использоваться для линейных сегментов, а также для упрощения кривых. Значением по умолчанию является допуск данных xy. | Linear unit |
max_deviation (Дополнительный) | Максимальное расстояние, на которое может быть удален выходной сегмент от исходного. Этот параметр влияет только на кривые. Значением по умолчанию является допуск данных xy. | Linear unit |
max_angle (Дополнительный) | Максимальный угол, который может быть получен при пересечении входного и выходного объектов. Допустимый диапазон включает значения от 0 до 90. Значение по умолчанию – 10. Параметр влияет только на кривые. | Double |
Пример кода
Пример 1 функции Densify (окно Python)
В окне Python написан скрипт, где используется функция Densify в прямом режиме.
import arcpy
arcpy.Densify_edit("C:/data.gdb/lines", "ANGLE","", "", "0.75")
Пример 2 функции Densify (автономный скрипт)
Ниже приводится код независимого скрипта, в котором используется функция Уплотнить (Densify), а также инструмент редактирования Замыкание (Snap).
# Name: Snap.py
# Description: Snap climate regions boundary to vegetation layer
# boundary to ensure common boundary is coincident
# import system modules
#
import arcpy
# Set environment settings
#
arcpy.env.workspace = "C:/data"
# Make backup copy of climate regions feature class,
# since modification with the Editing tools below is permanent
#
climateBackup = "backups/climate.shp"
arcpy.CopyFeatures_management('climate.shp', climateBackup)
# Densify climate regions feature class to make sure there are enough
#vertices to match detail of vegetation layer when layers are snapped
#
arcpy.Densify_edit('climate.shp', "DISTANCE", "10 Feet")
# Snap climate regions feature class to vegetation layer vertices and edge
# first, snap climate region vertices to the nearest vegetation vertex within 30 Feet
# second, snap climate region vertices to the nearest vegetation edge within 20 Feet
#
snapEnv1 = ["Habitat_Analysis.gdb/vegtype", "VERTEX", "30 Feet"]
snapEnv2 = ["Habitat_Analysis.gdb/vegtype", "EDGE", "20 Feet"]
arcpy.Snap_edit('climate.shp', [snapEnv1, snapEnv2])
Параметры среды
Информация о лицензиях
- Basic: Нет
- Standard: Да
- Advanced: Да