Tìm kiếm các công cụ / mô-đun / bổ trợ Python cho GIS?


31

Với ArcGIS 10, Python đã trở thành ngôn ngữ kịch bản thực tế cho ESRI. Trong khi các phần mềm nguồn mở hàng đầu như QGIS, GeoServer, PostGIS đều hỗ trợ Python. Do đó, điều quan trọng là phải biết / tìm hiểu Python cho các nhà phát triển GIS cũng như người dùng.

Bất cứ ai cũng có thể tạo một danh sách các công cụ / mô-đun / bổ trợ như vậy trong Python rất quan trọng trong GIS không?


10
Tôi nghĩ rằng câu hỏi này quá rộng và nên được giới hạn trong các gói python có thể được sử dụng trong bất kỳ hệ thống GIS nào có hỗ trợ Python.
underdark

4
ArcPy có phải là mô-đun Python thực sự không?
Mapperz

2
@Mapperz nó thực sự là một gói trang web. Người tiền nhiệm arcgisscriptinglà một mô-đun. Xem trợ giúp.arcgis.com/en/arcgisdesktop/10.0/help/index.html#// Đổi
blah238

3
@underdark - Tôi nghĩ rằng có một câu hỏi rộng có thể hữu ích. Trong trường hợp này, nó cung cấp một tài nguyên trung tâm mà các công cụ tìm kiếm sẽ tìm thấy khi ai đó bắt đầu tìm kiếm bộ công cụ python nào để sử dụng.
GIS-Jonathan

2
+1 cho quá rộng. Các câu trả lời phù hợp nhất cho câu hỏi sẽ được tìm thấy ở cuối [tag:python] + [tag:my-software]tìm kiếm và được sắp xếp thông qua các phiếu bầu và tab faq . Các câu trả lời ở đây không bao giờ có thể hy vọng phù hợp với điều đó.
matt wilkie

Câu trả lời:


38
  • NumPy : NumPy là gói cơ bản cho tính toán khoa học với Python. Nó chứa trong số những thứ khác:

    • một đối tượng mảng N chiều mạnh mẽ
    • chức năng (phát sóng) tinh vi
    • công cụ tích hợp mã C / C ++ và Fortran
    • đại số tuyến tính hữu ích, biến đổi Fourier và khả năng số ngẫu nhiên

    Bên cạnh những ứng dụng khoa học rõ ràng, NumPy cũng có thể được sử dụng như một kho chứa dữ liệu chung đa chiều hiệu quả. Kiểu dữ liệu tùy ý có thể được xác định. Điều này cho phép NumPy tích hợp liền mạch và nhanh chóng với nhiều loại cơ sở dữ liệu.

  • SciPy : SciPy (phát âm là "Sigh Pie") là phần mềm nguồn mở cho toán học, khoa học và kỹ thuật. Nó cũng là tên của một hội nghị rất phổ biến về lập trình khoa học với Python. Thư viện SciPy phụ thuộc vào NumPy, cung cấp thao tác mảng N chiều thuận tiện và nhanh chóng. Thư viện SciPy được xây dựng để hoạt động với các mảng NumPy và cung cấp nhiều thói quen số hiệu quả và thân thiện với người dùng như các thói quen để tích hợp và tối ưu hóa số. Cùng nhau, chúng chạy trên tất cả các hệ điều hành phổ biến, nhanh chóng cài đặt và miễn phí. NumPy và SciPy rất dễ sử dụng, nhưng đủ mạnh để phụ thuộc vào một số nhà khoa học và kỹ sư hàng đầu thế giới. Nếu bạn cần thao tác số trên máy tính và hiển thị hoặc công bố kết quả, hãy dùng thử SciPy!

  • Shapely : Shapely là gói Python được BSD cấp phép để thao tác và phân tích các đối tượng hình học phẳng. Nó dựa trên các thư viện GEOS (công cụ của PostGIS) và JTS (từ đó GEOS được chuyển). Sự phụ thuộc C này được giao dịch cho khả năng thực hiện với tốc độ nhanh. Shapely không quan tâm đến các định dạng dữ liệu hoặc hệ thống tọa độ, nhưng có thể dễ dàng tích hợp với các gói.

  • Các ràng buộc GDAL Python : Gói và tiện ích mở rộng Python này là một số công cụ để lập trình và thao tác Thư viện trừu tượng dữ liệu không gian địa lý GDAL .

  • GeoDjango: GeoDjango dự định là một khung Web địa lý đẳng cấp thế giới. Mục tiêu của nó là làm cho nó dễ dàng nhất có thể để xây dựng các ứng dụng Web GIS và khai thác sức mạnh của dữ liệu được kích hoạt không gian.
  • PyProj
  • SpatialPython : Kho lưu trữ github tài liệu độc đáo.

