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


9

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

Спасибо.

PS Я использую ArcInfo 10.0

clipPolylinesToRasterExtent

Ответы:


12

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

import arcpy

pnt_array = arcpy.Array()
extent = arcpy.Raster(in_raster).extent
pnt_array.add(extent.lowerLeft)
pnt_array.add(extent.lowerRight)
pnt_array.add(extent.upperRight)
pnt_array.add(extent.upperLeft)

poly = arcpy.Polygon(pnt_array)

arcpy.Clip_analysis(in_lines, poly, "out_dataset")

Спасибо!! До того, как я увидел этот пост, я мог хотя бы вручную сделать это в Arc, но, похоже, мой путь немного запутан. Я создал фиктивный шейп-файл, а затем создал многоугольник с помощью инструментов редактора, которые очертили границу растровых данных. Затем я запустил инструмент обрезки на полилиниях, используя этот фиктивный шейп-файл, как и тот, который должен их обрезать. Я получил ошибку, но затем я использовал функцию многоугольника и использовал результат этого как шейп-файл для обрезки полилиний, и это сработало !! Мне понадобится arcpy, так что спасибо за это! :-)
niklas24

2

Есть простой способ сделать это.

Сначала получите размер растрового изображения.

установить его как свойство экстента среды

Затем используйте функцию копирования вместо анализа клипов, например

arcpy.env.extent = arcpy.Extent(-107.0, 38.0, -104.0, 40.0)
...some code here to ...
arcpy.CopyFeatures_management(shapefile,outFeatureClass)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.