PythonでジオプロセシングにArcPyを使用する業界ベースの例は?


12

最近、GIS Analyst / DeveloperがArcGISのジオプロセシングとArcPyサイトパッケージでPythonを使用して自動化しようとしている操作の種類について質問がありました。作成するものが業界に関連し、後で職場で再利用される可能性があることを確認するために、いくつかの演習を検索するときに知っておくと役立つと思います。

最も簡単な答えは「Esriヘルプを読んでサンプルを調べる」ことでしょうが、実装するのに最も一般的なより具体的なシナリオを探していました。したがって、共有ワークフローは、「シェープファイルを含む.zipファイルを取得し、Pythonを使用して解凍し、それらをすべてX座標系に投影し、ArcSDEジオデータベースにロードし、これらのデータへのアクセスをユーザーに許可する」ことを歓迎します。ワークフローを簡潔に説明してください。極端な詳細は必要ありません。

回答:


10

私にとって、あなたの質問が示唆するように、私は特にバッチ処理を自動化するためだけでなく、反復可能な専門家の計算を作成するためにもPythonを使用しています。最近では、フリーランスのGISコンサルタントとしてESRIライセンスを購入する余裕がないため、ArcPyを使用していません。GDAL / OGR、Shapely、PostGIS、Numpy、SciPyを頻繁に使用しますが、リストのすべてをArcPyで実行できます(一部はそうでした)。例は次のとおりです。

  1. 最初に2つの異なるデータタイプの20kmのラスタータイルをモザイク化し、それらのラスターでいくつかの「マップマティクス」を実行し、10kmのベクトルポリゴンタイルの同等の領域をマージし、ラスターマップと統計テーブルを元のベクターデータに結合してから、論理ディレクトリ構造のシェープファイルに出力し、クライアントのCDに書き込みます。
  2. 道路またはトラックに沿って100mごとに連続した可視性計算を実行し、計算の結果をM値としてルートデータに割り当てます。
  3. ラスターデータとベクターデータのタイルをモザイク化/マージし、必要な領域にクリップし、独自の(非GIS)3D形式に変換することにより、3Dランドスケープモデルを作成する自動プロセス。フリーランスの仕事では、このために開発した小さなPythonライブラリを多く使用しています。
  4. チームで取り組んだ1つの巨大なプロジェクトでは、ArcPyを使用してバッチプロセスを作成し、GISデータから新しいデータを、手続き型コンピューターゲームアセットジェネレーターで使用できる機能を備えた形式に変換または派生させました。ジオプロセシングスクリプトは、同じくPythonで記述され、Djangoを介して実行されるバッチ処理「スレーブドライバー」によって呼び出されました。
  5. Pythonは、特に反復がある場合(機能処理による機能など)、小さなタスクでも非常に便利です。ArcGISのモデルビルダーは、バージョン10で導入されたフロー制御により大幅に改善されていますが、それでも、必要な制御を提供できない場合や、ArcPyでプロセスを記述する方が、より速くて簡単ですモデルビルダーを強制します。
  6. Pythonでスイープパス解析を実行するツールを作成しました(非常に長い車両が特定のルートをたどることができるかどうか、およびトレーラーが建物の間の狭いターンでくさび止められる可能性があるかどうかを計算します。兵器庫。
  7. Mapnikからの出力の生成
  8. ArcGISがマルチスレッドになる前に、Pythonを使用してサブプロセスを生成しました。これにより、ArcMapのオーバーヘッドがメモリを乱すことなく、計算が長く、遅くなることがありました。

商業ジオプロセシングのPythonは、Pythonが提供するスクリプトのすべての速度と簡潔さ、およびコンパイルされたCスタイルコードの処理速度を備えているため、Pythonは優れています。Pythonは、多くの連続したジオプロセシングタスクをまとめて保持できる接着剤を提供します。上記のリストは、私が個人的に使用しているもののほんの一部です。「古き良き時代」では、Watchファイルを設定し、ArcInfoにコマンドライン入力を記録してから、AML(Arc Macro Language!を覚えている)をクリーンアップして、再利用可能なジオプロセシングコールのプロセスをAMLと結合します。最近では、PythonまたはC#を接着剤として使用することを除いて、それほど違いはありません。


1
面白いことに、私はこの質問(gis.stackexchange.com/questions/52478/…)に答えたばかりです。これは、ArcGISのメモリリークを破る方法としてPythonを使用する別の例を示しています。
MappaGnosis

+1、特に#4のGIS.SEブログトピックをご覧ください。
blah238

1
会社は現在は機能しておらず、しばらく前に退職しましたが、別の会社がIPを購入したので、自分がどれほど明確になるかわかりません。とにかく、あなたは上記の私のコメントのリンクの私の答えから、マルチプロセッシング側に関するいくつかの手がかりを得ることができます。ジオプロセシングファームには、16コアのマシン、2つの8コアサーバー、および約12の「リタイア」されたデュアルコアPCがすべてスレーブドライバーで実行されていたと付け加えることができます。ESRIは、ArcServerを使用していなかったため、私たちが何をしたかを見てもらうために、何人かを派遣しました。私たちはマシンを非常に激しく走らせて、2機が火をつけました!
MappaGnosis

7

どこから始めるか...私は現在、高等教育機関/州政府で働いているにもかかわらず、企業におけるPythonの巨大な支持者です。Pythonを使用したタスクの例を次に示します。

  1. データを移動します。定期的にデータを移動するような非常に単純なタスクは、Pythonを使用して、特にshutilモジュールからすぐに、非常に簡単に自動化できます。
  2. ArcSDEデータベースからシェープファイルにフィーチャクラスをエクスポートして、他のソフトウェアパッケージで使用できるようにします。多くの場合、ArcSDE(または他のリレーショナルデータベース)は組織のマスターレコードですが、すべてのソフトウェアパッケージがデータベースに接続できるわけではありません。多くのパッケージはまだ優れたoleシェープファイルを使用しますが、を使用するとarcpy、ユーザーが最新のデータを取得できるようにこれらを毎晩エクスポートするのは簡単です。
  3. 異なるデータセットから空間データセットを作成します。企業の誰もがExcelを使用して(そしてしばしば誤用して)データを保持しています。arcpy(または他のPython的な方法)は、空間的成分を有すること表形式のデータを取り、すぐにそこから空間データセットを作成するのは簡単です。テキストファイルについても同様です。私は最近、独自のXYZ形式のテキストファイルを読み取り、ZM対応のポリラインを作成するクライアント用のArcToolboxツールを作成しました(それ以上のものを共有することはできません)。
  4. GISデータを変換して、「空間」とは何かを知らないソフトウェアにフィードできるようにします。現在、GISデータセット(ラスター、ベクター)を取得し、そのデータをPython APIを介して3Dモデリングプログラムにプッシュするツールを作成しています。この3Dパッケージは、空間データ形式ではまったく機能しませんが、空間データの背後にあるテキスト値および属性では機能します。このarcpyために、ジオデータベースから情報を引き出して、テキストファイルまたはXML構成ファイルにプッシュします。
  5. データの取得。手に入れたデータのテーブルでウェブサイトをあなたが必要としますか?beautifulsoup抽出に使用します。取得する必要のある数百または数千のファイルがあるFTPサイトを取得しましたか?urllib2またはftplibを使用して簡単にダウンロードします。

これはほんの一例です。エンタープライズにおけるPythonの素晴らしい点は、マシンに対する完全な管理者権限がなくても、多くの場合、かなりのことを達成できることです。それをPythonの緩やかな学習曲線と読みやすさと組み合わせると、GIS Tech / Analyst向けの優れた自動化ツールが得られ、プログラミングの経験はあまりありません。


6

私は自治体で働いており、GISギャングはさまざまな部門(エンジニアリング、建築検査、条例、公園、消防など)をサポートしています。

  1. 小包と都市の住所情報を更新しています。 空間データと属性データの両方を操作するかなり長いスクリプトがあります。これには、さまざまなジオプロセシングツールを使用して空間処理を実行し、リレーショナルデータベースに接続して情報を取得してから空間データに結合することが含まれます。
  2. カスタムツール。一部の非GISスタッフ向けに 、新しいPythonアドインウィザードを使用してカスタムツールを作成しました。一部のスタッフは、空間データを読み取り、基本的な操作を実行する必要があります。ArcGIS環境の基本に触れることなく、必要なことを何でも実行できるツールバーを設計しました。

他の人が述べたように、これらはほんの数例です。

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