GIS用のPythonツール/モジュール/アドインをお探しですか?


31

ArcGIS 10では、PythonがESRIの事実上のスクリプト言語になりました。QGIS、GeoServerなどのオープンソースソフトウェアをリードするPostGISは、すべてPythonをサポートしています。したがって、GIS開発者だけでなくユーザーにとってもPythonを知る/学ぶことが重要になりました。

GISで重要なPythonのツール/モジュール/アドインのリストを作成できる人はいますか?


10
この質問は広すぎるため、PythonをサポートするGISで使用できるpythonパッケージに限定する必要があります。
暗闇

4
ArcPyは本当のPythonモジュールですか?
マッパーズ

2
@Mapperzそれは実際にはサイトパッケージです。前身arcgisscriptingはモジュールです。help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//…を
blah238

3
@underdark-素晴らしく幅広い質問があると便利だと思います。この場合、誰かがどのPythonツールセットを使用するかについてグーグル検索を開始したときに検索エンジンが見つける中心的なリソースを提供します。
GISジョナサン

2
広すぎる場合は+1。質問に対する最も関連性の高い回答は、[tag:python] + [tag:my-software]検索の最後に表示され、投票およびFAQタブでソートされます。ここでの答えはそれと一致することを決して望みません。
マットウィルキー

回答:


38
  • NumPy:NumPyは、Pythonを使用した科学計算の基本パッケージです。とりわけ以下が含まれます。

    • 強力なN次元配列オブジェクト
    • 洗練された(放送)機能
    • C / C ++とFortranコードを統合するためのツール
    • 便利な線形代数、フーリエ変換、および乱数機能

    NumPyは、明白な科学的用途に加えて、汎用データの効率的な多次元コンテナーとしても使用できます。任意のデータ型を定義できます。これにより、NumPyはさまざまなデータベースとシームレスかつ迅速に統合できます。

  • SciPy:SciPy(「Sigh Pie」と発音)は、数学、科学、工学用のオープンソースソフトウェアです。Pythonを使用した科学プログラミングに関する非常に人気のある会議の名前でもあります。scipyのダウンロードライブラリが依存するnumpyの、便利で高速なN次元配列操作を提供します。SciPyライブラリはNumPy配列で動作するように構築されており、数値の統合と最適化のためのルーチンなど、多くのユーザーフレンドリーで効率的な数値ルーチンを提供します。一緒に、それらはすべての一般的なオペレーティングシステムで実行され、インストールが迅速で、無料です。NumPyとSciPyは使いやすいですが、世界有数の科学者やエンジニアが頼りにするほど強力です。コンピューターで数値を操作して結果を表示または公開する必要がある場合は、SciPyを試してみてください!

  • Shapely:Shapelyは、平面幾何学オブジェクトの操作と分析のためのBSDライセンスのPythonパッケージです。これは、広く展開されているGEOS(PostGISのエンジン)およびJTS(GEOSの移植元)ライブラリに基づいています。このC依存関係は、超高速で実行する能力と引き換えになります。Shapelyは、データ形式や座標系には関係しませんが、あるパッケージと容易に統合できます。

  • GDAL Pythonバインディング:このPythonパッケージと拡張機能は、GDAL Geospatial Data Abstraction Library をプログラミングおよび操作するための多数のツールです。

  • GeoDjango: GeoDjangoは、世界クラスの地理的Webフレームワークになる予定です。その目標は、GIS Webアプリケーションをできるだけ簡単に構築し、空間的に有効化されたデータの力を活用することです。
  • PyProj
  • SpatialPython:よく文書化されたgithubリポジトリ。

この古い回答を見ている人のために、積極的に開発されたgeopandas.orgライブラリを追加します!
クリフグレイ

11

私自身の質問に答えるために、このPythonモジュールを見つけました。まだ使っていませんが、エキサイティングに見えます。

NetworkXは、複雑なネットワークの構造、ダイナミクス、機能の作成、操作、研究のためのPython言語ソフトウェアパッケージです。

そして

rtree -Python GISの空間インデックス


10

行くトピック::科学/工学:: GISは、 あなたがGISのためのすべてのPythonモジュール(シェープファイルを扱うため、ラスタ、KML、GML、GPXのジオコーディングなど)を持っているDND

最も重要なものはすでに引用されていますが、私はフィオナもお勧めし ます。フィオナは、オープンソースGISコミュニティの最も信頼できるジオデータアクセスライブラリへの最小限のシンプルなPythonインターフェイスを提供し、pyproj、Rtree、Shapelyなどの他のPython GISパッケージと容易に統合します

