การนับและการซ้อนซ้ำของสี่เหลี่ยมหลายเหลี่ยมใน ArcGIS Desktop หรือไม่


17

คุณจะนำเวกเตอร์เลเยอร์ที่มีรูปหลายเหลี่ยมซ้อนทับกันและเปลี่ยนเป็นแรสเตอร์ที่แต่ละเซลล์นับจำนวนรูปหลายเหลี่ยมที่มีเซลล์นั้นได้อย่างไร

เรากำลังดูพื้นที่รูปหลายเหลี่ยมที่มีการเผาไฟระหว่างปี 1976 ถึง 2000 และต้องการดูว่ามีไฟจำนวนเท่าใดที่จะถูกบรรจุในแต่ละเซลล์แรสเตอร์

คำตอบ:


22

ทำสิ่งนี้ในสามขั้นตอน:แบ่งรูปหลายเหลี่ยมออกเป็นส่วนต่าง ๆ ของพวกเขานับการทับซ้อนและแปลงเป็นแรสเตอร์ วิธีนี้จะช่วยหลีกเลี่ยงค่าใช้จ่ายในการคำนวณขนาดใหญ่ที่อาจแยกการแปลงรูปหลายเหลี่ยมทุกรูปให้เป็นแบบแรสเตอร์และรวมแรสเตอร์เหล่านั้น

  1. Union(ในGeoprocessingเมนู) แบ่งรูปหลายเหลี่ยมเป็นส่วน ๆ

    น่าเสียดายที่การทับซ้อนแต่ละครั้งซ้ำกันในผลลัพธ์: มันมีหนึ่งสำเนาที่เหมือนกันสำหรับแต่ละรูปหลายเหลี่ยมต้นฉบับที่ครอบคลุม ดังนั้น

  2. Dissolve(อีกครั้งในGeoprocessingเมนู) จะผสานทับซ้อนกันส่วนให้คุณสามารถหาวิธีที่จะระบุตัวตนของพวกเขา อ่านผ่านช่องโต้ตอบ: ในตอนท้ายคุณจะมีตัวเลือกในการคำนวณ "สถิติ" เลือกเขตข้อมูลใด ๆ ที่อาจระบุรูปหลายเหลี่ยมดั้งเดิมและขอนับ

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

    เลเยอร์ที่เกิดขึ้นมีหนึ่งคุณลักษณะสำหรับการซ้อนทับหลายเหลี่ยมแต่ละรูปแบบและเขตข้อมูล "การนับ" บางประเภทจะนับจำนวนการทับซ้อน

  3. แปลงเป็น raster โดยใช้ฟิลด์ "count" สำหรับแอตทริบิวต์


ตัวอย่างเช่นต่อไปนี้เป็นรูปหลายเหลี่ยมที่ซ้อนทับกันและตัวระบุของตารางที่แสดงแอตทริบิวต์:

ป้อนคำอธิบายรูปภาพที่นี่

หลังจากขั้นตอนที่สองเรามีหนึ่งระเบียนสำหรับแต่ละพื้นที่ทับซ้อนพร้อมกับการนับซึ่งสามารถใช้เพื่อเป็นสัญลักษณ์ของจำนวนการทับซ้อน:

ป้อนคำอธิบายรูปภาพที่นี่

ส่วนที่เหลือนั้นง่าย - และเป็นเพียงการดำเนินการแรสเตอร์เดียว


วิธีการแบบเวกเตอร์นี้ใช้งานได้ดีเช่นกันยกเว้นเมื่อใช้กับรูปหลายเหลี่ยมหลายพันหลายพันที่มีการทับซ้อนกันจำนวนมากบนคอมพิวเตอร์ที่มีหน่วยความจำที่ จำกัด ...
ccn

@ccn เมื่อมีรูปหลายเหลี่ยมมากกว่า ArcGIS ที่สามารถจัดการได้ให้แบ่งชุดข้อมูลเป็นส่วนที่สามารถประมวลผลได้ ผลผลิตจะเป็น rasters หลาย - แต่ไม่นับพันหรือล้านของพวกเขา - ซึ่งจะตรงไปตรงมาเพื่อรวม ข้อดีอีกอย่างของการใช้Unionคือเกือบจะมีเวิร์กโฟลว์เดียวกันซึ่งสามารถจัดการกับสถานการณ์ที่รูปหลายเหลี่ยมอยู่ในชุดข้อมูลหลายชุด (ซึ่งโดยปกติแล้วจะเป็นการออกแบบฐานข้อมูลที่ไม่ดี แต่น่าเสียดายทั่วไป): หนึ่งชุดข้อมูลอินพุตทั้งหมด
whuber

