ArcGIS Desktop’ta çokgen olarak raster görüntünün sınırını mı alıyorsunuz?


28

ArcGIS Desktop'ta dikdörtgen şeklinde bir raster resmim var.

Sadece raster görüntünün ölçüsü olan bir çokgeni nasıl üretebilirim?

Yani, görüntünün kenarı olan tek dörtgenli çokgen bir katmana sahip olmak istiyorum.

Basit bir Raster -> Çokgen dönüşümü yapmaya çalıştım, ancak bu, taslağı oluşturmak için görüntüdeki verileri kullanmaya çalışır - tek istediğim görüntünün kenarının anahattı.

ArcGIS Desktop 10 kullanıyorum.

Yanıtlar:


33

Eğer varsa Spatial Analyst sonra şunları yapabilirsiniz:

  1. Raster Hesaplayıcı'yı kullanarak sabit bir değer raster oluşturmak için raster'i 0 ile çarpın. (tamsayı türüne dönüştürdüğünüzden emin olun, yoksa adım 2 işe yaramaz)
  2. Raster ila Çokgen aracını kullanarak adım 1'in sonucunu çokgene dönüştürün.

Başka bir çözüm:

Senin varsa 3D Analist lisans o zaman kullanabilirsiniz Raster Alan aracı 3D Analyst> Dönüşüm altında> rasterdan (ancak pürüzsüz fonksiyonu yoktur)


12

Raster Domain aracını 3D Analyst'den kullanabilirsiniz, raster verilerinizle aynı ölçüde bir çokgen oluşturmak için


GIS SE'ye Hoşgeldiniz! Lütfen cevabınıza referans ekler misiniz? Bu şekilde daha sağlam olurdu.
RK

Raster Domain aracı işi mükemmel yaptı! Tarama verilerinin bir taslağını veya sınırını oluşturur.

1
Bu araç hakkında bir uyarı kelimesi - yaratılan sınırlayıcı çokgen, raster verilerinizin piksellerin dış kenarı değil, piksel MERKEZİ'nden başlayan ve biten boyutudur. Sadece denedim ve rasterin dış sınırlama kutusunu geri gönderdiğini düşündüm, ancak yakınlaştırdığınızda sınırlama kutusunun piksel merkezinde başladığını göreceksiniz.
fbiles,

Aslında IRasterDomainExtractor.ExtractDomain yöntemi için piksellerin / hücrelerin merkezini mi yoksa dış kenarını mı kullandığını kontrol eden bir parametre vardır.
Preston

Bu harika! Bir araç ve benim rasterimin çokgen bir dış çizgisi var. Teşekkürler!
user3281667

11

Basitçe sayısallaştırmaya ne dersiniz? Tıkla ve tıkla ve tıkla.


8
Bu seçeneğin neden aşağı oy verildiğinden tam olarak emin değil. Genişlik köşelerinin koordinatlarını bulabilir ve bu koordinatlarda köşeler oluşturabilirsiniz. Analiz için bile kullanılabilir. Yalnızca görüntüleme için tıklayın tıklat-tıkla tıklatma harika çalışıyor.
Baltok

3
Raster düzensiz bir şekil olabileceğinden ve karmaşıklığa bağlı olarak oldukça yorucu bir dijitalleştirme işine neden olabileceğinden dolayı söyleyebilirim
Phil Henley

4
Ancak OP bunun dikdörtgen olduğunu söyledi. Bana çok basit bir iş gibi geliyor. Yakınlaştırıp doğru yaparak, gerçek raster anahattı ve sayısallaştırılmış anahat arasındaki fark, herhangi bir gerçek dünya uygulaması için göz ardı edilebilir.
Matt

10

Ayakizi Oluştur aracını Veri yönetimi Araç Kutusunda kullanabilirsiniz. Rasterinizden bir Mozaik Veri Kümesi oluşturmanız gerekir.

Dosya Geodatabase'de yeni bir Mozaik oluşturun, rasterinizi ekleyin.

Mosaic'inizi ArcMap'te açın ve Footprint'i çıkarın.

Ben de öyle yapardım.


8

Bu basit python betiğini kullanıyorum, bir klasörde bulunan tüm rasterlerin derecesine sahip çokgen bir özellik sınıfı oluşturuyor. Kullanmak için, ArcToolbox'ta bir araç oluşturabilir veya InFolder ve Dest (Destination) değişkenlerini değiştirebilirsiniz.

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  

bize bu kodu nasıl kullanacağımızı detaylı olarak anlatabilir. .Asc raster dosyasında kullanmak istiyorum. Resimlerim farklı farklı alt klasörler.
GIS Veri Kasabı

