Có cách nào nhanh chóng để sao chép bộ dữ liệu raster lớn giữa Cơ sở dữ liệu tệp địa lý không?


8

Tại sao phải mất quá nhiều thời gian để sao chép một tập dữ liệu raster lớn từ một tệp cơ sở dữ liệu địa lý sang tệp khác? Tôi có thể sao chép toàn bộ cơ sở dữ liệu trong windows explorer trong vài phút nhưng sao chép một raster duy nhất trong ArcCatalog sẽ mất mãi mãi. Tôi luôn cho rằng không nên sử dụng windows explorer để sao chép dữ liệu giữa vào Cơ sở dữ liệu tệp địa lý nhưng có cách nào an toàn để làm việc này không? Nếu vậy thì thế nào?

nhập mô tả hình ảnh ở đây


Có phải nó chỉ là một raster duy nhất (hoặc một số ít) trong cơ sở dữ liệu? Tôi đã thấy rằng lượng thời gian để sao chép hoặc ghi một raster vào FGDB tăng theo số lượng các tính năng / raster khác trong db. Tôi sắp xếp mức 75-100 của riêng mình trước khi tôi cảm thấy nó chậm hơn rất nhiều (nhưng đó cũng là từ quan điểm lập trình. Số dặm của bạn có thể thay đổi).
nicksan

thông thường tôi sao chép một hoặc hai bộ dữ liệu (kích thước thay đổi 1GB - 20GB). Có khoảng 50 raster khác trong FGDB này.
Jakub Sisak GeoGraphics

Câu trả lời:


9

Tôi nghĩ rằng chìa khóa là sự khác biệt giữa cách Windows Explorer xử lý một tệp duy nhất và cách ArcCatalog / ArcGIS đối xử với một raster. Có một vài yếu tố ở đây.

  1. Trong định dạng Tệp GDB, raster không được biểu thị bằng một tệp duy nhất. Nó được tạo thành từ bảng dữ liệu, cùng với các kim tự tháp và chỉ mục. Tại sao điều này lại quan trọng là bởi vì khi ArcCatalog sao chép raster, trước tiên, nó kết hợp tất cả các tệp riêng biệt này vào những gì chúng ta xem là raster. Sau đó, nó sẽ chạy nó qua lớp lập trình ArcGIS để sao chép nó vào File GDB mới. Bề ngoài thì phức tạp hơn nhiều so với việc chỉ sử dụng tài nguyên Hệ thống Windows để sao chép tệp vì đây là lớp lập trình bổ sung.

  2. Phần tiếp theo có liên quan đến thứ mà bạn nhìn thấy khi bạn sao chép một lớp đối tượng khác trong ArcCatalog. Nếu bạn sao chép và dán vào ArcCatalog, nó sẽ xuất hiện một cửa sổ tiến trình hiển thị featureclass gốc và đích, sau đó là một trình vòng lặp đếm số lượng tính năng đã được chuyển. Điều này cho thấy rằng nó đang lặp đi lặp lại theo từng hàng thông qua featureclass. Điều này có ý nghĩa từ quan điểm toàn vẹn dữ liệu khi mỗi tính năng được sao chép và xác minh trước khi chuyển sang tiếp theo. Trường hợp điều này có liên quan đến Raster là một raster được tạo thành từ hàng trăm, nếu không nói là hàng ngàn Điểm. Nếu một bộ dữ liệu raster được sao chép giống như một vectơ vectơ, thì ArcCatalog về cơ bản được lặp qua từng cặp tọa độ trong Raster, để sao chép nó từ cái này sang cái khác. Thanh tiến trình hiển thị số lượng tính năng được sao chép trong ArcCatalog

  3. Yếu tố cuối cùng là kích thước của tập dữ liệu. Trong trường hợp của bạn, Tệp GDB bạn đang hiển thị có một bảng là 20,671,104 KB, tức là ~ 20GB. Đó là một Raster lớn, và chắc chắn chứa nhiều triệu điểm. Đó là rất nhiều cặp phối hợp để lặp qua.

Khi bạn kết hợp kích thước của tập dữ liệu Raster của mình, với nhu cầu lặp lại qua từng hàng (Cặp tọa độ) và chạy tất cả thông qua lớp lập trình ArcGIS, bạn sẽ kết thúc với một thao tác phức tạp hơn nhiều và do đó hoạt động lâu hơn so với sao chép một tệp sử dụng các chức năng của Hệ thống Windows.

-------Biên tập

Để trả lời câu hỏi ban đầu của bạn về một cách nhanh hơn để sao chép các trình quét giữa các cơ sở dữ liệu địa lý tệp, tôi sẽ nói một điều cần thử là viết một kịch bản python gọi arcpy. Vì sau đó bạn sẽ tương tác trực tiếp với API, nếu không có mã ArcCatalog / ArcMap bổ sung đang chạy, nó có thể nhanh hơn một chút. Một mẫu mã sau:

import arcpy
from arcpy import env

env.workspace = "C:/data"
arcpy.Copy_management("olddata.gdb/raster1", "newdata.gdb/raster1")

Tôi không chắc chắn nếu sự khác biệt tốc độ sẽ là đáng chú ý, nhưng đó là một tùy chọn.
Tùy chọn khác, như @ blah238 đã đề cập, là không lưu trữ các trình quét trong cơ sở dữ liệu địa lý tệp, nhưng ở định dạng dựa trên tệp, như "geotiff", hoặc thậm chí là ArcINFO Grid, vì tệp có thể được xử lý hoàn toàn qua giao diện Windows .

Thật không may, ngoài điều này, các tùy chọn của bạn để làm việc với cơ sở dữ liệu địa lý tệp bên ngoài giao diện ArcGIS bị hạn chế. Có một API cho File GDB cho phép các lập trình viên giao tiếp với nó trong các phần mềm khác nhau. Một ví dụ hiện tại là thông qua các thư viện GDAL / OGR, và sắp tới, Quantum GIS. Vấn đề với API là nó không hỗ trợ bộ dữ liệu Raster tại thời điểm này. Nếu đây là điều bạn muốn ủng hộ, tôi sẽ thêm hỗ trợ của bạn vào mục này tại trang ArcGIS Ideas .


3
Nói cách khác, sử dụng các kiểu dữ liệu raster dựa trên tệp hoặc DBMS (như Oracle Spatial GeoRaster ) nếu có thể.
blah238

Cảm ơn. Có một số raster của tôi là lớn. Vì vậy, không có cách nào để sử dụng explorer hoặc một số tiện ích bên thứ 3 khác?
Jakub Sisak GeoGraphics

2
Bạn có thể làm điều đó bằng cách sử dụng trình thám hiểm bằng cách sao chép FGDB có chứa trình raster trong trình thám hiểm, sau đó sử dụng Danh mục để xóa mọi thứ bạn không muốn và cuối cùng sử dụng danh mục để thêm mọi thứ bạn muốn (ví dụ: Trình thám hiểm thực hiện việc nâng cấp và Danh mục được nâng cấp sau đó). Đây là một hack khó chịu và cho rằng các nội dung khác của FGDB là nhỏ và mất ít thời gian hơn để giết / sao chép so với raster của bạn.
MappaGnosis
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.