タグ付けされた質問 「arcpy」

Esriによって作成されたサイトパッケージで、ArcGIS Desktop(ArcMapおよびArcGIS Pro)のジオプロセシング、マッピングなどをPythonに公開します。

6
PythonスクリプティングでModelBuilderを使用する場合、またはその逆の場合
私はArcGISでPythonスクリプトを書くのは初めてですが、ModelBuilderを使うのは初めてではありません。 PythonとModelBuilderの利点を知りたいです。 ModelBuilderを使用するのではなく、GISオートメーション用のPythonスクリプトを作成する必要があるのはいつですか? ModelBuilderにはないPythonの自動化機能とは何ですか?

5
ArcPyスクリプトをデバッグしますか?
ArcGIS 10でArcPyを使用して多くのPythonスクリプトを記述しましたが、これまでのところ、デバッグの唯一の手段はを使用してジオプロセシング結果ウィンドウにメッセージを出力することだけarcpy.AddMessage()です。 ブレークポイントの設定など、他のオプションはありますか? ジェイソンの方法はすばらしい。検証など、ツールボックスにバグがある場合、ツールボックスがエンコードされているため、IDEで問題を特定できない可能性があります。少なくともWINGはそれを特定できませんでした。

4
ArcGISScriptingおよび大規模な空間データセットのパフォーマンス
現在、arcgisscriptingモジュールを使用して、少数のテーブル(合計8つ)で正規化されたかなり大きなデータセット(合計で約10,000レコード)を処理するPythonスクリプトを作成しています。このプロセスは、座標タプル(x、y)に基づいて機能を作成し、他の7つの表にある関係を使用してグラフ(ノードと線)を作成することで構成されます。最終的な出力は、関係を視覚的に表すノードおよびエッジの空間データセットを持つパーソナルジオデータベース(pgdb / fgdb)です。 私の最初の試みは、新しいジオデータベーステーブルとSearchCursorレコードセットのクエリを使用して、発生する多対多のリレーションシップのリンクテーブル(InsertCursor)を作成することでした。15〜20分の処理時間を除いて、これは非常にうまく機能しました。 PythonでcProfilerモジュールを使用すると、検索クエリを実行してリンクテーブルにカーソル(検索カーソルと挿入カーソル)の要求を取り込むときにパーソナルジオデータベースを「スラッシング」すると、パフォーマンスがひどくなります。 少しのリファクタリングで、処理時間を2.5分未満に抑えることができました。トレードオフは、コードでのジオデータベーススキーマの部分的な構築と、すべての関係が照合された後のarcgisscriptingカーソルの要求をInsertCursorsに制限することでした。 私の質問はパフォーマンスです。 大規模なデータセットを扱う際に、合理的な計算時間を維持するために人々が使用したテクニックは何ですか? 最適化の検索で見逃したESRI推奨の方法はありますか? 特にパーソナルジオデータベースからの場合は、アークギスクリプティングカーソルを作成するときに発生するオーバーヘッドを理解していますが、このサイトとGoogleからパフォーマンスに関連する回答を長時間検索した後、パフォーマンスは人々の努力の最前線ではないという印象を受けています。 ESRI製品のユーザーとして、これらのパフォーマンスラグを予想し、容認しますか? 更新 この製品でいくつかの作業を行った後、空間情報を適切な形式からジオデータベースに変換するプロセスを採用した最適化手法のリストを蓄積しました。これは、パーソナルジオデータベースおよびファイルジオデータベース用に開発されました。ちょっとしたこと: データを読み取り、メモリ内で合理化します。これにより、時間を半分に短縮できます。 メモリ内にフィーチャクラスとテーブルを作成します。フィーチャデータセットキーワーク「in_memory」を使用してメモリをRAMディスクとして使用し、そこで機能を実行してからディスクに書き込みます ディスクに書き出すには、フィーチャクラスにはCopyFeatureclassを使用し、テーブルにはCopyRowを使用します。 これら3つのことには、100,000以上のフィーチャを30分から30〜40秒にジオデータベースに変換するスクリプトが必要でした。これには、リレーションシップクラスが含まれます。それらは軽く使用されるべきではありません。上記の方法のほとんどは大量のメモリを使用するため、注意を払っていないと問題が発生する可能性があります。



