Khi nào nên sử dụng ModelBuilder qua kịch bản Python và ngược lại?


71

Tôi chưa quen với kịch bản Python trong ArcGIS nhưng không mới đối với ModelBuilder.

Tôi muốn biết lợi ích của Python vs ModelBuilder.

Khi nào chúng ta nên viết tập lệnh Python cho tự động hóa GIS chứ không phải sử dụng ModelBuilder?

Các khả năng tự động hóa của Python mà chúng ta không thể tìm thấy trong ModelBuilder là gì?

Câu trả lời:


82

Tôi tin rằng người dùng nên xác định rõ mục tiêu của mình trước khi quyết định sử dụng bộ công cụ nào. ModelBuilder và Python scripting excel ở các nhiệm vụ khác nhau. Một vài suy nghĩ:

  1. ModelBuilder không có khả năng ánh xạ, trong khi arcpy.micking thì có.
  2. Python có thể được sử dụng để tối ưu hóa quy trình công việc, chẳng hạn như với gói đa xử lý hoặc xử lý song song .
  3. Python cho phép các vòng lặp lồng nhau và các công cụ logic lặp tiện dụng khác. Để thực hiện một kết quả tương tự trong ModelBuilder, bạn sẽ phải xây dựng các mô hình lồng nhau phức tạp và phức tạp.
  4. Thao tác văn bản đơn giản rất dễ dàng với Python và rất khó hoặc không thể với ModelBuilder.

    ví dụ: để đổi tên danh sách tên tệp từ, ví dụ "m_2010_naip_2310345_nw.img" thành "2310345nw.img" có thể dễ dàng thực hiện với Python bằng os.pathmô-đun.

Mặt khác:

  1. ModelBuilder rất hữu ích để nhanh chóng kết hợp các công cụ phổ biến và loại bỏ nhu cầu gỡ lỗi các tập lệnh.

  2. ModelBuilder có một trình lặp đệ quy rất hữu ích , dễ thực hiện để lặp qua các thư mục và thư mục con.

  3. ModelBuilder vượt trội về mặt trực quan và trực quan mô tả quy trình làm việc cho các nhiệm vụ phức tạp .

  4. ModelBuilder có thể kết hợp các công cụ kịch bản Python .


5
Mô tả sự khác biệt giữa Python và Model Builder trong ArcGIS. Cảm ơn
BBG_GIS

24
Tôi cũng sẽ thêm: 1. bạn có thể chạy tập lệnh Python của mình bên ngoài ArcMap 2. Bạn có thể sử dụng ArcObjects trong Python, 3. Có thể có một số khác biệt về tốc độ.
Tomek


3
+1 CUỘC ĐỜI NESTED & arcpy.micking! Tôi thích khả năng thực hiện các phép tính trong một tập lệnh và thêm chúng vào các bảng thuộc tính hoặc tốt hơn là bố trí bản đồ (ví dụ diện tích của từng loại đất ngập nước).
Roy

2
Tôi đọc kịch bản python cho cuốn sách ArcGIS. Tôi cũng thêm một số khả năng khác: 1- con trỏ tập lệnh cho phép bạn lặp qua các bản ghi trong một bảng, đọc các hàng hiện có và chèn các hàng mới. 2- kịch bản có thể được sử dụng để bọc phần mềm khác - nghĩa là dán keo ứng dụng lại với nhau. ví dụ python có thể được sử dụng để truy cập các chức năng trong Microsoft Excel hoặc trong Gói thống kê R. Tập lệnh 3-A có thể được chạy dưới dạng tập lệnh độc lập trên đĩa bên ngoài ArcGIS. Bạn không cần phải chạy ArcMap hoặc ArcCatalog cho tập lệnh công việc. (Python Scripting cho ArcGIS, Chương 2, Trang 39)
BBG_GIS

24

Nếu bạn chỉ làm việc trong giới hạn của ArcGIS, có một vài cân nhắc tôi sẽ xem xét khi cố gắng xác định phương pháp cần thực hiện.

  • Bạn đang cố gắng để thực hiện,
  • Bộ kỹ năng hiện tại của bạn là gì,
  • Bạn sẽ chia sẻ công việc của mình với người khác để sử dụng, học hỏi hoặc thao tác và
  • Đối tượng dự định của bạn là ai.

Đưa ra những cân nhắc:

  1. Việc xây dựng một quy trình trong ModelBuilder thường nhanh hơn và dễ dàng hơn so với Python, trừ khi một phần của quy trình của bạn không thể được sao chép trong ModelBuilder.
  2. Nếu bạn không biết Python và không có ý định tìm hiểu nó, ModelBuilder là một lựa chọn tuyệt vời.
  3. Nếu bạn không biết Python và muốn học cách kết hợp nó vào bộ kỹ năng của mình, ModelBuilder là một cách tuyệt vời để bắt đầu bằng cách tạo các mô hình đơn giản, sau đó xuất chúng sang Python để bạn có bộ xương của quy trình cuối cùng được xây dựng sẵn cho bạn . Phương pháp này có chi phí cao, vì có rất nhiều thông tin & biến số bên ngoài thường được tạo trong quá trình chuyển đổi, nhưng nó vẫn là một cách tuyệt vời để bắt đầu học.
  4. Nếu bạn đang xây dựng các công cụ để sử dụng cá nhân, sử dụng phương pháp nào bạn cảm thấy thoải mái nhất thường là con đường để đi. Cá nhân tôi sử dụng cả hai, tùy thuộc vào nhu cầu của tôi.
  5. Nếu bạn dự định chia sẻ phân tích của mình với người khác và muốn chia sẻ mô hình / tập lệnh của bạn với người khác là một phần của tài liệu quy trình của bạn, thì một mô hình thường dễ theo dõi và dễ hiểu hơn đối với những người không có kỹ thuật.

