Отримання межі растрового зображення як полігону в ArcGIS Desktop?


28

У мене в ArcGIS Desktop прямокутне растрове зображення.

Як я можу створити багатокутник, який є лише розміром растрового зображення?

Тобто я хочу мати багатокутний шар з єдиним чотирикутником, який є краєм зображення.

Я спробував просто зробити перетворення Raster-> Polygon, але це намагається використовувати дані на зображенні для створення контуру - все, що мені потрібно, - це контур краю зображення.

Я використовую ArcGIS Desktop 10.

Відповіді:


33

Якщо у вас є просторовий аналітик, ви можете:

  1. Помножте растр на 0, щоб створити растр постійної величини за допомогою Raster Calculator. (не забудьте перетворити його на цілий тип або крок 2 не працюватиме)
  2. Перетворіть результат кроку 1 в багатокутник за допомогою інструменту «Растр в полігон».

Ще одне рішення:

Якщо у вас є ліцензія на 3D Analyst, ви можете використовувати інструмент Домен растрових під 3D Analyst> Конверсія> з растрових (однак він не має плавної функції)


12

Ви можете використовувати інструмент Raster Domain від 3D Analyst для створення багатокутника в тій же мірі, що і ваші растрові дані


Ласкаво просимо до GIS SE! Чи можете ви додайте посилання на свою відповідь? Так було б більш солідно.
РК

Інструмент Raster Domain зробив цю роботу ідеально! Створює контур або межу растрових даних.

1
Слово попередження про цей інструмент - створений обмежувальний полігон - це масштаб ваших растрових даних, починаючи і закінчуючи в ЦЕНТРІ пікселів, а не зовнішній край пікселів. Я просто спробував це і подумав, що він повернув зовнішнє обмежувальне поле растра, але коли ви збільшите масштаб, ви побачите, що обмежувальне поле починається в центрі пікселів.
fbiles

Насправді існує параметр для методу IRasterDomainExtractor.ExtractDomain, який контролює, чи він використовує центр або зовнішній край пікселів / комірок.
Престон

Це прекрасно! Один інструмент, і у мене є контур мого растру багатокутника. Спасибі!
користувач3281667

11

А як просто оцифровувати його? Клік-клік-натиснення-натискання зроблено.


8
Не дуже впевнений, чому за цей варіант проголосовано. Ви можете знайти координати кутів міри та створити вершини за цими координатами. Його навіть можна використовувати для аналізу. Якщо він призначений лише для відображення, відмінно працює клацання-натискання-клацання.
Балток

3
Я б сказав, тому що растр може бути неправильної форми і, залежно від складності, може призвести до досить втомлювальної роботи з оцифрування
Філ Хенлі

4
Але ОП заявила, що це прямокутна форма. Мені це здається досить простою роботою. Якщо збільшити масштаб і бути точним, різниця між фактичним растровим контуром та оцифрованим контуром була б незначною для будь-яких застосувань у реальному світі.
Метт

10

Ви можете використовувати інструмент Build Footprint в Панелі інструментів управління даними. Ви повинні створити набір даних Mosaic із свого растру.

Створіть нову мозаїку у базі даних геоданих, додайте растр.

Відкрийте мозаїку в ArcMap і витягніть слід.

Це я і зробив.


8

Я використовую цей простий скрипт python, він створює функціональний клас багатокутника з розміром усіх растрових присутніх у папці. Для його використання можна створити інструмент у ArcToolbox або просто змінити змінні InFolder та Dest (Destination).

import arcpy,os

InFolder = arcpy.GetParameterAsText(0)
Dest=arcpy.GetParameterAsText(1)

arcpy.env.workspace=InFolder
#The raster datasets in the input workspace
in_raster_datasets = arcpy.ListRasters()

arcpy.CreateFeatureclass_management(os.path.dirname(Dest),
                                   os.path.basename(Dest),
                                   "POLYGON")
arcpy.AddField_management(Dest,"RasterName", "String","","",250)
arcpy.AddField_management(Dest,"RasterPath", "String","","",250)

cursor = arcpy.InsertCursor(Dest)
point = arcpy.Point()
array = arcpy.Array()
corners = ["lowerLeft", "lowerRight", "upperRight", "upperLeft"]
for Ras in in_raster_datasets:
    feat = cursor.newRow()  
    r = arcpy.Raster(Ras)
    for corner in corners:    
        point.X = getattr(r.extent, "%s" % corner).X
        point.Y = getattr(r.extent, "%s" % corner).Y
        array.add(point)
    array.add(array.getObject(0))
    polygon = arcpy.Polygon(array)
    feat.shape = polygon
    feat.setValue("RasterName", Ras)
    feat.setValue("RasterPath", InFolder + "\\" + Ras)
    cursor.insertRow(feat)
    array.removeAll()
