Mã hóa ArcGIS Python

Shahriar Sir đã thực hiện hơn 100 dự án thực tế về Web GIS trong đời. Các công trình và nghiên cứu về Đổi mới hệ thống thông tin địa lý của ông luôn được đăng trên nhiều cổng thông tin quốc tế như tin tức của Cơ quan nghiên cứu khoa học vũ trụ Nga

Shahriar Sir có một kênh youtube về GIS để hướng dẫn về GIS, hướng dẫn nghề nghiệp và giải pháp cho vấn đề miễn phí. Tên Kênh Youtube là "Shahriar GIS"

Shahriar Sir là Nhà nghiên cứu về Web GIS và đã tạo ra nhiều Cải tiến về Web GIS đã xuất bản nhiều Cổng thông tin quốc tế

Ông đã phát triển Hệ thống theo dõi phương tiện dựa trên Web GIS bằng cách sử dụng phân tích dựa trên Kỹ thuật phần mềm để thiết lập mối quan hệ giữa GIS, Web và Công nghệ thông tin

Shahriar Sir là một thành viên của OpenStreetMap Foundation

Ông đã được mời làm Cố vấn GIS quốc tế trong nhiều Hội nghị quốc tế về GIS ở nhiều quốc gia và Bài phát biểu của ông về Web GIS trong các hội nghị đó cũng có thể được tìm thấy trên Youtube

Hướng dẫn này sẽ giới thiệu ngắn gọn về việc sử dụng ngôn ngữ lập trình Python trong ArcGIS Pro

Python là ngôn ngữ lập trình đa nền tảng, mã nguồn mở, được phát triển bởi lập trình viên người Hà Lan Guido van Rossum và được phát hành lần đầu tiên vào năm 1991. So với nhiều ngôn ngữ máy tính khác, Python tương đối dễ sử dụng và thường được sử dụng để tương tác và tùy chỉnh phần mềm

ArcPy là một mô-đun cung cấp các hàm, lớp và phương thức để thực hiện "phân tích dữ liệu địa lý, chuyển đổi dữ liệu, quản lý dữ liệu và tự động hóa bản đồ bằng Python" [ESRI 2022]

Có một số giới hạn đáng kể đối với những gì bạn có thể làm với ArcPy và nó chủ yếu hữu ích để tự động hóa các tác vụ chi tiết, lặp đi lặp lại hoặc tẻ nhạt [Zandbergen 2020, trang 356]

Mã Python có thể được thực thi theo nhiều cách khác nhau trong môi trường ESRI

Lệnh cửa sổ Python

Cửa sổ ArcGIS Pro Python cho phép người dùng nhập và chạy các lệnh Python riêng lẻ

Bạn khởi động cửa sổ Python từ cửa sổ Analysis, Python, Python

trong ví dụ này

  • Hàm ArcGISProject[] trả về một tham chiếu đến dự án ArcGIS Pro. Chuyển "hiện tại" khi hàm được gọi trong cửa sổ Python trả về một tham chiếu đến dự án hiện đang được xem trong ArcGIS Pro
  • Phương thức listMaps[] trả về danh sách các bản đồ trong dự án. Vì dự án này chỉ có một bản đồ nên chúng tôi chọn phần tử đầu tiên [và duy nhất] của danh sách để lấy tham chiếu đến bản đồ đó
  • Phương thức addDataFromPath[] thêm một dịch vụ tính năng dưới dạng một lớp. Lớp cụ thể này được tạo từ một dịch vụ tính năng của các nhà máy điện của Hoa Kỳ từ Bộ Năng lượng Hoa Kỳ đã được xuất bản trong tổ chức ArcGIS Online của Đại học Illinois
aprx = arcpy.mp.ArcGISProject['current']

streetmap = aprx.listMaps[][0]

streetmap.addDataFromPath["//services.arcgis.com/GL0fWlNkwysZaKeV/arcgis/rest/services/Minn_2020_Power_Plants/FeatureServer"]
Trình duyệt của bạn không hỗ trợ thẻ video. Thêm một lớp dịch vụ tính năng từ bảng điều khiển Python

Tập lệnh cửa sổ Python

Các tác vụ trong ArcGIS Pro thường yêu cầu chuỗi thao tác và các thao tác đó có thể được thực hiện bằng cách sử dụng chuỗi biểu thức Python. Tập lệnh là một chuỗi các lệnh được tập hợp thành một tệp văn bản duy nhất mà phần mềm có thể chạy được. Các tập lệnh có thể được sử dụng để tổ chức các chuỗi lệnh [quy trình công việc] phức tạp và tự động hóa các tác vụ tẻ nhạt