Có lẽ không có câu trả lời nào cho "cái nào tốt hơn" cho sử dụng cá nhân, nhưng nếu bạn đang tìm kiếm khả năng việc làm lâu dài, bằng cách học Python, bạn sẽ tách mình khỏi những người chỉ biết sử dụng các công cụ được lập trình sẵn, hoặc chỉ biết sử dụng ModelBuilder. Bạn cũng cung cấp cho mình khả năng đi ra ngoài giới hạn của Python cho ArcGIS (ArcPy) và bắt đầu tự động hóa nhiều nhiệm vụ và dự án hơn bằng cách sử dụng các thư viện GIS nguồn mở và độc quyền khác, cũng như nhiều thư viện không phải là GIS (cơ sở dữ liệu , thao tác hình ảnh, thống kê, vv).


20

Model Builder là một ngôn ngữ lập trình trực quan tuyệt vời và dễ học và là một lối vào tốt cho lập trình GIS nói chung. Nhưng trong một số điều trăn có thể làm nhiều hơn.

Một ví dụ là sự tích hợp của các thư viện GIS không phải ESRI. Gần như tất cả các GIS nguồn mở cũng có thể được quảng cáo thông qua python (ví dụ GRASS , Sextante , QGIS , SAGA ). Điều này giúp tôi rất nhiều, vì tôi chỉ có giấy phép ArcView. Vì vậy, mỗi khi tôi không thể sử dụng một công cụ xử lý địa lý nhất định trong ArcGIS, tôi sẽ xem xét các tùy chọn khác có sẵn trong GIS nguồn mở. Sau đó, tôi lấy các công cụ OpenSource này và kết hợp chúng với các công cụ ArcGIS hoặc trong một tập lệnh python lớn hơn hoặc tích hợp chúng trong ModelBuilder thông qua một tập lệnh python nhỏ hơn.

Tôi chắc chắn các thành viên khác có thể đặt tên cho nhiều lợi thế hơn.


9

Khi sử dụng Python và ArcGIS, bạn có được toàn bộ chức năng của Python ngoài những gì bạn đã có trong ArcGIS. Nếu bạn cần loại sức mạnh và sự linh hoạt này phụ thuộc vào mong muốn của bạn. Ngoài ra, làm quen và thực sự tận dụng một ngôn ngữ lập trình như Python cần có thời gian. Nếu khoản đầu tư này xứng đáng với bạn là tùy thuộc vào bạn. Tuy nhiên, để xử lý dữ liệu nghiêm túc, một ngôn ngữ kịch bản thực sự là một bổ sung rất tốt trong kho vũ khí của bạn.

Ngoài bất kỳ chức năng nào mà ModelBuilder có thể bỏ lỡ, còn có một cuộc thảo luận cơ bản hơn. Nói chung, các kịch bản phù hợp hơn nhiều để tạo ra các quy trình công việc phức tạp. Mã được xử lý từ trên xuống dưới và các tác vụ phức tạp có thể được chia thành các tác vụ phụ nhỏ hơn bằng cách sử dụng các hàm eg. hoặc đồ vật. Một công cụ đồ họa như người xây dựng mô hình có xu hướng trở thành một spaghetti lớn.


7

Tôi là một phần để tạo tập lệnh Python. Viết mã thú vị hơn là gây rối với việc kết nối các dòng với các hộp và ít nhất là đối với tôi.

Điều thực sự tuyệt vời về kịch bản Python là bạn có thể lên lịch cho các tập lệnh của mình chạy vào thời điểm thuận tiện cho bạn. Nếu bạn có một kịch bản cần một chút thời gian để hoàn thành hoặc cần được chạy ngoài giờ làm việc thông thường, điều này thực sự tiện lợi. Bạn có thể xem một ví dụ về cách lên lịch cho một kịch bản ở đây .

Và như @Aaron đề cập, bạn có thể dễ dàng thiết lập vòng lặp trong tập lệnh Python.

Nếu bạn chỉ đặt ra với kịch bản Python, bạn có thể muốn tạo một mô hình với Trình tạo mô hình và xuất nó dưới dạng tập lệnh Python. Đôi khi tôi làm điều này nếu tôi gặp khó khăn trong việc hiểu cách sử dụng một số công cụ trong tập lệnh. Nó có thể giúp bạn hiểu được cách đặt các tập lệnh lại với nhau.


5

Tôi đã thấy rằng tôi dường như bị mắc kẹt với không có giải pháp nào nhiều hơn với trình xây dựng mô hình hơn là với kịch bản python. Đối với tôi, bản chất 'hộp đen' của người xây dựng mô hình có phần khó khăn hơn trong việc tìm ra vấn đề nằm ở đâu.

Tôi cũng đã thấy rằng tôi có thể tìm thấy nhiều sự giúp đỡ hơn về trăn. Tôi có xu hướng tìm thấy nhiều chủ đề và chủ đề cuối cùng về xây dựng mô hình. Khu vực cũng có ít ví dụ để đi qua, như với python, bạn có thể tìm thấy các đoạn nhỏ của hầu hết các phần của bất kỳ kịch bản nào bạn đang viết.

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.