Các ví dụ dựa trên ngành sử dụng ArcPy trong Python để xử lý địa lý?


12

Gần đây, một số sinh viên đã hỏi một số loại hoạt động mà Nhà phân tích / Nhà phát triển GIS thường cố gắng tự động hóa bằng cách sử dụng Python với xử lý địa lý trong gói trang web ArcGIS và ArcPy. Tôi đoán có thể hữu ích khi biết khi tìm kiếm một số bài tập để làm để chắc chắn rằng những gì bạn tạo ra có liên quan đến ngành công nghiệp và có thể được sử dụng lại sau này tại nơi làm việc.

Câu trả lời dễ nhất sẽ là "đọc trợ giúp Esri và xem qua các mẫu", nhưng tôi đang tìm kiếm các kịch bản cụ thể hơn, phổ biến nhất để thực hiện. Do đó, việc chia sẻ quy trình làm việc như "chúng tôi đang nhận tệp .zip bằng shapefiles, chúng tôi sử dụng Python để giải nén nó, chiếu tất cả vào hệ tọa độ X, tải vào cơ sở dữ liệu địa lý ArcSDE, cấp cho người dùng quyền truy cập vào dữ liệu này". Xin vui lòng cảm thấy thoải mái để cung cấp một mô tả ngắn gọn về quy trình làm việc, không yêu cầu chi tiết cực đoan.

Câu trả lời:


10