Ưu điểm của việc sử dụng tập lệnh thay vì giao diện người dùng đồ họa [GUI] ArcGIS Pro bao gồm

  • tái sử dụng. Nếu bạn cần chạy lại một chuỗi các bước trên dữ liệu mới hoặc dữ liệu được cập nhật, thì việc chạy lại một tập lệnh sẽ dễ dàng hơn nhiều so với việc phải thực hiện nhiều lần các tương tác GUI phức tạp
  • tái sản xuất. Nếu bạn cần gỡ lỗi hoặc xác thực kết quả từ một chuỗi các bước phức tạp, việc chạy lại tập lệnh có thể tái tạo chính xác các bước đó, thay vì tương tác với GUI có thể khó nhớ và dễ bị lỗi
  • có thể mở rộng. Khi nhu cầu thay đổi, các tập lệnh có thể dễ dàng sửa đổi để đáp ứng những nhu cầu mới đó
  • mô tả. Tập lệnh cung cấp tài liệu về các bước cần thiết để thực hiện tác vụ

Tuy nhiên cũng có nhược điểm

  • Kiến thức chuyên ngành. Viết kịch bản yêu cầu kiến ​​thức chuyên môn về cả ngôn ngữ kịch bản và môi trường phần mềm trong đó các tập lệnh đó được sử dụng
  • che giấu. Các kịch bản thường được viết một cách khó hiểu và không hiệu quả, đặc biệt là bởi những người mới viết. Mã có thể che khuất logic cơ bản
  • Sự phụ thuộc vào phần mềm và phiên bản. Các tập lệnh phụ thuộc vào các thư viện mà chúng gọi. Khi phần mềm cơ bản thay đổi, các tập lệnh có thể cần được sửa đổi. Điều này có thể không khuyến khích việc cập nhật phần mềm và có thể tốn kém và mất thời gian nếu người viết kịch bản ban đầu không còn ở trong tổ chức của bạn

Các tệp tập lệnh có thể được thực thi từ bảng điều khiển ArcGIS Pro Python bằng cách nhấp chuột phải vào dòng nhắc của bảng điều khiển và chọn Tải dữ liệu

Trình duyệt của bạn không hỗ trợ thẻ video. Thực thi tập lệnh từ bảng điều khiển ArcGIS Pro Python

Tập lệnh độc lập

Bạn có thể gặp các tình huống mà bạn muốn có thể chạy tập lệnh mà không cần phải nỗ lực khởi động ArcGIS Pro và nhấp vào các nút để chạy tập lệnh của mình. Một ví dụ có thể là tự động hóa cùng một tác vụ trên nhiều tệp

Trình duyệt của bạn không hỗ trợ thẻ video. Chạy tập lệnh ArcPy độc lập bên ngoài giao diện người dùng ArcGIS Pro

Tập lệnh máy tính xách tay

Sổ ghi chép là các ô mã và văn bản mô tả xen kẽ, hữu ích để trình bày kết quả dữ liệu được phân tích bằng mã Python

Sổ ghi chép là nơi tốt để đặt các tập lệnh dành riêng cho các dự án cụ thể, vì sổ ghi chép được lưu cùng với các gói dự án

Một cuốn sổ tay Python

Tập lệnh hộp công cụ

Các tập lệnh đại diện cho các tác vụ có thể khái quát hóa có thể được tích hợp vào các công cụ có tham số cho phép thực thi theo cách giống như các công cụ gốc từ hộp công cụ ArcGIS Pro

Hộp công cụ là nơi tốt để đặt các tập lệnh có thể hữu ích cho nhiều dự án khác nhau

Tập lệnh hộp công cụ Python

API ArcGIS

ArcGIS API cho Python là một "thư viện để thực hiện các tác vụ trực quan hóa, phân tích, quản lý dữ liệu và quản trị hệ thống GIS" [ESRI 2022]

  • Đằng sau hậu trường, các thư viện này sử dụng ArcGIS Rest API để tương tác với các máy chủ ArcGIS Online và ArcGIS Enterprise
  • Theo đó, bạn sử dụng API ArcGIS cho Python khi làm việc với các dịch vụ và ứng dụng dựa trên internet thay vì khi làm việc với phần mềm máy tính để bàn ArcGIS Pro
  • Một thư viện tương tự cho JavaScript là ArcGIS API cho JavaScript
API ArcGIS cho Python

Mã ví dụ

Sau đây là chuỗi mã Python thể hiện việc sử dụng các hàm ArcPy

Kịch bản tưởng tượng là bạn làm việc cho sở giao thông vận tải thành phố. DOT đang có kế hoạch làm lại một con phố và muốn gửi các tờ rơi qua đường bưu điện mà các doanh nghiệp và người quản lý tòa nhà dân cư có thể đăng để khách hàng và cư dân có thể lên kế hoạch cho sự gián đoạn khi tiếp cận. Bạn cần tạo một danh sách địa chỉ của các doanh nghiệp và nhà ở trên hoặc gần dự án xây dựng

Thu thập dữ liệu

