Resample ไบนารีแรสเตอร์เพื่อให้ * สัดส่วน * ภายในหน้าต่างเซลล์ใหม่


9

ฉันอยากจะไปจากแรสเตอร์ไบนารีของป่า / ไม่ใช่ป่าไม้ที่ความละเอียด 30 ม. เป็นแรสเตอร์ที่ความละเอียด 240 ม. โดยค่าของแต่ละเซลล์เป็นสัดส่วนของเซลล์ป่านั้น - เช่นค่าข้อมูลสำหรับเซลล์ 240m จะเป็น 0 (ที่เซลล์ทั้งหมดในแรสเตอร์ 30m เป็นศูนย์ / ไม่ใช่ป่า) ถึง 0.5 (ซึ่งครึ่งเซลล์ 30m เป็นป่านั้นครึ่งหนึ่งไม่ใช่ป่า) ถึง 1 (ซึ่งเซลล์ทั้งหมดในแรสเตอร์ 30m นั้นเป็นป่า)

แม้ว่าจะได้รับการแนะนำว่าไม่ควรใช้การประมาณค่าแบบบิลิแนร์กับข้อมูลที่ไม่ต่อเนื่องเท่าที่ฉันสามารถบอกผลได้ด้วยข้อมูลไบนารี 0/1 จะให้ค่าเฉลี่ย (เช่นสัดส่วนระหว่าง 1 และ 0) นี่เป็นวิธีที่สมเหตุสมผลที่จะทำหรือมีวิธีที่ดีกว่า

ฉันสามารถใช้ Arc, QGIS และ Idrisi

คำตอบ:


13

ใช้สถิติบล็อก

สิ่งนี้ทำงานเหมือนสถิติโฟกัสโดยคำนวณสรุปสถิติ (เช่นค่าเฉลี่ยที่คุณต้องการ) ภายในพื้นที่ใกล้เคียงที่ระบุของเซลล์ (เช่น 8 คูณ 8 ตารางเมตรโดยที่ 8 = 240 ม. / 30 ม.) ยกเว้นว่าจะใช้สำหรับ การแบ่งปกติของตารางแทนที่จะเป็นชุดของย่านที่ทับซ้อนกันหนึ่งแห่งในแต่ละเซลล์

นอกจากนี้คุณยังสามารถใช้สถิติโฟกัสได้หากคุณต้องการ: หลังจากคำนวณค่าโฟกัสที่มีขนาดมากกว่า 8 คูณ 8 กำลังสองให้ลองส่งตาราง 240 เมตรอีกครั้งโดยใช้การทดสอบซ้ำเพื่อนบ้านที่ใกล้ที่สุด เมื่อกริดถูกลงทะเบียนให้กัน ( เช่นพวกมันมีต้นกำเนิดเดียวกัน) สิ่งนี้ควรให้ผลลัพธ์เหมือนblock statisticsกัน (ฉันจะไม่รับประกันว่า: ตัวเลือกโดยพลการบางอย่างจะต้องทำเมื่อศูนย์เซลล์ใหม่ตรงกับมุมของเซลล์เก่า - อย่างที่พวกเขาจะมาที่นี่ - และหากคณะกรรมการที่แตกต่างกันเขียนรหัสสองขั้นตอน ใน ArcGIS มีความสอดคล้องกันอย่างแท้จริงฉันกลัว)

อีกวิธีหนึ่งคือการสร้างกริดของโซนหนึ่งโซนต่อสแควร์ที่ต้องการค่าเฉลี่ยและดำเนินการสรุปโซนเป็นกริด โซนสามารถคำนวณทางคณิตศาสตร์ได้จากกริดของพิกัดแถวและคอลัมน์ (โดยวิธีการfloorหรือintฟังก์ชันโดยการจัดประเภทใหม่หรือโดยการเข้าร่วมตารางที่เหมาะสมกับตารางแอตทริบิวต์)

ฉันจะปิดโดยการตั้งข้อสังเกตว่าการแก้ไข bilinear แม้ว่ามันจะให้ค่าในช่วง 0..1 ไม่ใช่สิ่งที่คุณต้องการ: มันทำงานได้โดยการหาเซลล์กริดดั้งเดิม (30 ม.) สี่ตัวที่อยู่รอบจุดศูนย์กลางของใหม่ ( 240 เมตร) เซลล์และการประมาณค่าของพวกมันเท่านั้น ดังนั้นมันจะมองข้ามอีก 8 * 8 - 4 = 60 เซลล์ดั้งเดิมที่อยู่ในแต่ละบล็อคใหม่ ฉันแสดงให้เห็นถึงการแก้ไข bilinear ที่http://www.quantdec.com/SYSEN597/GTKAV/section9/map_algebra.htm : การสนทนาเริ่มต้นใกล้กลางหน้า


ขอบคุณ whuber นี่คือสิ่งที่ฉันทำ - ใช้สถิติบล็อกในอาร์คเพื่อสร้างผลรวมของกลุ่ม 8x8 จากนั้นใช้เครื่องคำนวณแรสเตอร์ใน QGIS เพื่อหารด้วย 64 และจัดตำแหน่งต้นกำเนิดขอบเขตและขนาดเซลล์กับส่วนที่เหลือของข้อมูลของฉัน
stickGIS

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

4

ใน ArcGIS เมื่อคุณส่งข้อมูลอีกครั้งโดยใช้การสุ่มใหม่แบบ bilinear จะดูเฉพาะค่าของเซลล์สี่จุดกึ่งกลาง ( เอกสารตัวอย่างการทดสอบซ้ำ) เช่นการใช้วิธีนี้คุณจะยังคงสูญเสียข้อมูลหากคุณไม่ได้ชดเชยการสูญเสียข้อมูล

เนื่องจากเรารู้ว่าสำหรับเซลล์ที่สุ่มใหม่แล้วคุณได้สัดส่วนของเซลล์ที่มีการป่าเราสามารถคิดได้ว่ามันเป็นผลรวมของเซลล์ 30m หารด้วย 64 (มี 64 เซลล์ 30 เมตรในบล็อก 240 ม.)

ซึ่งหมายความว่าหากเราสามารถสร้างแรสเตอร์ใหม่ที่มีค่าศูนย์เป็นผลรวมของค่าโดยรอบที่ความละเอียด 30m การลดความละเอียดโดยใช้ตัวอย่างใหม่กับเพื่อนบ้านที่ใกล้ที่สุดหรือการประมาณค่า bilinear จะให้ 240m เซลล์ซึ่งเป็นผลรวมของเซลล์ 30m ปก เราสามารถทำได้ด้วยเครื่องมือผลรวมโฟกัสบนแรสเตอร์ 30 ม.

สุดท้ายเมื่อเรามีแรสเตอร์รวมโฟกัส 240 ม. หารด้วย 64 เพื่อหาคำตอบสัดส่วนของคุณ

ใน Idrisi ฉันไม่แน่ใจเกี่ยวกับอัลกอริธึมการสุ่มตัวอย่างภาพเช่นเดียวกันใน QGIS แต่ฉันคิดว่ามีบางอย่างที่คล้ายกัน แน่นอนใน QGIS คุณสามารถประมวลผลแรสเตอร์ใน Python โดยใช้ scipy ndimageหรือคล้ายกัน

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