Đối với tôi, như câu hỏi của bạn cho thấy, tôi sử dụng Python rất nhiều để tự động hóa xử lý hàng loạt nói riêng mà còn để tạo bất kỳ phép tính chuyên gia lặp lại nào. Ngày nay, tôi không sử dụng ArcPy vì tôi không đủ khả năng cấp giấy phép ESRI với tư cách là Tư vấn viên GIS tự do. Tôi sử dụng GDAL / OGR, Shapely, PostGIS, Numpy và SciPy rất nhiều, mặc dù mọi thứ trong danh sách của tôi đều có thể được thực hiện với ArcPy (và một số trong đó là). Những ví dụ bao gồm:

  1. Lấy số liệu thống kê Zonal cho toàn bộ Vương quốc Anh trước tiên yêu cầu ghép các gạch raster 20km thuộc hai loại dữ liệu khác nhau, thực hiện một số "bản đồ" trên các raster đó, hợp nhất diện tích tương đương của các ô đa giác vector 10km, tính toán các chỉ số khu vực của kết quả của ánh xạ raster và nối bảng thống kê với dữ liệu vectơ ban đầu trước khi xuất ra các shapefiles trong cấu trúc thư mục logic và ghi vào CD cho máy khách.
  2. Thực hiện tính toán khả năng hiển thị tuần tự cứ sau 100m dọc theo một con đường hoặc đường đua và sau đó gán kết quả tính toán dưới dạng giá trị M trở lại trong dữ liệu tuyến đường.
  3. Quá trình tự động để tạo các mô hình cảnh quan 3D bằng cách ghép / ghép các khối dữ liệu raster và vector, cắt vào khu vực cần thiết và sau đó chuyển đổi sang định dạng 3D độc quyền (không phải là GIS). Tôi sử dụng thư viện Python nhỏ mà tôi đã phát triển cho công việc tự do này.
  4. Một dự án lớn mà tôi đã làm trong một nhóm đã sử dụng ArcPy để tạo các quy trình hàng loạt để chuyển đổi hoặc lấy dữ liệu mới từ dữ liệu GIS thành định dạng với các tính năng có thể được sử dụng bởi trình tạo tài sản trò chơi máy tính theo thủ tục. Các tập lệnh xử lý địa lý được gọi bởi một trình xử lý hàng loạt 'trình điều khiển nô lệ' cũng được viết bằng Python và chạy qua Django.
  5. Python rất hữu ích ngay cả đối với các tác vụ nhỏ, đặc biệt khi có bất kỳ sự lặp lại nào (ví dụ: tính năng bằng cách xử lý tính năng). Model Builder của ArcGIS được cải tiến hơn nhiều với các điều khiển luồng xuất hiện trong phiên bản 10 nhưng ngay cả như vậy, nó vẫn thường không thể cung cấp điều khiển cần thiết và / hoặc nhanh hơn và dễ dàng hơn để viết quy trình trong ArcPy hơn là cố gắng xây dựng mô hình cưỡng chế.
  6. Tôi đã tạo ra một công cụ trong Python để thực hiện phân tích đường quét (để tính toán liệu một chiếc xe rất dài có thể đi theo một tuyến đường nhất định hay không và đoạn giới thiệu có thể được kết nối chặt chẽ giữa các tòa nhà. Đây là một chuyên gia khác làm việc tự do kho vũ khí.
  7. Tạo đầu ra từ Mapnik
  8. Trước khi ArcGIS trở nên đa luồng, tôi đã sử dụng Python để cho phép tôi sinh ra các quy trình con đôi khi có thể tăng tốc các phép tính dài, chậm mà không cần đến ArcMap làm lộn xộn bộ nhớ.

Python trong xử lý địa lý thương mại là rất tốt vì bạn có tất cả tốc độ và sự ngắn gọn của kịch bản mà Python cung cấp và tốc độ xử lý mã kiểu C đã biên dịch cung cấp bởi vì, trong khi Python được hiểu thì nó chủ yếu gọi mã kiểu C được biên dịch dưới mui xe. Python cung cấp chất keo có thể chứa nhiều nhiệm vụ xử lý địa lý liên tiếp với nhau và danh sách trên chỉ là một ảnh chụp nhanh về một số thứ mà cá nhân tôi sử dụng nó cho. Trong Days Good Old Days ', chúng tôi sẽ thiết lập tệp Watch và ArcInfo ghi lại đầu vào dòng lệnh của chúng tôi và sau đó dọn sạch AML (người nhớ ngôn ngữ Arc Macro!) Để thực hiện quy trình tái xử lý các cuộc gọi xử lý địa lý được dán cùng với AML. Ngày nay nó không quá khác biệt, ngoại trừ chúng tôi sử dụng Python hoặc C # làm chất keo.


1
Đủ thú vị Tôi vừa trả lời câu hỏi này ( gis.stackexchange.com/questions/52478/ mẹo ) - đưa ra một ví dụ khác về việc sử dụng Python như một phương pháp đánh bại rò rỉ bộ nhớ ArcGIS!
MappaGnosis

+1, tôi đặc biệt muốn xem một chủ đề blog của GIS.SE trên # 4.
blah238

1
Mặc dù công ty hiện không còn tồn tại và tôi đã rời đi một thời gian trước đây, một công ty khác đã mua IP để tôi không biết mình có thể rõ ràng như thế nào. Dù sao, bạn có thể nhận được một số manh mối về phía đa xử lý từ câu trả lời của tôi trong liên kết trong nhận xét của tôi ở trên. Tôi nghĩ rằng tôi cũng có thể nói thêm rằng trang trại xử lý địa lý của chúng tôi có một máy 16 lõi, hai máy chủ 8 lõi và khoảng một tá máy tính lõi kép "đã nghỉ hưu" đều do trình điều khiển nô lệ điều hành. ESRI thậm chí đã cử một số người đến và xem xét những gì chúng tôi đã làm vì chúng tôi không sử dụng ArcServer cho việc này. Chúng tôi chạy máy móc mạnh đến nỗi hai người thậm chí bốc cháy!
MappaGnosis

7

Bắt đầu từ đâu ... Tôi là một người ủng hộ Python rất lớn trong doanh nghiệp, mặc dù bây giờ tôi làm việc trong chính phủ bang / ed cao hơn. Dưới đây là một số ví dụ về các tác vụ tôi đã sử dụng Python cho:

  1. Di chuyển dữ liệu xung quanh. Các tác vụ khá đơn giản như thường xuyên di chuyển dữ liệu xung quanh có thể được tự động hóa rất dễ dàng với Python, đặc biệt là với shutilmô-đun ngoài hộp.
  2. Xuất featureclass ra khỏi cơ sở dữ liệu ArcSDE và vào shapefiles để tiêu thụ bởi các gói phần mềm khác. ArcSDE (hoặc một số cơ sở dữ liệu quan hệ khác) thường là bản ghi chính trong một tổ chức, nhưng không phải mọi gói phần mềm đều có thể móc vào cơ sở dữ liệu. Nhiều gói vẫn sẽ tiêu thụ các shapefile tốt và sử dụng arcpy, không khó để xuất chúng ra hàng đêm để người dùng của bạn có thể có dữ liệu cập nhật.
  3. Tạo bộ dữ liệu không gian từ bộ dữ liệu khác nhau. Mọi người trong doanh nghiệp sử dụng (và thường sử dụng sai) Excel để giữ dữ liệu của họ. Với arcpy(hoặc các phương pháp Pythonic khác), thật dễ dàng để lấy dữ liệu dạng bảng có thành phần không gian và nhanh chóng tạo một bộ dữ liệu không gian từ nó. Tương tự với các tập tin văn bản. Gần đây tôi đã tạo ra một công cụ ArcToolbox cho một khách hàng đọc các tệp văn bản ở định dạng XYZ độc quyền và tạo các polylines hỗ trợ ZM (thực sự không thể chia sẻ nhiều hơn cái đó).
  4. Dịch dữ liệu GIS để có thể đưa nó vào phần mềm mà không biết "không gian" là gì. Tôi đang viết các công cụ ngay bây giờ để lấy bộ dữ liệu GIS (raster, vectơ) và đẩy dữ liệu vào chương trình mô hình 3D thông qua API Python của nó. Gói 3D này hoàn toàn không thể hoạt động với các định dạng dữ liệu không gian, nhưng nó có thể hoạt động với các giá trị văn bản và thuộc tính đằng sau dữ liệu không gian. Đối với điều này, tôi đang sử dụng arcpykéo thông tin ra khỏi cơ sở dữ liệu địa lý và đẩy nó vào tệp văn bản hoặc tệp cấu hình XML.
  5. Lấy dữ liệu. Có một trang web với một bảng dữ liệu mà bạn cần? Sử dụng beautifulsoupđể giải nén nó. Có một trang FTP với hàng trăm hoặc hàng ngàn tệp bạn cần tìm nạp? Sử dụng urllib2hoặc ftplibđể tải chúng dễ dàng.

Đó chỉ là một vài ví dụ. Điều tuyệt vời về Python trong doanh nghiệp là ngay cả khi không có quyền quản trị đầy đủ cho máy của bạn, thường là như vậy, bạn vẫn có thể hoàn thành khá nhiều. Kết hợp điều đó với đường cong học tập nhẹ nhàng và khả năng đọc của Python và bạn có một công cụ tự động hóa tuyệt vời cho Công nghệ / Nhà phân tích GIS không có nhiều kinh nghiệm lập trình.


6

Tôi làm việc cho một đô thị và băng đảng GIS cung cấp hỗ trợ cho các bộ phận khác nhau của chúng tôi (Kỹ thuật, Kiểm tra Xây dựng, Bylaw, Công viên, Lửa, v.v.).

  1. Cập nhật thông tin bưu kiện và địa chỉ công dân. Chúng tôi có các tập lệnh khá dài thao túng cả dữ liệu không gian và thuộc tính, bao gồm sử dụng các công cụ xử lý địa lý khác nhau để thực hiện các công cụ không gian cũng như kết nối với cơ sở dữ liệu quan hệ để lấy thông tin được nối với dữ liệu không gian của chúng tôi.
  2. Công cụ tùy chỉnh. Chúng tôi đã tạo các công cụ tùy chỉnh bằng Trình hướng dẫn bổ trợ Python mới cho một số nhân viên không thuộc hệ thống GIS của chúng tôi. Một số nhân viên của chúng tôi cần đọc dữ liệu không gian cũng như thực hiện một số thao tác cơ bản. Chúng tôi đã thiết kế các thanh công cụ cho phép họ làm bất cứ điều gì họ cần làm mà không cần phải can đảm vào môi trường ArcGIS.

Như những người khác đã nêu, đây chỉ là một vài ví dụ.

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.