Dữ liệu được sử dụng trong ví dụ này sẽ là các điểm địa chỉ và đường trung tâm từ Trung tâm hồ sơ và dữ liệu mở của Quận Lake, Illinois https. //data-lakecountyil. dữ liệu mở. vòng cung. com/

  • Tìm kiếm và tải xuống các điểm địa chỉ. Định dạng này phải là Shapefile để giúp nhập dễ dàng hơn. Lake County sử dụng phép chiếu Web Mercator cho dữ liệu của họ, điều này có thể gây nhầm lẫn với các tệp CSV
  • Tìm kiếm và Tải xuống Street Centerlines. Định dạng phải là Shapefile để thể hiện đầy đủ các tính năng của đường
  • Sử dụng Windows Explorer để tìm thư mục Downloads
  • Mở. zip lưu trữ và giải nén CSV và shapefile
  • Nhấp chuột phải vào thư mục Tải xuống để có đường dẫn tệp đầy đủ. Trong ví dụ này, nó nằm trên ổ đĩa mạng bắt đầu bằng địa chỉ IP
Trình duyệt của bạn không hỗ trợ thẻ video. Đang tải xuống dữ liệu của Quận Lake

Bắt đầu một dự án mới

Tất cả dữ liệu nguồn và dữ liệu đầu ra sẽ được lưu giữ cùng nhau trong một dự án duy nhất

  • Từ màn hình mở bắt đầu một dự án mới với một bản đồ mới
  • Đặt cho dự án một cái tên ý nghĩa
  • Trong Dự án, Tùy chọn tìm thư mục dự án để bạn có thể biết nơi đặt tập lệnh
Trình duyệt của bạn không hỗ trợ thẻ video. Bắt đầu một dự án mới

Bắt đầu tập lệnh

Bắt đầu một kịch bản mới và lưu nó vào thư mục dự án chính

  • Mở trình soạn thảo Python. Ví dụ này sử dụng trình soạn thảo IDLE tiêu chuẩn đi kèm với cài đặt Python
  • Bắt đầu tập lệnh với các dòng nhận xét chứa mục đích của tập lệnh, lập trình viên [bạn] và ngày sửa đổi cuối cùng. Siêu dữ liệu này rất quan trọng để bạn hoặc ai đó kế thừa tập lệnh này sẽ biết nó sẽ làm gì trong tương lai
  • Lưu tập lệnh trong thư mục dự án
  • Dòng mã đầu tiên sẽ tải thư viện ArcPy
  • Tạo một biến cho dự án hiện tại bằng hàm ArcGISProject[]
  • Tạo một biến cho bản đồ đầu tiên trong dự án. Nếu bạn có nhiều bản đồ, có thể thêm tham số tên vào lệnh gọi hàm listMaps[]
# Example join script
# Michael Minn - 8/31/2022

import arcpy

aprx = arcpy.mp.ArcGISProject['current']

street_map = aprx.listMaps[][0]
Trình duyệt của bạn không hỗ trợ thẻ video. Bắt đầu một kịch bản mới

Nhập các Shapefile

Shapefiles có thể được thêm vào bản đồ bằng cách chuyển tên của. shp trong shapefile vào hàm ánh xạ addDataFromPath[]

  • data_path bạn sử dụng sẽ phụ thuộc vào vị trí của tệp hình dạng đã tải xuống của bạn
  • Lưu ý rằng vì Python sử dụng dấu gạch chéo ngược [\] làm ký tự thoát, nên bạn cần sử dụng dấu gạch chéo ngược kép thay cho dấu gạch chéo ngược đơn thông thường trong tên đường dẫn tệp của mình
  • Chúng tôi cũng đặt cho lớp một tên ngắn gọn hơn tên shapefile
data_path = "\\\\192.168.100.3\\DeptUsers\\minn2\\Downloads"

street_path = data_path + "\\Street_Centerlines.shp"

street_layer = street_map.addDataFromPath[street_path]

street_layer.name = "streets"

addr_path = data_path + "\\Address_Points.shp"

addr_layer = street_map.addDataFromPath[addr_path]

addr_layer.name = "addresses"
Trình duyệt của bạn không hỗ trợ thẻ video. Thêm một shapefile

Chọn tính năng tham gia

Truy vấn định nghĩa là "yêu cầu kiểm tra tính năng hoặc thuộc tính dạng bảng dựa trên tiêu chí do người dùng chọn và chỉ hiển thị những tính năng hoặc bản ghi đáp ứng tiêu chí" [ESRI 2022]

Truy vấn định nghĩa này chọn các khối 700 - 900 của Phố North Butrick

Các trường FromAddr_L và ToAddr_L trong tập dữ liệu này cho biết phạm vi số đường ở bên trái của từng tính năng đoạn đường. Tên chính xác của các tham số này có thể khác nhau tùy thuộc vào nguồn dữ liệu của bạn

street_layer.definitionQuery = "[WHOLE_NAME = 'N Butrick St'] AND [FromAddr_L >= 700] AND [ToAddr_L = 700] AND [ToAddr_L 

Chủ Đề