Tôi sẽ thêm thư viện geopandas.org được phát triển tích cực cho bất cứ ai nhìn vào câu trả lời cũ hơn này!
clifgray

11

Để trả lời câu hỏi của riêng tôi, tôi vừa tìm thấy mô-đun Pythons này. Mặc dù tôi chưa sử dụng nó, nhưng nó có vẻ thú vị.

NetworkX là gói phần mềm ngôn ngữ Python để tạo, thao tác và nghiên cứu cấu trúc, động lực và chức năng của các mạng phức tạp.

rtree - chỉ mục không gian cho Python GIS


10

đi tới Topic :: Khoa học / Kỹ thuật :: GIS bạn có tất cả các Mô-đun Python cho GIS (để làm việc với shapefiles, raster, KML, GML, GPX mã hóa, v.v.)

Điều quan trọng nhất đã được trích dẫn nhưng tôi cũng khuyên Fiona " Fiona cung cấp giao diện Python tối thiểu, không phức tạp cho thư viện truy cập geodata đáng tin cậy nhất của cộng đồng GIS và tích hợp dễ dàng với các gói Python Python khác như pyproj, Rtree và Shapely. "

và để kết nối với shapefiles hoặc Esri Feature Class với mô đun Networkx Công cụ địa lý mạng hình học : " Theo như tôi có thể nói, ESRI đã không phát hành bất kỳ công cụ xử lý địa lý nào cho Mạng hình học của họ " hoặc Giải pháp thay thế cho pgRouting hoặc Python: cách chuyển đổi một shapefile (hoặc tính năng lớp ESRI) trong mạng cấu trúc liên kết (biểu đồ) (bằng tiếng Pháp)

import networkx as nx
G = nx.read_shp('pointshapefile.shp')
print(G.nodes())
# result [(1.0, 2.0), (3.0, 2.0), (0.0, 0.0), (3.0, 1.0), (4.0, 4.0), (2.0, 1.0), (2.0, 4.0), (1.0, 3.0), (2.0, 3.0), (1.0, 4.0), (4.0, 3.0), (4.0, 2.0), (3.0, 4.0), (1.0, 1.0)]
print(G.edges())
# result [((1.0, 2.0), (1.0, 1.0)), ((3.0, 2.0), (2.0, 1.0)), ((3.0, 1.0), (2.0, 1.0)), ((4.0, 4.0), (3.0, 4.0)), ((2.0, 1.0), (1.0, 1.0)), ((2.0, 4.0), (2.0, 3.0)), ((1.0, 3.0), (1.0, 2.0)), ((2.0, 3.0), (1.0, 2.0)), ((1.0, 4.0), (1.0, 3.0)), ((4.0, 3.0), (4.0, 2.0)), ((4.0, 2.0), (3.0, 2.0)), ((3.0, 4.0), (2.0, 3.0)), ((1.0, 1.0), (0.0, 0.0))]

# shortest path
print(nx.astar_path(H,(1.0, 4.0),(4.0, 2.0),dist))
# result [(1.0, 4.0), (1.0, 3.0), (1.0, 2.0), (2.0, 3.0), (3.0, 2.0), (4.0, 2.0)]

# and so with all the algorithms of Networkx module
# you can also export the results in shapefile format

Tôi sử dụng Shapely, Fiona, GDAL / OGR, Pyshp, Networkx và những người khác trong QGIS và GRASS GIS mà không gặp vấn đề gì (và với matplotlib hoặc descartes để vẽ đồ thị tương tác). Họ thường có các thuật toán dễ sử dụng hơn để điều trị.

Một số mô-đun này cũng có thể được sử dụng trong ArcPy có vấn đề vì ArcPy sử dụng phiên bản 1.3 của Numpy, đã lỗi thời (hiện là phiên bản 1.6.1 ...) và bạn không thể cập nhật nó mà không phá vỡ mô-đun ArcPy.



7

Thêm vào danh sách:

PySAL - "thư viện đa nền tảng mã nguồn mở của các chức năng phân tích không gian"

có sẵn từ: http://code.google.com.vn/p/pysal/

pyshp - một người đọc và nhà văn shapefile python trong python thuần

có sẵn từ: http://code.google.com.vn/p/pyshp/

Chỉnh sửa:

Ai đó đã cho tôi xem mô-đun này ngày hôm nay, có thể là một số quan tâm đến mọi người. Mẫu dữ liệu vectơ và raster cho việc sử dụng python:

gonomata - http://pypi.python.org/pypi/gonomata/0.3.3