@ccn (ต่อ) จุดที่คุณนำมาลงนี้: เมื่อมันจะดีกว่าที่จะ rasterize รูปหลายเหลี่ยมและใช้การดำเนินการแรสเตอร์เพื่อรวมพวกเขาเมื่อเทียบกับการใช้การดำเนินการเวกเตอร์ ( union) ตามด้วย rasterization? การดำเนินการของ Vector จะชะงักงันเมื่อคุณสมบัติถูกแปลงเป็นดิจิทัลด้วยรายละเอียดมากกว่าที่ต้องการทำให้พวกมันมีจุดยอดมากเกินไป ในสถานการณ์ที่รุนแรงเหล่านี้วิธีการแรสเตอร์อาจดีกว่า (แม้ว่าการลดความซับซ้อนของรูปหลายเหลี่ยมก่อนอาจเป็นตัวเลือกที่ดีกว่า) ในสถานการณ์อื่น ๆ ทั้งหมดการแยก rastizing แต่ละรูปหลายเหลี่ยมนั้นเป็นการเสียคอมพิวเตอร์และเวลาของมนุษย์
whuber

1
+1 สำหรับโซลูชันที่ใช้เวกเตอร์ ในการทำให้สิ่งต่าง ๆ เข้าสู่มุมมองที่นี่การเขียนข้อมูลขอบเขตไม่ได้ใหญ่มากนัก ตัวอย่างเช่นชุดข้อมูลขอบเขตการเบิร์นของ MTBS ทั้งหมด (สหรัฐอเมริการวมถึงอลาสก้า) ในปี 1984 - 2010 มี ~ 19,000 รูปหลายเหลี่ยม การใช้เวกเตอร์หรือแรสเตอร์จะใช้ได้ดี
แอรอน

@Aaron ขอบคุณสำหรับมุมมอง ในการทำสหรัฐอเมริกาที่เกิดขึ้นพร้อมกันในการแก้ปัญหาที่สมเหตุสมผล (เช่น 100m) คุณจะต้องใช้แรสเตอร์ขนาด 50,000 คอลัมน์และ 30,000 แถวที่มีเซลล์ 1,500,000,000 เซลล์ การสร้างแรสเตอร์จำนวน 19,000 ตัว - แม้แต่การบัญชีสำหรับการบีบอัด - จากนั้นทำการแสดง 19,000 * 1500000000 = การเพิ่มอีกประมาณ 30,000 ล้านครั้ง - ต้องใช้เวลาพอสมควร! ถ้าแต่ละโพลีกอนใช้แทน 100 vertices (ซึ่งมีรายละเอียดมาก) การรวมจะเกี่ยวข้องกับ 1,900,000 vertices และเป็นการดำเนินการ O (n log (n)); โดยทั่วไป (แต่ไม่ใช่ใน ArcGIS :-) ที่ใช้เวลาน้อยกว่า 1 วินาที
whuber

1

โพสต์ต่อไปนี้มีคำถามที่ค่อนข้างคล้ายกันซึ่งคุณสามารถค้นหาวิธีแก้ปัญหาที่เกี่ยวข้อง: การสร้างพื้นผิวแรสเตอร์ของการทับซ้อนจากรูปร่างหลายเหลี่ยมเวกเตอร์? .

สำหรับวิธีการแรสเตอร์ที่คำนวณได้ง่ายและรวดเร็วคุณจะต้อง (1) แยกรูปหลายเหลี่ยมที่ทับซ้อนกันออกเป็นเลเยอร์แยก (สันนิษฐานว่าเป็นรูปหลายเหลี่ยมจากปีสำหรับการใช้รูปหลายเหลี่ยม) เลือกตามคุณสมบัติใน ModelBuilder ด้วยเครื่องมือ iterator (2) รูปหลายเหลี่ยมเพื่อ rasterมีการกำหนดเซลล์ MAXIMUM_COMBINED_AREA (การสร้างความมั่นใจเดียวกันขนาดของเซลล์ , สแน็ปราสเตอร์และที่มีขอบเขตยังคงเหมือนกับการตั้งค่าทั้งหมดของรูปหลายเหลี่ยม) - ใช้ค่าข้อมูลคงที่ (เช่นใช้ข้อมูลปีหรือแถวที่มี 1s ทั้งหมด) เพื่อแปลง (ใช้ ModelBuilder อีกครั้งพร้อมกับตัววนซ้ำหรือสคริปต์ Python เพื่อช่วยให้ทำงานโดยอัตโนมัติ) จากนั้น (3) ใช้เครื่องมือ Spatial Analyst ต่อไปนี้: สถิติเซลล์ - ใช้ stats_type VARIETY ถ้า raster แต่ละรายการมีค่าที่ไม่ซ้ำกันเช่นปีหรือ SUM ถ้าค่าของเซลล์ rasters ทั้งหมดเป็น 1s - อย่าลืมตรวจสอบ NoData

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


(โปรดอ่านความคิดเห็นของฉันต่อคำตอบของแอรอน )
whuber
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.