ระบุ shapefiles หรือ rasters ที่เสียหายผ่าน Python หรือ ArcObjects


9

ฉันสนใจวิธีระบุ rasters (เช่นรูปแบบ ESRI GRID) หรือรูปร่างที่เสียหายที่จะป้องกันไม่ให้ใช้ในเครื่องมือวิเคราะห์ ฉันมีจำนวนมากในโครงสร้างโฟลเดอร์ทรีและต้องการให้สามารถเขียนสคริปต์บางสิ่งที่จะนำทรีไฟล์และสามารถใช้ ID rasters ได้ตัวอย่างเช่นหากคุณพยายามดูใน ArcCatalog จะไม่อนุญาตให้แสดง และตามด้วยจะทำให้เครื่องมือการประมวลผลทางภูมิศาสตร์ล้มเหลว ข้อตกลงเดียวกันสำหรับ shapefiles หรือคลาสคุณลักษณะ

ฉันชอบที่จะทำสิ่งนี้ใน Python (และฉันจะไม่ต่อต้านโมดูล Python ที่ไม่ใช่ ESRI หรืออื่น ๆ ) แต่ฉันเปิดรับทุกสิ่ง ฉันเดาว่าคุณสามารถแฮกบางอย่างด้วยกันโดยพยายามตรวจสอบความถูกต้องของรูปทรงเรขาคณิตหรือใช้ประโยชน์จากด้านการออกแบบไฟล์ แต่สิ่งใดที่เหมาะสมที่สุด? หรือมีวิธีอื่นที่จะออกแบบมาเพื่อวัตถุประสงค์ดังกล่าวโดยเฉพาะหรือไม่?

เป้าหมายของฉันคือสามารถเรียกใช้กลไกการควบคุมคุณภาพอย่างง่าย ๆ ในไฟล์ประมวลผลล่วงหน้าขนาดใหญ่บางสัปดาห์เพื่อให้แน่ใจว่าพวกเขาจะได้รับเสียงทั้งหมดก่อนที่จะเริ่มทำการประมวลผลแบทช์จริง

ขอบคุณทอม

คำตอบ:


1

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

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

import arcgisscripting, sys, string, os
gp = arcgisscripting.create()

try:
    # Set local variables
    InRaster = "D:/Data/elevation"
    InPropertyType = "MAXIMUM"

    # Process: GetRasterProperties
    zmax = gp.GetRasterProperties (InRaster, InPropertyType)
    # log these to a file or apply logic here to 
    # make sure values are in the expected ranges


except:
    # Print error message if an error occurs
    # likely to be an invalid raster
    print gp.GetMessages()

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


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

นอกจากนี้ - ฉันอาจทำสิ่งที่คล้ายกันกับ shapefiles ในแง่ของการตรวจสอบเรขาคณิต (@Craig Williams) จุดประสงค์ของโพสต์ของฉันคือการสำรวจว่ามีอะไรบางอย่างที่นั่นเช่นโมดูลหลามที่ไม่ใช่ ESRI หรืออื่น ๆ ... แต่แนวโน้มไม่ดีนักตามคำตอบเหล่านี้
turkishgold

@turkishgold - คุณสามารถใช้เทคนิคเดียวกันกับการอ่านรูปร่างและ rasters โดยใช้ GDAL และ Python bindings gdal.org/gdal_tutorial.html
geographika

2

สำหรับแหล่งข้อมูลเวกเตอร์ให้ใช้ตรวจสอบเรขาคณิต / เรขาคณิตซ่อมแซมควบคู่


1

เท่าที่ไฟล์เวกเตอร์ shp ฉันจะใช้บางอย่างเช่นตัวตรวจสอบไฟล์รูปร่างบน arcscripts
ตัวตรวจสอบไฟล์รูปร่าง

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

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

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