2
ビッグデータ用のPythonコードの合理化
次のワークフローでポイントシェープファイルを取得するように設計されたPythonコードがあります。 ポイントをマージ 互いに1 m以内のポイントが1つのポイントになるようにポイントを統合します フィーチャレイヤーを作成します。z<10のポイントが選択されています バッファポイント ポリゴンからラスター1mの解像度 再分類、ここで1-9 = 1; NoData = 0 各シェープファイルには、約5x7 kmをカバーする約250,000〜350,000ポイントがあります。入力として使用されるポイントデータは、ツリーの位置を表します。各ポイント(つまりツリー)には、クラウン半径を表す「z」値が関連付けられており、バッファプロセスで使用されます。私の目的は、最終的なバイナリ出力を別のプロセスで使用して、天蓋カバーを記述するラスターを作成することです。 4つのシェープファイルでテストを実行したところ、700MBのラスターが生成され、35分かかりました(i5プロセッサと8GB RAM)。このプロセスを3500個のシェープファイルで実行する必要があるので、プロセスを合理化するためのアドバイスをいただければ幸いです(添付コードを参照)。一般的に、ジオプロセシングビッグデータを処理する最良の方法は何ですか?より具体的には、効率を高めるのに役立つ可能性のあるコードまたはワークフローの調整はありますか? 編集: ジオプロセシングタスクの時間(全体の%): マージ= 7.6% 積分= 7.1% Lyrへの機能= 0 バッファー= 8.8% ポリゴンからラスター= 74.8% 再分類= 1.6% # Import arcpy module import arcpy # Check out any necessary licenses arcpy.CheckOutExtension("spatial") # Script arguments temp4 = arcpy.GetParameterAsText(0) …


3
ArcGIS“ in_memory”ワークスペースの適切な構文と使用法は何ですか?
in_memoryArcGISでワークスペースを最適に使用する方法がわかりません。このテーマで見つけた最良のリソースは、ESRIの「インメモリワークスペースの使用」です。残念ながら、ヘルプセクションはあまり有益ではありません。また、このサイトには、こことここのテーマについて簡単に触れた投稿があります。 私の特定の質問: in_memoryArcGIS / arcpyベースのスクリプトでワークスペースを使用するための適切な使用法と構文は何ですか? あるin_memoryワークスペースは、例えば、使用してレイヤーを作成し、同じarcpy.MakeFeatureLayer_management()? in_memoryスクリプトの最後にワークスペースを削除するなどの標準はありますか?

6
ArcGISツールとして実行されるPythonスクリプトを高速化する方法[非公開]
これは非常に一般的な質問です。ツールボックスにインポートして実行するarcpyスクリプトを高速化するために、GISプログラマーがどのようなヒントとコツを使用したのかと思っています。 私はほとんど毎日、小さなスクリプトを書いて、オフィスの非GISユーザーがGISデータを処理できるようにしています。一般的に、ArcGIS 10.0の処理は9.3.1よりも遅く、Pythonスクリプトを実行するとさらに遅くなることがあります。 実行に24時間以上かかるスクリプトの特定の例をリストします。これは、バッファ内の各形状について、バッファ内のラスタの領域を集計するループです。バッファーには約7000の形状があります。私はそれがこれほど長く続くとは思わない。A while x <= layerRecords: arcpy.SetProgressorLabel("Tabulating Row: " + str(x) + " of " + str(ELClayerRecords)) arcpy.SelectLayerByAttribute_management(Buff,"NEW_SELECTION", "Recno = " + str(x)) # Selecting the record TabulateArea(Buff, "Recno", MatGRID, "VALUE", ScratchWS + "/tab" + str(z) +".dbf", nMatGRIDc) # Tabulate the area of the single row arcpy.AddMessage (" …

