Ưu và nhược điểm của bổ trợ Python so với bổ trợ .NET đối với ArcGIS cho máy tính để bàn là gì?


11

Tôi tìm thấy trong ESRI .NET trợ giúp:

Con trăn

Tất cả các ứng dụng ArcGIS Desktop bao gồm một ngôn ngữ kịch bản nhúng được gọi là Python. Có thể truy cập nhiều khu vực của ArcGIS, đặc biệt là xử lý địa lý thông qua các giao diện lập trình ứng dụng Python (API) đơn giản hóa, giúp dễ dàng tác giả và tự động hóa các tác vụ phổ biến. Các kịch bản Python dễ dàng được chia sẻ và có thể được tạo ra mà không cần môi trường phát triển bên ngoài. Có nhiều mô-đun Python thuộc phạm vi công cộng tập trung vào các lĩnh vực như khoa học, kỹ thuật và toán học. Với tất cả các thế mạnh của mình, Python không phù hợp với mọi tác vụ lập trình. Mặc dù phạm vi bảo hiểm đang được cải thiện, nhưng không phải tất cả các lĩnh vực của ArcGIS hiện đang được tiếp xúc với Python. Ngoài ra, trải nghiệm chỉnh sửa và gỡ lỗi trong Python không phức tạp hoặc dễ sử dụng như những môi trường phát triển thương mại như Visual Studio.Cuối cùng, bạn không thể lắng nghe và phản hồi các sự kiện ArcGIS, triển khai giao diện COM hoặc cắm vào nhiều điểm mở rộng COM của ESRI bằng Python.

và trong ArcGIS Desktop trợ giúp:

ArcGIS 10.1 giới thiệu Python vào danh sách các ngôn ngữ để tác giả bổ trợ Desktop, cung cấp cho bạn một giải pháp dễ dàng để mở rộng chức năng của máy tính để bàn. Để đơn giản hóa việc phát triển bổ trợ Python, bạn phải tải xuống và sử dụng Trình hướng dẫn bổ trợ Python để khai báo loại tùy chỉnh. Trình hướng dẫn sẽ tạo tất cả các tệp cần thiết để bổ trợ hoạt động.

Nếu bổ trợ Python và .NET có cùng chức năng? Điều đó có nghĩa là tôi có thể làm điều tương tự trong Python như .NET ??


Trường hợp nào nói rằng "Python và .NET có cùng tính năng để tạo bổ trợ"?
PolyGeo

xin lỗi, tôi không nói rõ ý của tôi. (Tôi cập nhật bài đăng)
user7172 29/07/13

1
implement a COM interface, or plug into ESRI’s many COM extensibility points using PythonĐiều đó lạ thật. Python có thể hoạt động tốt với COM.
Nathan W

Thật vậy, tôi đã tạo ra các add-in Python (tầm thường) sử dụng ArcObjects thông qua comtypes. Tuy nhiên tôi chưa thử thực hiện giao diện COM trong Python. Tôi không chắc điều đó là có thể hay khó so với .NET. Ngoài ra, cả hai loại bổ trợ đều không cho phép đăng ký tự động với COM, vì vậy một số nội dung nâng cao hơn được phục vụ tốt hơn với thành phần COM truyền thống có thể được đăng ký bởi trình cài đặt của nó hoặc (ESRI) RegAsm.
blah238

1
Đây không phải là ArcGIS nhưng đây là cách tôi tạo giao diện COM được triển khai bằng Python cho MapInfo nathanw.net/2011/04/07/USE-python-and-mapinfo-with-callbacks Tôi sẽ nói rằng nó dễ dàng hơn .NET: )
Nathan W

Câu trả lời:


24

Câu trả lời cho câu hỏi này là có và không. Có thể với một số nỗ lực để làm mọi thứ trong Python mà bạn có thể làm trong .Net, nhưng dễ dàng và có thể là hai điều rất khác nhau. Theo đó, cách hiểu đơn giản nhất là không , Bổ trợ Python không thể làm nhiều như .Net Add-Ins. Tuy nhiên, các tác vụ bổ trợ Python có thể thực hiện dễ dàng hơn và nhanh hơn để thực hiện và kiểm tra.

Từ quan điểm kỹ thuật thuần túy, Khung bổ trợ máy tính để bàn ArcGIS cung cấp các chức năng sau:

  • Một lược đồ dựa trên XML được xác định rõ để mô tả một loạt các điểm và thành phần tích hợp phổ biến trên máy tính để bàn: Nút, Thanh công cụ, Menu, Công cụ, Menu đa mục và Tiện ích mở rộng, cũng như cách dễ dàng kết nối các điểm này theo cách khai báo mã của bạn vào máy tính để bàn ArcGIS
  • Một định dạng tệp và cấu trúc tệp ( .esriaddin) để phân phối mã tùy chỉnh máy tính để bàn.
  • Một cơ chế để cài đặt, xác minh và lưu vào bộ đệm đã được cài đặt .esriaddins, vì vậy nếu tệp nguồn bổ trợ đã được thay đổi, nó sẽ tải lại tệp đã thay đổi vào bộ đệm bổ trợ của máy tính để bàn cục bộ.
  • Một bộ các cơ chế bảo mật và xác thực cho mã trong Bổ trợ: ký các .esriaddintệp kỹ thuật số , kiểm soát quản trị đối với mức độ xác thực được yêu cầu để cho phép cài đặt Bổ trợ.