シェープファイルまたはNetworkxモジュールを使用したEsriフィーチャクラスを使用したネットワークジオメトリックネットワークジオプロセシング:「私が知る限り、ESRIはジオメトリックネットワーク用のジオプロセシングツールをリリースしていません」またはpgRoutingまたはPythonの代替:シェープファイルの変換方法フィーチャクラスESRI)トポロジネットワーク(グラフ)(フランス語)

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

Shapely、Fiona、GDAL / OGR、Pyshp、NetworkxなどをQGISとGRASS GISで問題なく使用します(インタラクティブなグラフ作成のためにmatplotlibまたはデカルトを使用)。彼らはしばしば治療に使いやすいアルゴリズムを持っています。

これらのモジュールの一部は、問題のあるArcPyでも使用できます。これは、ArcPyがバージョン1.3のNumpy(現在はバージョン1.6.1 ...)を使用しているため、ArcPyモジュールを壊さずに更新できないためです。



7

リストへの追加:

PySAL-「空間分析関数のオープンソースクロスプラットフォームライブラリ」

http://code.google.com/p/pysal/から入手可能

pyshp-純粋なPythonのPythonシェープファイルリーダーおよびライター

http://code.google.com/p/pyshp/から入手可能

編集:

誰かが今日私にこのモジュールを見せてくれました。Python用のサンプルGISベクトルとラスターデータ:

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


5

PDF形式のドキュメントをプログラムで作成するためのオープンソースPDFライブラリであるReportLab Toolkitを使用および推奨します。そのページで宣伝されているように、それは堅牢で、柔軟性があり、実績のある、業界の強さのソリューションです。Pythonで書かれた無料のオープンソースソフトウェアですが、その構文は私が今まで扱った中で最も簡単ではありません:-)

ArcGIS 10.0では、フィーチャクラスとテーブルからPDF形式でレポートを作成するのに非常に役立ちますが、ArcGISレポートライターからPDFレポートへのアクセスがArcPyで利用可能になった10.1では、この機能の一部はそれほど必要ではありません。


pdfgenパッケージを使用しますかplatypus?jpegとテキストでレポートを作成する必要がありますが、あまり凝っていません。
チャドクーパー

私はカモノハシを使用しますが、セルにテキストを含む表のみを出力する必要があります(画像はありません)。
PolyGeo


2

まだまだあります:

GRASS -GRASSをPythonで呼び出すことができます。

FMEObjects -FMEライセンスをお持ちの場合は、Pythonモジュールも用意されているため、クールなトランスフォーマーを呼び出すことができます。


本当に?私の知る限り、FMEObjectsにはトランスフォーマーを呼び出すためのPythonバインディングがありません。本当にしたかった。APIにアクセスできることと、そのAPIにアクセスする方法を知っている場合は、お知らせください。現時点で私の人生はずっと楽になります。
ケルトフルート

1

Enthought Package Distributionには、上記の多くのパッケージがまとまったプラットフォームにバンドルされています。彼らは、ArcGISのpythonプロンプトから動作するように簡単に構成arcpyでき、そのpythonプロンプトから使用できることも確認しました。これをオフィスで使用しています。内部ウィキから:

ArcGISとEPDを接続する最良の方法は、両方をインストールし、.pthファイルを使用してリンクし、Python sys.pathに他のシステムのモジュールが含まれるようにすることです。ファイル「zzEPD.pth」により、ArcGIS PythonはEPDモジュールにアクセスでき、「zzArcGIS.pth」によりEPD Pythonはarcpyにアクセスできます。(「zz」プレフィックスは、両方のPythonインストールに存在するモジュールの潜在的な競合を回避するために、「外部」パッケージがsys.pathに最後にあることを確認するためにあります。 txt( "zzEPD.pth.txt")およびArcGISを再起動すると、ArcGISはEPDモジュールを "見る"ことはなくなります(sys.pathにはありません)。

* zzEPD.pth-フォルダー\ Python27 \ Desktop10.1 \ lib \ site-packages *に配置

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

* zzArcGIS.pth-フォルダー\ Python27 \ epd32 \ lib \ site-packages *に配置

# 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

GISに固有ではありませんが、PythonのデバッグにIPDBは素晴らしいです。https://pypi.python.org/pypi/ipdb

それを使用するには、コードに次の行を配置するだけです。

import ipdb
ipdb.set_trace()

次に、Pythonシェルで任意のコードにドロップし、その現在の状態のすべての変数と対話できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.