Raster ayak izlerini gösteren shapefile oluşturmak?


33

Tiff formatta yaklaşık 1.000 uydu görüntüsüm var ve rasterlere bir indeks görevi yapacak bir shapefile oluşturmak istiyorum. Bu raster kataloguna benzer bir şey, ancak raster katalog oluşturmak istemiyorum.

Görebildiğim bazı engeller, görüntünün coğrafi olarak güçlendirilmiş olmasıdır, bu yüzden onlar şekil olarak dikdörtgen değillerdir (veri alanı hakkında konuşuyorum).

Açıklığa kavuşturmak için, poligonun yalnızca rasterin sıfır olmayan (veya nodata olmayan) piksellerini kaplamasını ve tüm dikdörtgen rasterleri içermesini istemiyorum. Şimdiye kadar verilen cevapların çoğu, veriyi ve veri olmayan pikselleri kapsayan dikdörtgen bir çokgen vermektedir.

Benim görselim Örnek bir Uydu Görüntüsü


İnceledim araçları tarafından verilen sonuç (raster catlog, çeşitli Arcscripts, cevaplardan birinde verilen özel Python betiği gibi): Sonuç


İstediğim sonuç: görüntü tanımını buraya girin


4
Raster katalog oluşturmak gibi gözüküyor, hatta geçici olarak ayak izi oluşturmak için iyi bir çözüm olabilir. Yönetilmeyen, referanslar tablosu oluşturan, ancak görüntüleri sunucudaki konumlarında bırakan bir katalog oluşturabilirsiniz. Bir kataloğa rasterlerin toplu ithalatını yapmak kolaydır ve nispeten hızlıdır. Oluşturulduktan sonra, ayak izlerini yeni bir özellik camına aktarabilir ve tarama kataloğunu silebilirsiniz. Bu, diğer seçenekler kadar hızlı olabilir.
Mekansal

2
Mozaik veri kümesi ayrıca görüntü ayakizini de üretir.
Roy,

mozaik veri seti gitmek için yoludur. Bunu başarmak çok kolay
Brad Nesom

Son görüntüde kırmızı kutu NoData veya 0 dışındaki pikseller mi? 0 ise, istediğiniz alanda 0 değerinde pikseller var mı?
Chad Cooper

1
Kırmızı kenarlığın dışındaki pikseller not içermez; Ancak, çok spektrumlu verilerim, notata alanları için RGB değerleri olarak 0,0,0'a sahiptir. Her iki durumda da, gerekli alanın içinde 0 değeri olan piksel yoktur.
Devdatta Tengshe

Yanıtlar:


15

QGIS'de Image Boundary ( Görüntü Sınırı) adlı bir eklenti var . Bu harika bir araçtır. Bu araç içerisinde, örneğin bir uydu görüntüsünün siyah kenarlarını atlayacak olan "Geçerli Piksel" seçeneği vardır.


Bu eklenti istediğimi yaptığını iddia ediyor, ancak deneyimlediğim bir resim üzerinde başarısız oluyor. Yarın gerçek verilerimle deneyeceğim.
Devdatta Tengshe

Bu eklentinin çok spektrumlu verilerle çok iyi çalıştığını gördüm, ancak bazen tek bantlı pankromatik görüntülerle garip sonuçlar veriyor.
Devdatta Tengshe

2
QGIS Görüntü Sınırının en iyi şekilde çalıştığını kabul ediyorum, ancak "sınırlayıcı kutuya" veya "ayakizine" ihtiyaç duymadığımız ama verilerin bulunduğu bir poligona ihtiyaç duyduğumuz vektör dosyaları için bunu yapmak için bir araç var.
GeorgeC

Görüntü sınır araçları harika, ancak sağladığınız bağlantı 404. Eklenti ayarlarında deneysel eklentilere izin verirseniz araçların hala kullanılabilir olduğuna inanıyorum. Muhtemelen bu linki kullanın ?: github.com/lmotta/imagefootprint_plugin
Aaron

Görüntü Sınırını kullanmak için herhangi bir dokümantasyon var mı?
Loonuh

9

Aşağıdaki kod bir giriş rasterini alır, boyutunu alır ve bu dereceyi çokgen bir özellik sınıfına ekler:

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 penceresinde ayarlayarak in_rasterve fcbenzeri şekilde çalıştırabilirsiniz:

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

nerede r_extentbir varolan poligon featureclass olduğunu. Sonra kodu kopyala ve çalıştır. Bunu anladım:

görüntü tanımını buraya girin


1
Bir klasörü aynı yapmak için yukarıdaki kodu kullandım: gist.github.com/4162013
jeb

7

Bunun için gdaltindex kullanabilirsiniz: http://www.gdal.org/gdaltindex.html

Bununla birlikte, görüntülerle aynı referans sisteminde hala dikdörtgenler (örneğin 4 + 1 puan) yaratacaktır. Ama bunun gerçekten bir sorun olup olmadığını merak ediyorum: resimleriniz ne kadar büyük?


Gdaltindex ile ilgili sorun, her görüntü için dikdörtgen bir çokgen yaratmasıdır. Yalnızca sıfır olmayan değer pikselleriyle ilgileniyorum
Devdatta Tengshe

4

QGIS’de “Image Boundary” aracını denedim, ancak bazı rasterlerle başarısız oluyor.

İşe yarayan bir diğer seçenek ise: - 1. gdal_translate komut satırı yardımcı programını kullanarak giriş rasterini tek bir dijital numaraya dönüştürün.

gdal_translate -co sıkıştır = lzw -b 1 -ot byte -scale 1 1 inp.tif

Bu, inp.tif in sıfır olmayan değerlere sahip her yerde 1 değerine sahip raster yaratacaktır.

  1. Ardından ArcMap'te çokgen elde etmek için "çokgen raster" aracını kullanabilirsiniz (şekildosyası).

Çıktı şekil dosyası, görüntünün gerçek sınırını izleyen çoklu poligon köşeleriyle birlikte dörtgen olmayan sınırlara sahip olacaktır.


3

Komut dosyası ile yazılan bir çözümle ilgileniyorsanız, yakındaki gdal komutunu deneyin . Bayrak -beyazı da beyaz boşlukla sınırlanmış verileri almak için kullanabilirsiniz. Sen edebilirsiniz Çokgenselleştirmek kafes veri dikdörtgen olmayan ayak izi oluşturmak için çıkış.

##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)


0

ArcGIS 3D Analyst'te Raster Domain adı verilen ve raster veri kümesinin veri bölümlerinin çokgen veya çok satırlı bir alan oluşturduğu ve NoData hücrelerini yok sayan bir araç var. Benim için harika çalıştı.


1
Sitemize hoşgeldiniz! Cevabınızın Tomek'inkinden nasıl farklı olduğunu açıklayabilir misiniz?
whuber

Raster domain benim için çalıştı - yardımınız için teşekkürler!
meryloo

0

Uzamsal bir referans atanmış bir tarama kataloğu oluşturabilir, tarama kataloğunu ArcMap'e ekleyebilir ve ardından "Ayakizi Dışa Aktar" komutunu kullanabilirsiniz. Unutmayın "UNMANAGED" raster kataloğu oluşturma seçeneği, böylece her raster veri kümesinin kopyasını oluşturmazsınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.