1
Yanıt Jeb kadar oyu ona yeterli temsilcisi yok, benim için çalıştı. @GIS Veri Kasabı Komple kaynağı bir script.py dosyasına kaydedin ve ArcMap içindeki Python Penceresinden yürütün . Dosyadan komut dosyasını çalıştırmak için Python Penceresinde aşağıdaki komutu kullanabilirsiniz. > execfile (r'd: \ temp \ script.py ')
Asad

mükemmel!! merak ediyorum, aracın alt klasörleri de okumasının bir yolu var mı?
raphael

@raphael, elbette, sadece standart python os.listdir veya os.walk komut dosyasını uygulamanız gerekir.
jeb

@jeb evet, konsepti anlıyorum ... bot bu konuda çok yeniyim ve çalışamamıştım ... biraz yardım edebilir misiniz?
raphael

4

Ayrıca, Sınıflandır düğmesini tıklatmanız gereken Sınıflandırma aracını kullanmak ve sınıf sayısını 1 olarak değiştirmek için kolay bir yoldur. Tamam'ı tıklatın. Artık çıktı raster, Raster kullanılarak Çokgen dönüştürme Aracı'na kolayca dönüştürülebilir. ;)


4

Rasterin yeniden sınıflandırılmasının ve çokgene dönüştürülmesinin çok zaman alabileceğini düşünüyorum. Bence, bunu yapmanın en kolay yolu:

  • MaxX, maxY, minX, minY (bu açıklama ile Python'da yapılabilir) alın
  • Create Fishnet'i yukarıdaki gibi ve satır / sütun sayısı 1

Çok fazla rasteriniz varsa, bu Python'da yapılmalı ve birkaç saniye içinde yüzlerce ayak izi oluşturabilir.


0

ArcCatalog'da bir .gdb'de bir raster katalog oluşturabilirsiniz (Veri Yönetimi Araçları-> Raster). Yönetilmeyen iyi. Daha sonra sağ tıklayın ve yükleyin (rasterler sadece bir klasörde oturuyorlarsa, ardından "çalışma alanından yükle". Raster kataloğunu ArcMap'e yüklerseniz, bir şekil dosyası veya özellik sınıfı olarak sağa tıklayıp-> data-> dışa aktarabilirsiniz. Şekil dosyası, rasterin adı ile doldurulmuş bir 'isim' alanına sahip olacaktır.

Raster Kataloğu uzantıları otomatik olarak görüntüler, ancak uzantıları ArcGIS kullanmayan birine göndermem gerekiyordu.


0

Dönüştürme araçları araç kutusundaki "Çokgen Raster" aracını kullanın. Basitleştirilmiş çokgenler kutusunun işaretini kaldırdığınızdan emin olun. Bu tam olarak ne istersen yaratacaktır.


8
Bunun, orijinal görüntüdeki her bitişik eşit değerde piksel kümesi için bir tane olmak üzere çok büyük bir çokgen karışıklığı yaratmadığından emin misiniz?
whuber

Poli derecesini elde etmek için bundan sonra her zaman bir çözünme ekleyebilirsiniz. Ancak, bahse girerim ki jeb tarafından listelenen python çözümü daha hızlıdır.
GeoJohn

0

"Raster Domain" aracı düzensiz şekilli bir raster çevresinde bir çokgen oluşturacaktır. 3d analist eklentisi için lisans gerektirdiğine inanıyorum.


0

ArcCatalog kullanmak en iyi seçenektir. Kullanılabilir rasterlerden bir Mozaik Veri Kümesi oluşturun. Rasterin arka planının çokgene dahil edilmesini önlemek için mozaikte "NO DEĞER" ifadesini tanımlayın. Radyometrik yöntemi kullanarak ayak izleri oluşturun. Mosaic veri kümesini ArcGIS'te açın ve Footprints'i shp dosyasına verin. Mozaik sınırlarını almanın harika yolu ...


0

Bir DEM rasterinin taslağını almaya çalışıyorsanız aşağıdakileri yapmanız gerekir.

Uzamsal Analist ve 3d Analist varsa o zaman şunları yapabilirsiniz:

  1. Raster Hesaplayıcıyı kullanarak sabit bir değer raster oluşturmak için raster'i 0 ile çarpın.
  2. "INT (Tool)" kullanarak 1. adımdaki sonuçları bir raster tamsayıya dönüştürün. Bu bir sonraki adım için gereklidir.
  3. 2. Adımın sonucunu Rasterden Çokgen aracına kullanarak çokgene dönüştürün (yalnızca raster tamsayılarla çalışır).

Merhaba Seamster02, GIS Stack Exchange'e hoşgeldiniz :) Yazıldığı gibi, bu kabul edilen yanıttan önemli ölçüde farklı değildir, gis.stackexchange.com/a/22016/108 .
matt wilkie
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.