รับขอบเขตภาพแรสเตอร์เป็นรูปหลายเหลี่ยมใน ArcGIS Desktop หรือไม่


28

ฉันมีภาพแรสเตอร์สี่เหลี่ยมในเดสก์ท็อป ArcGIS

ฉันจะสร้างรูปหลายเหลี่ยมซึ่งเป็นเพียงขอบเขตของภาพแรสเตอร์ได้อย่างไร

นั่นคือฉันต้องการที่จะมีเลเยอร์หลายเหลี่ยมที่มีรูปสี่เหลี่ยมขนมเปียกปูนเดียวซึ่งเป็นขอบของภาพ

ฉันพยายามเพียงแค่ทำการแปลง Raster-> รูปหลายเหลี่ยม แต่นี่พยายามใช้ข้อมูลในภาพเพื่อสร้างเค้าโครง - ทั้งหมดที่ฉันต้องการคือโครงร่างของขอบของรูปภาพ

ฉันใช้ ArcGIS Desktop 10

คำตอบ:


33

หากคุณมีนักวิเคราะห์เชิงพื้นที่คุณสามารถ:

  1. คูณแรสเตอร์ด้วย 0 เพื่อสร้างแรสเตอร์ค่าคงที่โดยใช้เครื่องคำนวณแรสเตอร์ (อย่าลืมแปลงเป็นประเภทจำนวนเต็มมิฉะนั้นขั้นตอนที่ 2 จะไม่ทำงาน)
  2. แปลงผลลัพธ์ของขั้นตอนที่ 1 เป็นรูปหลายเหลี่ยมโดยใช้เครื่องมือ Raster เป็นรูปหลายเหลี่ยม

ทางออกอื่น:

หากคุณมีใบอนุญาตนักวิเคราะห์ 3 มิติคุณสามารถใช้เครื่องมือโดเมนแรสเตอร์ภายใต้นักวิเคราะห์ 3 มิติ> การแปลง> จากแรสเตอร์ (แต่ไม่มีฟังก์ชั่นที่ราบรื่น)


12

คุณสามารถใช้เครื่องมือโดเมนแรสเตอร์จากนักวิเคราะห์สามมิติเพื่อสร้างรูปหลายเหลี่ยมในระดับเดียวกับข้อมูลแรสเตอร์ของคุณ


ยินดีต้อนรับสู่ GIS SE! คุณช่วยเพิ่มการอ้างอิงไปยังคำตอบของคุณได้ไหม ด้วยวิธีนี้มันจะมั่นคงมากขึ้น
RK

เครื่องมือ Domain Raster ทำงานได้อย่างสมบูรณ์แบบ! สร้างโครงร่างหรือขอบเขตของข้อมูลแรสเตอร์

1
คำเตือนเกี่ยวกับเครื่องมือนี้ - รูปหลายเหลี่ยมที่ถูกสร้างขึ้นคือขอบเขตของข้อมูลแรสเตอร์ของคุณที่เริ่มต้นและสิ้นสุดที่จุดศูนย์กลางพิกเซลไม่ใช่ขอบด้านนอกของพิกเซล ฉันแค่ลองใช้มันและคิดว่ามันจะส่งคืนขอบนอกของแรสเตอร์ แต่เมื่อคุณซูมเข้าคุณจะเห็นว่ากล่องขอบเริ่มต้นที่จุดศูนย์กลางพิกเซล
fbiles

มีพารามิเตอร์สำหรับวิธี IRasterDomainExtractor.ExtractDomain ที่ควบคุมว่าจะใช้จุดกึ่งกลางหรือขอบด้านนอกของพิกเซล / เซลล์
เพรสตัน

มันสมบูรณ์แบบ! เครื่องมือหนึ่งและฉันมีร่างหลายเหลี่ยมของแรสเตอร์ของฉัน ขอบคุณ!
user3281667

11

สิ่งที่เกี่ยวกับการแปลงเป็นดิจิทัล คลิก - คลิก - คลิก - คลิกเสร็จแล้ว


8
ไม่แน่ใจจริงๆว่าทำไมตัวเลือกนี้ถึงลงมติ คุณสามารถค้นหาพิกัดของมุมขอบเขตและสร้างจุดยอดที่พิกัดเหล่านั้น มันยังสามารถใช้สำหรับการวิเคราะห์ หากเป็นเพียงการแสดงผลคลิก - คลิก - คลิก - คลิกที่ใช้งานได้ดี
Baltok