6
ArcMapで複数のシェープファイルの投影を定義しますか?
.prjファイルを持たない100以上のシェープファイルがあるため、ArcMap 10に取り込むと、座標系が不明として表示されます。すべてのシェイプファイルの座標系がGCS WGS 1984であることを知っています。また、Define Projection GPツールを使用して各ファイルに座標系を個別に割り当てることができますが、それは永遠にかかります。 これらをバッチ定義するGPツールがあればいいのにと思っていましたが、見当たりません。次に、Pythonを使用してこれを行うことができると考えていたので、ヘルプメニューを見てスクリプトを見つけましたが、エラーが発生しました。 ここに私が試したPythonコードがあります(これは単一のshpファイル用ですので、各ファイルの名前を入力するのはまだ苦労します: import arcpy infc = r"C:\Documents and Settings\User\My Documents\ArcGIS\shpfiles\Site_2.shp" prjfile = r"<install directory>\Coordinate Systems\Geographic Coordinate Systems\World\WGS 1984.prj" arcpy.DefineProjection_management(infc, prjfile)

6
ラスタピクセルを値でバッファする方法は?
左側のピクセルは、ツリーの位置とそれに関連するクラウン半径(つまり、2〜5の範囲のピクセル値)を表します。これらのラスターピクセルをクラウン半径値でバッファリングしたいと思います。右の画像はラスタ処理方法のみを使用して達成したいものです。 近隣設定は固定値ですが、可変サイズのクラウン半径は考慮されませんが、最初はArcGISで円形の焦点和を使用することを考えます。 値でピクセルを「バッファリング」するのに良い方法は何ですか?

4
ArcPyを呼び出すことができる個別のPythonインストールを作成しますか?
オリジナルのArcGIS pythonインストールを「壊す」ことなく、arcpyを使用できる個別のPythonインストール(AnacondaやPython XYディストリビューションなど)を作成する方法を尋ねるQ&Aがたくさんあります。 私はこれと同じ問題を抱えていましたが、「普遍的な」解決策を見つけたと思います。これまでのところ、作業中の約8台のコンピューターでこれを実行しましたが、すべて正常に動作します。 ArcGISを使用できる別のPythonディストリビューションをインストールする方法は?

5
ArcMapを実行せずにPythonでArcGISの機能を使用します(たとえば、別のエディター/環境)。
Pythonを使用したArcGISのプログラミングで次のステップに進み、ArcMapをロードしてPythonウィンドウに貼り付けなくてもスクリプト/コードを実際に実行できるかどうかを確認しようとしています。このビューを、ArcGISから何かを読み込むPython固有のIDEのようなものにすることを想像します。 これを行うにはどうすればよいですか? 更新:ソリューションの概要 Eclipse + PyDevルートに行きました。すべてをインストールして動作させるための注意事項を次に示します。 Eclipseをダウンロードする これは、使用可能なすべての異なるフレーバー(Java、Java EE、C / C ++など)を考えると、少し混乱します。私はC / C ++を使いました。PyDevはこのステップの後にインストールされるため、実際には問題ではありません。欲しいものを選んでください。 PyDevをインストールする PyDevはEclipseを介してインストールされます。リンクされた指示は完全に機能しました。 PyDevを構成する 上記の質問はWindows構成のスクリーンショットを提供しますが、ESRIブログからのこのリンクは2008年のものですが、Unixシステムの詳細情報を提供しています。 テストスクリプトを実行しました 私が取り組んでいたスクリプトを起動し、それが機能しました。シェープファイルやワークスペースなどへのアクセス方法には、この方法でコードを実行する際にいくつかの違いがあるようです。より明確にする必要があります。詳細についてはこちらをご覧ください。

3
PythonスクリプトツールよりもPythonツールボックスを学習/使用する理由 [閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 2年前に閉店。 いくつかのPythonツールボックス(ArcGIS 10.1で新しく追加)を作成しましたが、標準のツールボックスにPythonスクリプトツールではなく、いつ作成するかをまだ決定していません。 オンラインヘルプは、ドットポイントの前に次の文字を追加すると、私を啓発するかもしれないと思いました。 作成後、Pythonツールボックスのツールは多くの利点を提供します ただし、リストされている5つの利点はすべて、Pythonを使用してツールを作成できないことよりも優れているようであり、PythonスクリプトツールよりもPythonツールボックスの利点を明確に示しているものはありません。 私が考えることができる2つの利点は次のとおりです。 単一のPythonスクリプトで「純粋な」Pythonツールを記述できるようになりました。ツール検証が追加されたように見える個別に作成されたダイアログに接続する必要はありません。 コード(Pythonまたはテキストファイルを記述できる任意の言語)を使用してPythonツールボックスの記述を自動化できるようになりましたが、これを行うための要件はまだありません。 EsriがPython Toolbox機能を提供するきっかけとなった説得力のあるケースを見落としていますか?

4
フィーチャデータセット内を含め、ファイルジオデータベース内のすべてのフィーチャクラスをリストしますか?
pythonから、ファイルジオデータベース(* .gdb)内のすべてのフィーチャクラスのリストを作成するにはどうすればよいですか?の標準例のみリストは、ジオデータベースのトップレベルでクラスを備えています: import arcgisscripting, os gp = arcgisscripting.create(9.3) gp.workspace = 'd:\scratch.gdb' fcs = gp.ListFeatureClasses() for fc in fcs: print fc 回答が適用されるArcGIS Desktopのバージョンを指定してください(9.3を探していますが、すべてのバージョンを1か所で収集することもできます)。
24 arcpy  arcgis-9.3 

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