5

Tôi sử dụng và giới thiệu Bộ công cụ ReportLab , thư viện PDF nguồn mở để tạo lập trình các tài liệu ở định dạng PDF. Như được quảng cáo trên các trang của nó, nó là một giải pháp mạnh mẽ, linh hoạt, được chứng minh theo thời gian, sức mạnh của ngành. Đây là phần mềm mã nguồn mở miễn phí được viết bằng Python nhưng cú pháp của nó không phải là dễ nhất mà tôi từng xử lý :-)

Tại ArcGIS 10.0, việc viết báo cáo ở định dạng PDF từ các lớp và bảng tính năng là vô giá, mặc dù một số chức năng này có thể không cần thiết ở 10.1 khi quyền truy cập vào báo cáo PDF từ trình soạn thảo báo cáo ArcGIS có sẵn cho ArcPy.


Bạn có sử dụng pdfgengói hay platypuskhông? Tôi cần gen báo cáo với jpeg và văn bản, không có gì quá lạ mắt.
Chad Cooper

Tôi sử dụng thú mỏ vịt - và chỉ có yêu cầu xuất ra các bảng có văn bản trong các ô của chúng (không có hình ảnh).
PolyGeo

4

Trong thế giới Django:

  • vectorformats (để đánh dấu Geojson của chúng tôi vì geodjango không hỗ trợ nó nguyên bản);
  • Geraldo (để báo cáo, sử dụng ReportLab);

2

Còn nữa:

CỎ - Bạn có thể gọi GRASS bằng Python.

FMEObjects - Nếu bạn có giấy phép FME, họ cũng có một mô-đun python cho phép bạn gọi một số máy biến áp tuyệt vời của họ.


Có thật không? FMEObject theo hiểu biết của tôi không có ràng buộc Python để gọi máy biến áp. Tôi thực sự muốn nó đã làm. Nếu bạn biết rằng nó có và biết cách truy cập API đó, vui lòng cho chúng tôi biết. Nó sẽ làm cho cuộc sống của tôi dễ dàng hơn rất nhiều ở thời điểm hiện tại.
celticflute

1

Phân phối gói Enth think có rất nhiều gói được liệt kê ở trên được đóng gói thành một nền tảng gắn kết. Họ thậm chí còn đảm bảo rằng nó có thể dễ dàng được cấu hình để hoạt động từ dấu nhắc python của ArcGIS và arcpycó thể được sử dụng từ dấu nhắc python của nó. Chúng tôi sử dụng điều này trong văn phòng của chúng tôi. Từ wiki nội bộ của chúng tôi:

Cách tốt nhất để kết nối ArcGIS và EPD là cài đặt cả hai và liên kết chúng bằng các tệp .pth để Python sys.path bao gồm các mô-đun của hệ thống khác. Tệp "zzEPD.pth" cho phép ArcGIS Python truy cập các mô-đun EPD và "zzArcGIS.pth" cho phép EPD Python truy cập arcpy. (Tiền tố "zz" ở đó để đảm bảo rằng các gói "nước ngoài" tồn tại trong sys.path để tránh xung đột tiềm tàng cho các mô-đun tồn tại trong cả hai bản cài đặt Python.) Nếu bạn gặp phải xung đột ArcGIS, chỉ cần đổi tên tệp thành. txt ("zzEPD.pth.txt") và khởi động lại ArcGIS và ArcGIS sẽ không còn "nhìn thấy" các mô-đun EPD (chúng sẽ không nằm trong sys.path).

* zzEPD.pth - đặt trong thư mục \ Python27 \ Desktop10.1 \ lib \ site-gói *

# zzEPD.pth 
# Path to Enthought modules
C:\Python27\epd32\lib\site-packages

* zzArcGIS.pth - đặt trong thư mục \ Python27 \ epd32 \ lib \ site-gói *

# zzArcGIS.pth 
# copy of \Python27\Desktop10.1\lib\site-packages\ArcGIS.pth
C:\ArcGIS\Desktop10.1\bin
C:\ArcGIS\Desktop10.1\arcpy
C:\ArcGIS\Desktop10.1\ArcToolbox\Scripts

1

Không cụ thể đối với GIS, nhưng để gỡ lỗi python, IPDBthật tuyệt vời. https://pypi.python.org/pypi/ipdb

Để sử dụng nó, chỉ cần đặt các dòng sau trong mã của bạn:

import ipdb
ipdb.set_trace()

Sau đó, trong trình bao Python của bạn, bạn có thể thả vào bất kỳ đoạn mã nào và tương tác với tất cả các biến ở trạng thái hiện tại.

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.