3
ฉันจะบอกว่าเพราะแรสเตอร์อาจมีรูปร่างผิดปกติและขึ้นอยู่กับความซับซ้อนอาจส่งผลให้เป็นงานดิจิทัลที่น่าเบื่อหน่าย
Phil Henley

4
แต่ OP บอกว่ามันเป็นสี่เหลี่ยม ดูเหมือนจะเป็นงานที่ค่อนข้างง่ายสำหรับฉัน โดยการซูมเข้าและความแม่นยำความแตกต่างระหว่างโครงร่างแรสเตอร์จริงและโครงร่างดิจิทัลจะไม่สำคัญสำหรับการใช้งานจริงใด ๆ
Matt

10

คุณสามารถใช้เครื่องมือ Build Footprint ในกล่องเครื่องมือการจัดการข้อมูล คุณต้องสร้างชุดข้อมูล Mosaic จากแรสเตอร์ของคุณ

สร้างโมเสกใหม่ในฐานข้อมูลไฟล์เพิ่มแรสเตอร์ของคุณ

เปิด Mosaic ของคุณใน ArcMap และแตกรอยเท้า

นั่นคือสิ่งที่ฉันจะทำ


8

ฉันใช้สคริปต์ python ง่าย ๆ นี้มันสร้างรูปหลายเหลี่ยมระดับที่มีขอบเขตของแรสเตอร์ทั้งหมดที่มีอยู่ในโฟลเดอร์ หากต้องการใช้งานคุณสามารถสร้างเครื่องมือใน ArcToolbox หรือเพียงแค่เปลี่ยนตัวแปร InFolder และ Dest (ปลายทาง)

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  

สามารถบอกรายละเอียดวิธีใช้รหัสนี้ให้เราได้ ฉันต้องการใช้กับไฟล์. raster ภาพของฉันแตกต่างกันในโฟลเดอร์ย่อยที่แตกต่างกัน
GIS Data Butcher

1
คำตอบจากjebได้ผลสำหรับฉันไม่มีตัวแทนเพียงพอที่จะโหวตให้เขา @GIS Data Butcher บันทึกแหล่งข้อมูลที่สมบูรณ์ลงในไฟล์ script.py และเรียกใช้จากPython Windowภายใน ArcMap คุณสามารถใช้คำสั่งต่อไปนี้บน Python Window เพื่อรันสคริปต์จากไฟล์ > execfile (r'd: \ temp \ script.py ')
Asad

ที่สมบูรณ์แบบ !! ฉันสงสัยว่ามีวิธีใดบ้างที่เครื่องมืออ่านโฟลเดอร์ย่อยด้วยหรือไม่
ฟาเอล

@raphael แน่นอนคุณต้องใช้ python os.listdir หรือ os.walk มาตรฐานในสคริปต์
jeb

@ebeb ใช่ฉันได้รับแนวคิด ... bot ฉันใหม่มากที่นี้และไม่สามารถทำให้มันทำงานได้ ... คุณสามารถให้ความช่วยเหลือได้ไหม?
ฟาเอล

4

วิธีที่ง่ายคือใช้เครื่องมือจัดประเภทใหม่ซึ่งคุณควรคลิกปุ่มจัดประเภทและเปลี่ยนจำนวนคลาสเป็น 1 คลิกตกลง ตอนนี้เอาท์พุทแรสเตอร์สามารถแปลงได้อย่างง่ายดายโดยใช้เครื่องมือแปลงแรสเตอร์เป็นรูปหลายเหลี่ยม ;)


4

ฉันคิดว่าการจัดประเภทและการแปลงแรสเตอร์เป็นรูปหลายเหลี่ยมอาจใช้เวลานานเกินไป ในความคิดของฉันวิธีที่ง่ายที่สุดที่จะทำคือ:

  • รับ maxX, maxY, minX, minY (สามารถทำได้ใน Python ด้วยคำสั่งอธิบาย)
  • เรียกใช้สร้าง Fishnet โดยมีขอบเขตตามด้านบนและจำนวนแถว / คอลัมน์เป็น 1

หากคุณมีแรสเตอร์จำนวนมากควรทำใน Python และสามารถสร้างรอยเท้านับร้อยในเวลาไม่กี่วินาที


