Tôi đã mã hóa bằng Python được vài tháng nay và đã phát triển một số tập lệnh hợp lý phức tạp cho các nhiệm vụ xử lý địa lý chủ yếu. Điều đó đang được nói, tôi vẫn đang học hỏi rất nhiều vì tôi đến từ nền tảng SQL / VBA / VBScript.
Tôi biết rằng mã được biên dịch thường chạy nhanh hơn mã phải được xử lý bởi trình thông dịch ngôn ngữ, vì vậy tôi quan tâm đến khả năng biên dịch tập lệnh Python xử lý địa lý thành tệp .EXE để làm việc với dữ liệu lớn.
Điều này thậm chí có thể? Nếu có, cách tốt nhất để biên dịch tập lệnh Python (.py) đang nhập các mô-đun arcgisscripting hoặc arcpy là gì?
Tôi đã dành vài phút để cố gắng tìm những gì tôi muốn làm và tìm kiếm đã trả lại bài viết này trong số những người khác: http://www.ehow.com/how_2091641_compile-python-code.html
Trình biên dịch dường như hoạt động, nhưng khi thực hiện tệp .EXE kết quả, nó đã báo lỗi khó hiểu cho biết một số tệp không khả dụng.
Tập lệnh Python chạy những gì có vẻ hợp lý từ dòng lệnh, nhưng tôi tự hỏi liệu tôi có thể thấy một số cải thiện nhỏ nếu tôi có thể biên dịch tệp .py không. Một lần nữa, tôi đang làm việc với một số bộ dữ liệu lớn đang mất hơn 20 giờ để xử lý (phân định các lưu vực sông từ các vị trí mẫu chất lượng nước đầu vào). Tôi sẽ lấy bất cứ thứ gì tôi có thể có để cải thiện.
Tập lệnh chạy nhanh hơn 10% bên ngoài ArcGIS từ dòng lệnh bằng cách sử dụng bộ trang web thử nghiệm so với thiết lập tập lệnh dưới dạng công cụ tập lệnh trong hộp công cụ mới trong ArcCatalog. Tôi đã chạy tập lệnh từ dòng lệnh với bất kỳ phiên bản nào của ArcGIS mở trên một máy chuyên dụng.
Vì vậy, có thể biên dịch các tập lệnh Python nhập mô-đun arcgisscripting và gọi các công cụ ArcToolBox không?
BIÊN TẬP
Cảm ơn cho đầu vào, điều này là hữu ích cho tôi. Kịch bản phần lớn là một cách để phối hợp một số công cụ ArcGIS và xuất ra các định dạng / vị trí mong muốn / với sự phân bổ thích hợp. Tôi đã giảm bớt một số chất béo Tôi nghĩ bằng cách ghi vào thư mục cào thay vì cơ sở dữ liệu địa lý cá nhân đầu cho một số tệp raster tạm thời để chúng có thể được lưu trữ ở định dạng ESRI GRID so với định dạng IMG. Tôi sẽ kiểm tra các đề xuất hồ sơ mặc dù.
Có một số người trong văn phòng của tôi hỏi Python rằng "mã được biên dịch nhanh hơn mã chạy qua trình thông dịch" chủ yếu so với chương trình Visual Basic đã biên dịch hoặc chương trình VB.NET, nhưng đó là một điểm tốt các công cụ sẽ mất thời gian. Và, có vẻ như với các máy tính ngày nay, việc giải thích mã có thể không chậm hơn nhiều so với mã được biên dịch để đảm bảo đi thêm một dặm nữa.
EDIT - cập nhật về tối ưu hóa chương trình với các định dạng raster.
Muốn theo dõi "tối ưu hóa" chương trình Python này của tôi và tôi đã có thể cạo 2 giờ thời gian xử lý bằng cách viết các trình quét tạm thời sang định dạng GRID thay vì cơ sở dữ liệu địa lý cá nhân. Không chỉ vậy, đã giảm đáng kể mức tiêu thụ không gian đĩa kích thước dữ liệu. Lần chạy đầu tiên tôi đã viết tất cả các trình quét (và chúng chỉ là các tính năng điểm được chuyển đổi thành các trình quét, và sau đó các trình quét lưu vực đầu nguồn) đã tạo ra 37,1 GB dữ liệu chỉ cho các tệp đó. Việc ghi hai dữ liệu đầu ra sau vào một thư mục ở định dạng GRID đã giảm xuống còn 667 MB dữ liệu.
Tôi tò mò muốn xem làm thế nào một tệp GDB sẽ xử lý các dữ liệu này mặc dù chủ yếu là về kích thước của dữ liệu. Nhưng, việc cắt giảm thời gian xử lý của tôi xuống từ 9,5 giờ xuống còn 7,5 giờ chắc chắn là đủ để ủng hộ việc xử lý các trình quét bên ngoài cơ sở dữ liệu địa lý theo định dạng GRID.