ดูลิงค์นี้สำหรับรายละเอียดเพิ่มเติม
ปัญหา:
ฉันต้องการวนรอบraster อย่างต่อเนื่อง (ที่ไม่มีตารางคุณลักษณะ), เซลล์โดยเซลล์และรับค่าของเซลล์ ฉันต้องการใช้ค่าเหล่านั้นและเรียกใช้ conditionals กับพวกเขาเลียนแบบขั้นตอนพีชคณิตแผนที่รายละเอียดด้านล่างโดยไม่ต้องใช้เครื่องคิดเลขแรสเตอร์
ตามคำขอของความคิดเห็นด้านล่างฉันได้เพิ่มรายละเอียดที่ให้ข้อมูลพื้นฐานเกี่ยวกับปัญหาและให้เหตุผลถึงความจำเป็นในการใช้วิธีการดังกล่าวในส่วนด้านล่างที่เรียกว่า "การวิเคราะห์ที่จำเป็น:"
การวิเคราะห์ที่เสนอด้านล่างในขณะที่เกี่ยวข้องกับปัญหาของฉันโดยการให้ข้อมูลพื้นฐานไม่จำเป็นต้องมีคำตอบ ขอบเขตของคำถามเกี่ยวข้องกับการวนซ้ำผ่านแรสเตอร์อย่างต่อเนื่องเพื่อรับ / ตั้งค่าของเซลล์
การวิเคราะห์ที่จำเป็น:
หากเงื่อนไขใด ๆ ต่อไปนี้เป็นจริงให้กำหนดค่าเซลล์เอาต์พุตเป็น 1 ให้ค่าเซลล์เอาต์พุตเป็น 0 เท่านั้นหากไม่มีเงื่อนไขใดที่จะสำเร็จ
เงื่อนไข 1:หากค่าของเซลล์มากกว่าเซลล์บนและล่างให้ค่าเป็น 1:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
ไฟล์เคอร์เนลมีลักษณะดังนี้:
3 3
0 1 0
0 0 0
0 1 0
เงื่อนไข 2:หากค่าของเซลล์มากกว่าเซลล์ซ้ายและขวาให้ค่าเป็น 1:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
ไฟล์เคอร์เนลมีลักษณะดังนี้:
3 3
0 0 0
1 0 1
0 0 0
เงื่อนไขที่ 3:หากค่าของเซลล์มากกว่าเซลล์ topleft และ bottomright ให้ค่าเป็น 1:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
ไฟล์เคอร์เนลมีลักษณะดังนี้:
3 3
1 0 0
0 0 0
0 0 1
เงื่อนไข 4:หากค่าของเซลล์มากกว่าด้านล่างและเซลล์ topright ให้ค่า 1:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
ไฟล์เคอร์เนลมีลักษณะดังนี้:
3 3
0 0 1
0 0 0
1 0 0
สภาพที่ 5:ถ้าใด ๆหนึ่งในเซลล์ที่อยู่ติดกันมีค่าเท่ากับศูนย์มือถือที่ให้ผลผลิตแรสเตอร์มูลค่า 1 ( ใช้ความหลากหลายโฟกัสกับสองคำนวณเขตที่ใกล้ที่สุด )
ทำไมไม่ใช้พีชคณิตแผนที่?
มันได้รับการบันทึกไว้ด้านล่างว่าปัญหาของฉันสามารถแก้ไขได้โดยใช้พีชคณิตแผนที่ แต่เท่าที่เห็นด้านบนนี้เป็นการคำนวณแรสเตอร์ทั้งหมดหกครั้งรวมกับการรวมแรสเตอร์ทั้งหมดที่สร้างขึ้นด้วยกัน มันดูเหมือนว่าฉันว่ามันมากมีประสิทธิภาพมากขึ้นไปเซลล์จากเซลล์และทำทุกการเปรียบเทียบในครั้งเดียวในเซลล์แทนการวนลูปผ่านแต่ละเจ็ดครั้งและใช้ประโยชน์ไม่น้อยของหน่วยความจำในการสร้างเจ็ดเชิงภาพแต่ละ
ปัญหานี้จะถูกโจมตีได้อย่างไร?
ลิงค์ด้านบนแนะนำให้ใช้อินเทอร์เฟซ IPixelBlock แต่ไม่ชัดเจนจากเอกสารของ ESRI ไม่ว่าคุณจะเข้าถึงค่าเซลล์เดียวผ่าน IPixelBlock หรือหากคุณเข้าถึงหลายค่าเซลล์จากขนาดของ IPixelBlock ที่คุณตั้งค่า คำตอบที่ดีควรแนะนำวิธีการในการเข้าถึงค่าเซลล์ของแรสเตอร์อย่างต่อเนื่องและให้คำอธิบายเกี่ยวกับวิธีการที่อยู่เบื้องหลังรหัสถ้าไม่ชัดเจน
สรุป:
เป็นวิธีที่ดีที่สุดในการวนซ้ำทุกเซลล์ในแรสเตอร์อย่างต่อเนื่อง (ซึ่งไม่มีตารางคุณลักษณะ ) เพื่อเข้าถึงค่าเซลล์ของมันคืออะไร?
คำตอบที่ดีไม่จำเป็นต้องใช้ขั้นตอนการวิเคราะห์ที่อธิบายไว้ข้างต้น แต่ต้องการเพียงวิธีการในการเข้าถึงค่าเซลล์ของแรสเตอร์