Xác định các shapefiles hoặc raster bị hỏng thông qua Python hoặc ArcObjects


9

Tôi quan tâm đến một cách để xác định các trình quét (ví dụ: định dạng ESRI GRID) hoặc các shapefile bị hỏng sẽ khiến chúng không được sử dụng trong một công cụ phân tích. Tôi có một số lượng lớn trong cây thư mục có cấu trúc và muốn có thể tạo kịch bản một cái gì đó sẽ đi trên cây tệp và có thể ID các trình quét, ví dụ như nếu bạn cố xem nó trong ArcCatalog thì nó sẽ không cho phép nó được hiển thị và theo đó sẽ làm cho bất kỳ công cụ xử lý địa lý nào đều thất bại. Thỏa thuận tương tự cho shapefiles hoặc các lớp tính năng.

Sở thích của tôi là bằng cách nào đó để làm điều này trong Python (và tôi sẽ không phản đối mô-đun python không phải ESRI hay khác) nhưng tôi sẵn sàng cho mọi thứ. Tôi đoán bạn có thể hack một cái gì đó cùng nhau bằng cách cố gắng xác nhận hình học hoặc viết hoa trên một số khía cạnh của thiết kế tệp, nhưng điều gì sẽ có ý nghĩa nhất? Hoặc có một cách khác để làm điều đó được thiết kế đặc biệt cho mục đích như vậy?

Mục tiêu của tôi là chỉ có thể chạy một cơ chế Kiểm soát chất lượng đơn giản trên một số tệp tiền xử lý lớn kéo dài một tuần để đảm bảo tất cả chúng đều có âm thanh trước khi tôi bắt đầu xử lý hàng loạt thực tế.

cảm ơn, Tom

Câu trả lời:


1

Đối với các trình quét, tại sao không chỉ sử dụng một tập lệnh đơn giản để xuất các thuộc tính (kích thước ô, phạm vi, v.v.) của tất cả các trình quét mà bạn sẽ sử dụng. Nếu nhận được các thuộc tính thất bại thì bất cứ điều gì cao cấp hơn cũng sẽ thất bại.

Ngoài ra, bạn có thể viết các thuộc tính raster vào tệp nhật ký và kiểm tra xem phạm vi, kích thước ô, loại giá trị, v.v ... có phải là tất cả những gì bạn mong đợi không.

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()

Ngoài ra việc bạn đề cập đến việc xử lý lâu trong tuần là hơi đáng lo ngại. Rất có khả năng bạn sẽ phải chạy lại các quy trình, vì vậy có cách nào bạn có thể chia nó thành nhiều bước trung gian nhỏ hơn. Bằng cách này, bạn có thể kiểm tra kết quả ở từng giai đoạn và nếu có gì đó không chính xác, bạn chỉ cần tiếp tục từ bước trước chứ không phải bắt đầu.


cảm ơn về gợi ý về việc nhận các thuộc tính raster, tôi đã hình dung việc sử dụng một số đặc điểm của kiểu dữ liệu có thể là lựa chọn tốt nhất của tôi khi không có công cụ xác nhận nào mà tôi biết. Về xử lý kéo dài một tuần, không có vấn đề gì về thời gian chỉ là do số lượng người quét và kích thước của chúng. Tôi có một chương trình python mạnh mẽ xử lý nó, nhưng một phần của vấn đề là dữ liệu trên mạng của chúng tôi vì vậy tôi đang mất một số tốc độ vì chúng không phải là cục bộ. Tôi thực sự được tích hợp chức năng để xóa khỏi danh sách xử lý đã bị xóa được chạy tự động
Thổ Nhĩ Kỳ

Hơn nữa - có lẽ tôi sẽ làm một cái gì đó tương tự cho các shapefile về mặt chỉ kiểm tra hình học (@Craig Williams). Mục đích của bài viết của tôi là khám phá nếu có một cái gì đó ngoài kia như mô-đun python không ESRI hoặc khác ... nhưng triển vọng không tốt lắm dựa trên những phản hồi này.
thổ nhĩ kỳ

@turkishgold - Bạn có thể sử dụng cùng một kỹ thuật đọc shapefiles và raster bằng cách sử dụng GDAL và các ràng buộc Python gdal.org/gdal_tutorial.html
geographika

2

Đối với các nguồn dữ liệu vectơ, sử dụng Kiểm tra hình học / Sửa chữa hình học song song.


1

Theo như các tập tin vector shp, tôi sẽ sử dụng một cái gì đó như trình kiểm tra tập tin hình dạng trên arcscripts.
kiểm tra tập tin hình dạng

Đối với Raster Lỗi phổ biến nhất trong quá trình xử lý địa lý là loại trường không hợp lệ.
Bạn có thể xem xét việc khám phá các loại trường trong các mô đun xử lý địa lý của mình và sau đó chạy kiểm tra các loại trường trong trình quét của bạn.
Tôi đoán các loại erros khác hoặc một số thứ khác cần xem xét có thể là palet được lập chỉ mục hoặc độ sâu màu không được hỗ trợ cho xử lý cụ thể.

Trên thực tế bị ăn mòn có vẻ hiếm hơn một chút. Nhưng chắc chắn nó có thể xảy ra. Đây có thể là một số điều để tìm kiếm.
Diễn đàn esri
bị hỏng
Tôi nghĩ rằng hầu hết các trường hợp này có thể là do sử dụng một phần mềm khác để mở tệp và lưu lại để sửa định dạng / thông số sửa chữa rất nhiều vấn đề này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.