0

ใน ArcCatalog คุณสามารถสร้างแคตตาล็อกแรสเตอร์ใน. gdb (Data Management Tools-> Raster) ไม่มีการจัดการเป็นเรื่องปกติ จากนั้นคลิกขวาและโหลด (หาก rasters กำลังนั่งอยู่ในโฟลเดอร์จากนั้น "load from workspace" หากคุณโหลดแคตตาล็อก raster ลงใน ArcMap คุณสามารถคลิกขวา -> data-> footprint การส่งออกเป็นไฟล์รูปร่างหรือคุณสมบัติคลาส ไฟล์รูปร่างจะมีฟิลด์ 'ชื่อ' ที่เติมด้วยชื่อของแรสเตอร์

แคตตาล็อก Raster จะแสดงส่วนขยายโดยอัตโนมัติ แต่ฉันต้องการส่งส่วนขยายไปยังผู้ที่ไม่ได้ใช้ ArcGIS


0

ใช้เครื่องมือ "Raster to Polygon" ในกล่องเครื่องมือเครื่องมือแปลง ตรวจสอบให้แน่ใจว่าได้ยกเลิกการเลือกกล่องรูปหลายเหลี่ยมที่ทำให้ง่ายขึ้น สิ่งนี้จะสร้างสิ่งที่คุณต้องการ


8
คุณแน่ใจหรือไม่ว่านี่ไม่เพียง แต่สร้างรูปหลายเหลี่ยมที่ยุ่งเหยิงขนาดใหญ่หนึ่งชุดสำหรับแต่ละพิกเซลต่อเนื่องที่มีค่าเท่ากันในภาพต้นฉบับ
whuber

คุณสามารถเพิ่มการละลายหลังจากนี้เพื่อให้ได้ขนาดโพลี อย่างไรก็ตามฉันเดิมพันทางออกของ python ที่ระบุโดย @jeb เร็วขึ้น
GeoJohn

0

เครื่องมือ "โดเมนแรสเตอร์" จะสร้างรูปหลายเหลี่ยมรอบแรสเตอร์ที่มีรูปร่างไม่สม่ำเสมอ ฉันเชื่อว่าต้องมีใบอนุญาตสำหรับส่วนขยายนักวิเคราะห์ 3 มิติ


0

การใช้ ArcCatalog เป็นตัวเลือกที่ดีที่สุด สร้างชุดข้อมูล Mosaic จาก rasters ที่มีอยู่ กำหนด "NO VALUE" ใน mosaic เพื่อหลีกเลี่ยงพื้นหลังของแรสเตอร์ไม่ให้รวมอยู่ในรูปหลายเหลี่ยม สร้างรอยเท้าโดยใช้วิธี Radiometric เปิดชุดข้อมูล Mosaic ใน ArcGIS และส่งออก Footprints ไปยังไฟล์ shp วิธีที่ยอดเยี่ยมในการรับรอยต่อของโมเสก ...


0

หากคุณพยายามรับเค้าโครงของ DEM แรสเตอร์คุณจะต้องทำสิ่งต่อไปนี้

หากคุณมีนักวิเคราะห์เชิงพื้นที่และนักวิเคราะห์ 3 มิติคุณสามารถ:

  1. คูณแรสเตอร์ด้วย 0 เพื่อสร้างแรสเตอร์ค่าคงที่โดยใช้เครื่องคำนวณแรสเตอร์
  2. แปลงผลลัพธ์ของขั้นตอนที่ 1 เป็นจำนวนเต็มแบบแรสเตอร์โดยใช้ "INT (เครื่องมือ)" นี่เป็นสิ่งจำเป็นสำหรับขั้นตอนต่อไป
  3. แปลงผลลัพธ์ของขั้นตอนที่ 2 เป็นรูปหลายเหลี่ยมโดยใช้เครื่องมือ Raster เป็นรูปหลายเหลี่ยม (ใช้ได้กับจำนวนเต็มแบบแรสเตอร์เท่านั้น)

สวัสดี Seamster02 ยินดีต้อนรับสู่ GIS Stack แลกเปลี่ยน :) ขณะที่เขียนนี้ไม่ได้แตกต่างจากการประเมินคำตอบที่ได้รับการยอมรับ, gis.stackexchange.com/a/22016/108
matt wilkie
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.