Створення формфайлу, що показує сліди растрових?


33

У мене є близько 1000 супутникових знімків у форматі tiff, і я хочу створити файл форми, який буде слугувати в якості покажчика растрам. Це щось подібне до растрового каталогу, але я не хочу будувати растровий каталог.

Деякі перешкоди, які я можу передбачити, полягають у тому, що зображення є георефрендами, тому вони не мають прямокутної форми (я кажу про область даних).

Для уточнення я вимагаю, щоб багатокутник охоплював лише ненульові (або не нодатні) пікселі растра, а не весь прямокутний растр. Більшість відповідей поки що дає прямокутний багатокутник, який охоплює дані, а також непікселі.

Мій образ Зразок супутникового зображення


Результат, отриманий інструментами, які я перевірив (на кшталт растрових каталогів, різних архівних скриптів, користувацького сценарію Python, наведеного в одній з відповідей): Результат


Результат, який я хочу: введіть тут опис зображення


4
Схоже, створення растрового каталогу навіть тимчасово було б хорошим рішенням для створення слідів. Ви можете створити каталог без керування, який створює таблицю посилань, але залишає зображення в їх місці на сервері. Зробити пакетний імпорт растра до каталогу легко і порівняно швидко. Після створення можна експортувати сліди до нового класу функцій та видалити растровий каталог. Це може бути таким же швидким, як і інші варіанти.
Отримайте просторовий

2
Мозаїчний набір даних також створює слід зображення.
Рой

Мозаїчний набір даних - це шлях. Дуже легко здійснити
Бред Несом

Отже, в останньому зображенні пікселі поза червоним полем NoData або 0? Якщо вони дорівнюють 0, чи є пікселі у потрібній області, які також мають значення 0?
Чад Купер

1
Пікселі поза червоною облямівкою є нодатами; Однак мої мультиспектральні дані мають 0,0,0 як значення RGB для областей вузлів. В обох випадках не існує пікселів зі значенням 0 всередині потрібної області.
Devdatta Tengshe

Відповіді:


15

У QGIS є плагін, який називається Image Boundary . Це чудовий інструмент. У цьому інструменті є опція "Дійсні пікселі", яка опускає, наприклад, чорні краї супутникового зображення.


Цей плагін вимагає робити те, що я хотів, але це не вдається на зображенні, з яким я експериментував. Я спробую зі своїми реальними даними завтра.
Devdatta Tengshe

Я виявив, що цей плагін дуже добре працює з мультиспектральними даними, але іноді дає дивні результати з односмуговими панкроматичними зображеннями.
Devdatta Tengshe

2
Я погоджуюся з тим, що границя зображення QGIS працює найкраще, але чи є інструмент для цього для векторних файлів, де нам не потрібна "обмежувальна скринька" або "слід", а полігон, що окреслює там, де є дані.
GeorgeC

Інструменти для обмеження зображень чудові, однак, надане вами посилання - 404. Я вважаю, що інструменти все ще доступні, якщо дозволити експериментальні додатки в налаштуваннях плагіна. Можливо, скористайтеся цим посиланням ?: github.com/lmotta/imagefootprint_plugin
Aaron

Чи є документація щодо використання межі зображення?
Лунух

9

Наступний код візьме растровий вхід, отримає його масштаб і вставить цю міру в клас класів багатокутника:

import arcpy

r = arcpy.Raster(in_raster)
point = arcpy.Point()
array = arcpy.Array()

corners = ["lowerLeft", "lowerRight", "upperRight", "upperLeft"]

cursor = arcpy.InsertCursor(fc)
feat = cursor.newRow()
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))
print len(array)
polygon = arcpy.Polygon(array)
feat.shape = polygon
cursor.insertRow(feat)
array.removeAll()
del feat
del cursor

Ви можете запустити його у вікні ArcMap Python, встановивши in_rasterі fcтак:

>>> fc = 'r_extent'
>>> in_raster = 'CaliCoast10mNED_HavCurvedPCS'

де r_extentє існуючий багатокутний клас класу. Потім просто скопіюйте код і запустіть його. Я отримую це:

введіть тут опис зображення


1
Я повинен використовувати код вище , щоб зробити те ж саме для папки: gist.github.com/4162013
Джеб

7

Ви можете використовувати gdaltindex для цього: http://www.gdal.org/gdaltindex.html

Однак він все одно створюватиме прямокутники (наприклад, 4 + 1 бали) у тій же системі відліку, що і зображення. Але мені цікаво, чи це насправді проблема: наскільки великі ваші образи?


Проблема gdaltindex полягає в тому, що він створює прямокутний багатокутник для кожного зображення. Мене цікавлять лише ненульові значення пікселів
Devdatta Tengshe

4

Я спробував інструмент "Межі зображення" в QGIS, але він не вдається з деякими растрами.

Інший варіант, який працював для мене, це: - 1. Перетворити растровий вхід в єдине цифрове число за допомогою утиліти командного рядка gdal_translate.

gdal_translate -co компрес = lzw -b 1 -ot byte -scale 1 1 inp.tif out.tif

Це створить растр зі значеннями 1 скрізь, коли .p.tif мав ненульові значення.

  1. Потім в ArcMap ви можете скористатися інструментом «растр до багатокутника», щоб отримати полігон (shapefile).

Форма виводу файлу матиме не чотирикутні межі з декількома вершинами багатокутника за фактичною межею зображення.


3

Якщо вас цікавить сценарій рішення, спробуйте команду gdal nearblack . Ви можете використовувати прапор -белі для отримання даних, обмежених пробілом. Ви можете полігонізувати вихід, щоб створити не прямокутний слід растрових даних.

##run nearblack
shellcmds = "nearblack -white -o " + outpath + " " + inpath
os.system(shellcmds)

##run polygonize
shellcmds = "gdal_polygonize.py " + outpath + " -f" + """ "ESRI Shapefile"  """ + outpath2 + " nearblack"
os.system(shellcmds)

1

Я вважаю, що в світі ArcGIS ви можете досягти цього за допомогою інструмента 3D Analyst \ Conversion \ From Raster \ Raster Domain Domain .


Він працює лише на 3D-даних і навіть тоді не дає очікуваних результатів. Зовсім не працює із супутниковими знімками.
Devdatta Tengshe

Так, це правда. Я залишу відповідь для інших, щоб бути в курсі цього.
Томек

0

У ArcGIS 3D Analyst є інструмент, який називається Raster Domain, який створює полігон або полілінійний відбиток частин даних растрового набору даних і ігнорує комірки NoData. Для мене чудово працювали.


1
Ласкаво просимо на наш сайт! Чи можете ви пояснити, чим відрізняється ваша відповідь від Томека?
whuber

Растерний домен працював на мене - дякую за допомогу!
meryloo

0

Ви можете створити растровий каталог із присвоєною просторовою посиланням, додати каталог растра до ArcMap, а потім "Експорт сліду". Пам'ятайте, що є можливість створити растровий каталог "НЕМАГАЛЬНИЙ", щоб ви не робили дубліката кожного растрового набору даних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.