del feat
del cursor  

можна детально розповісти, як користуватися цим кодом. Я хочу використовувати його в .asc растровому файлі. Мої зображення відрізняються різною підпапкою.
Різник даних GIS

1
Відповідь від jeb працює на мене, не майте достатньої кількості представників, щоб проголосувати за нього. @GIS Data Butcher Збережіть повне джерело у файл script.py та виконайте його з вікна Python у ArcMap. Ви можете використовувати наступну команду у вікні Python для виконання сценарію з файлу. > execfile (r'd: \ temp \ script.py ')
Asad

ідеально !! мені цікаво, чи є спосіб, щоб інструмент зчитування підпапок також?
Рафаель

@raphael, точно, вам просто потрібно реалізувати стандартний python os.listdir або os.walk в сценарії.
Джеб

@jeb так, я розумію ... бот, я дуже новачок у цьому, і не можу змусити його працювати ... чи можете ви дати допомогу?
raphael

4

Також простим способом є використання інструменту Reclassify, де слід натиснути кнопку Класифікувати та змінити кількість класів на 1. Клацніть ОК. Тепер вихідний растр можна легко перетворити за допомогою інструменту перетворення Raster to Polygon. ;)


4

Я думаю, що перекласифікація та перетворення растру на багатокутник може бути занадто трудомістким. На мою думку, найпростіший спосіб це зробити:

  • Отримайте maxX, maxY, minX, minY (це можна зробити в Python за допомогою команди опису)
  • Запустіть Створити риб’ячу мережу з розміром вище та кількістю рядків / стовпців як 1

Якщо у вас багато растру, це потрібно зробити в Python і може створити сотні слідів за лічені секунди.


0

У ArcCatalog ви можете створити растровий каталог у .gdb (Інструменти управління даними-> Растр). Некерований - це добре. Потім клацніть правою кнопкою миші та завантажте її (якщо растри просто сидять у папці, тоді "завантажте з робочої області". Якщо ви завантажите каталог растру в ArcMap, ви можете клацнути правою кнопкою миші-> дані-> експорт сліду, як файл форми або клас функції. У файлі форми буде поле "ім'я", заповнене іменем растра.

Каталог растрових файлів автоматично відображатиме розширення, але мені потрібно було відправити розширення тому, хто не використовував ArcGIS.


0

Використовуйте інструмент «Растр до багатокутника» в панелі інструментів перетворення. Переконайтесь, що зніміть прапорець у поле для спрощення полігонів. Це створить саме те, що ви хочете.


8
Ви впевнені, що це не просто створює величезний безлад полігонів, по одному для кожного суміжного набору пікселів однакового значення в оригінальному зображенні?
whuber

Ви завжди можете додати розчинник після цього, щоб отримати ступінь poly. Однак, я думаю, що рішення python, перелічене @jeb, швидше.
GeoJohn

0

Інструмент "Raster Domain" створить багатокутник навколо растра неправильної форми. Я вважаю, що це вимагає ліцензії на розширення 3d-аналітики.


0

Використання ArcCatalog - найкращий варіант. Створіть набір даних Mosaic з доступних растрових. Визначте "NO VALUE" у мозаїці, щоб уникнути включення фонового растру в полігон. Побудувати сліди за допомогою радіометричного методу. Відкрийте набір даних Mosaic в ArcGIS та експортуйте Footprints у файл shp. Чудовий спосіб отримати межі мозаїки ...


0

Якщо ви намагаєтеся накреслити растр DEM, вам потрібно буде виконати наступне

Якщо у вас є просторовий аналітик та 3d аналітик, ви можете:

  1. помножте растр на 0, щоб створити растр постійної величини за допомогою Raster Calculator.
  2. Перетворіть результати кроку 1 в ціле растрове число, використовуючи "INT (інструмент)". Це необхідно для наступного кроку.
  3. конвертувати результат кроку 2 у багатокутник за допомогою інструменту «Растр в полігон» (працює лише з растровими цілими числами).

Привіт, Seamster02, ласкаво просимо на біржу стека GIS :) Як написано, це не суттєво відрізняється від прийнятої відповіді, gis.stackexchange.com/a/22016/108 .
matt wilkie
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.