Khung bổ trợ ở đây thiếu là bất kỳ hợp đồng chính thức nào về hành vi hoặc chức năng đằng sau các nút, v.v. Khi bạn cài đặt .Net SDK cho ArcGIS, bạn sẽ tích hợp Visual Studio dưới dạng Trình hướng dẫn bổ trợ trong hộp thoại quản lý dự án của bạn , tài liệu, đoạn mã, các ràng buộc ArcObjects, v.v. Vì vậy, một khi bạn đã vượt qua các điểm nhập mà khung Bổ trợ cung cấp, Bổ trợ .Net cho phép bạn đi tiếp với các API ArcObjects, nó cũng đi kèm với các API , cũng như chứa một thư viện các đoạn mã của các tác vụ phổ biến đã có sẵn để sử dụng. Không có SDK dành cho nhà phát triển Python nào trong ArcGIS: tất cả các chức năng của Python được hiển thị thông qua arcgisscripting / arcpy và đã được đóng gói trong sản phẩm. Vì vậy, nơi SDK .Net xuất hiện dưới dạng tải xuống lớn, thứ gần nhất trong Python là tải xuống Trình hướng dẫn bổ trợ tương đối nhỏ.

Mặt khác, Python khả năng tiêu thụ / thực hiện các giao diện COM , nhưng sử dụng COM từ Python không đi kèm với bất kỳ ArcGIS SDK hoặc tài liệu trong hệ thống trợ giúp ArcGIS. Nếu bạn chưa quen với việc phát triển ArcGIS, thì điều này đủ để trở thành rào cản để đẩy bạn đi trừ khi bạn thực sự biết bạn đang làm gì. Bạn có thể thực hiện COM bằng Python ở đây, nhưng nó đủ gần với Turing Tarpit rằng thật khó để biện minh cho thời gian sử dụng trừ khi bạn là người dùng ở cấp độ chuyên gia đã quen thuộc với COM và ArcObjects.

Tôi khuyên bạn nên nhìn vào những gì bạn có thể làm với arcpy . Bạn có thể tự động hóa rất nhiều tác vụ như gọi các công cụ xử lý địa lýthực hiện thao tác hàng loạt các tài liệu bản đồ và Bổ trợ Python cho phép bạn sử dụng một số sự kiện chìm được xác định rõmột số điều khiển hộp thoại ngoài khả năng cơ bản của Arcpy. Nếu bạn không thể nghĩ ra cách nào để hoàn thành nhiệm vụ của mình trong Python dựa trên những gì tài liệu nói (bạn cần một số tương tác giao diện người dùng phức tạp hoặc móc vào các sự kiện không được hiển thị trong Trình hướng dẫn bổ trợ Python hoặc sử dụng thứ gì đó chỉ có trong ArcObjects) , sau đó thực hiện phát triển của bạn trong .Net Add-In.

Xin lỗi, điều này mang nhiều sắc thái hơn là câu trả lời khó và nhanh, nhưng nó sẽ mang lại cho bạn một số ý kiến ​​về việc bạn nên đi Python hay tuyến đường .Net trong Bổ trợ của bạn.

Tôi cho rằng tôi nên thêm tiết lộ này: Tôi đã thiết kế và phát triển nhiều chức năng cụ thể của Python cho Bổ trợ trong ArcGIS.


1

Bạn đang xem xét môi trường máy tính để bàn vì vậy .NET chắc chắn là một lựa chọn. Tuy nhiên, bạn sẽ bị giới hạn về những gì bạn có thể làm với .NET vì phần lớn ArcGIS Server có sẵn để chạy trên nhiều nền tảng.

Hai xu của tôi: Nếu bạn đang thực hiện công việc UI sâu, tôi sẽ đề xuất .NET vì bạn có thể đánh cắp giao diện người dùng khá dễ dàng. Nếu bạn thực sự chỉ đang viết kịch bản và đang sử dụng các phần phân tích sâu hơn của ArcGIS Python sẽ cho phép bạn chuyển sang Máy chủ (hoặc "đám mây") dễ dàng hơn nhiều.


1

Một trong những nhược điểm của việc phát triển Bổ trợ trong .NET là mỗi phiên bản ArcGIS mới sử dụng một phiên bản ArcObjects không tương thích khác nhau và một phiên bản Visual Studio không tương thích khác nhau. Các tệp nhị phân được tạo bởi Bổ trợ .NET thường tương thích với các phiên bản sau của ArcGIS, nhưng chỉ khi bạn không muốn thực hiện bất kỳ thay đổi nào đối với Bổ trợ của mình trong phiên bản ArcGIS muộn hơn phiên bản ban đầu của nó đã phát triển.

Tôi đã phát triển một Bổ trợ .NET để tải các lớp Dữ liệu điều tra / dữ liệu dòng của Cục điều tra dân số lên bản đồ trong ArcGIS 10.0 và Bổ trợ nhị phân vẫn hoạt động trong ArcGIS 10.4. Thật không may, khi tôi muốn sửa đổi bổ trợ, tôi đã thử đưa giải pháp vào phiên bản Visual Studio tương thích với ArcGIS 10.4 và tôi đã bị ngập trong một số lượng lớn thông báo lỗi do các cuộc gọi không tương thích với ArcObjects và các tính năng của Visual Studio.

Phát triển bổ trợ trong Python liên quan đến việc sử dụng ArcPy thay vì ArcObjects, vì vậy tài liệu này dễ truy cập hơn và quá trình sửa đổi mã cho phiên bản ArcGIS mới sẽ dễ dàng hơn nhiều.

Nhược điểm chính của việc sử dụng Python thay vì .NET là việc xây dựng giao diện GUI trong Python khó khăn hơn nhiều. Các gói như wxPython có thể được sử dụng, nhưng có rất nhiều khó khăn trong việc khiến chúng hoạt động trong ArcGIS. Giao diện người dùng Hộp công cụ bị giới hạn hơn nhiều so với các hộp thoại có thể được xây dựng trong .NET.

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.