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

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


4
ArcPyを使用して別のPythonスクリプト内でPythonパラメーター(パラメーター付き)を実行していますか?
AMLで使用される一般的なコーディングパターンは、別のAML内でAML(パラメーター付き)を実行することでした。 現在開発中のアプリケーションは、別のPythonスクリプト内で(パラメーターを使用して)Pythonスクリプトを実行できるという利点があります。 ただし、これはまったく簡単ではないようです。 ArcGIS 10を使用して、「内部の」Pythonスクリプトをパラメーターを持つArcGISツールにラップする実験を行っています。「外部の」Pythonスクリプトでarcpy.ImportToolboxを使用してツールボックスをインポートし、その中でツールを実行するのは簡単なことだと思いました。ただし、これまでのテストでは、「外部」スクリプトから「内部」ツールを実行しようとする試みはすべて、単に「内部」ツールをスキップするように見えます(エラーはスローされません)。 ここに、私が説明しようとしていることをよりよく説明するためのテストコードを示します。 私のtestinner.pyスクリプトは次のとおりです。 inputString = arcpy.GetParameterAsText(0) newFC = "C:\\Temp\\test.gdb\\" + inputString arcpy.Copy_management("C:\\Temp\\test.gdb\\test",newFC) 私のtestouter.pyスクリプトは次のとおりです。 import arcpy inputString1 = arcpy.GetParameterAsText(0) inputString2 = arcpy.GetParameterAsText(1) arcpy.ImportToolbox("C:\\Temp\\test.tbx") arcpy.testinner_test(inputString1) arcpy.testinner_test(inputString2) testinner.pyの場合、そのツールには単一のStringパラメーターが必要です。 testouter.pyの場合、そのツールには2つのStringパラメーターが必要です 2つのツールはtest.tbxに配置されます。 test.gdbには、testという名前の単一の空のフィーチャクラスが必要です。 上記を組み立てたら、パラメーターとして渡された「abc」などの文字列を使用してtestinnerツールを実行すると、フィーチャクラス「test」が「abc」という名前のクラスにコピーされます。 ただし、パラメーターとして「uvw」や「xyz」などの2つの文字列を使用してtestouterツールを実行しようとすると、testouter.py内のtestinnerツールは1回正常に実行されるように見えますが、Vista SP2上のArcMap 10 SP2を重大なアプリケーションエラーに送信します二度目にそれを使用しようとしています。 Windows XP SP3とArcGIS Desktop 10 SP2を使用した同じテストでも、同じ時点で深刻なアプリケーションエラーが発生します。

6
ArcPyをAnacondaと連携させるには?
私は「への答えにステップバイステップの指示に従うことをしようとしていますのArcGISでPythonのインストールを分離する方法」しかし、パスファイルを見つけることができないDTBGGP64.pthで、C:\Python27\ArcGIS10.2\Lib\site-packages。 誰かが同様の問題に直面していますか? arcpyがインストールされている場所をAnacondaに伝えるパスファイルを含めることで回避策がありますか?次のテキストを含む.pthファイルを作成しようとしました。 # .pth file for arcpy C:\Program Files (x86)\ArcGIS\Desktop10.2\bin C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy C:\Program Files (x86)\ArcGIS\Desktop10.2\Scripts それを保存しましたC:\Anaconda\Lib\site-packages(つまり、これが実際にすべてのパッケージが保存される場所である場合)が、次のエラーが表示されます。 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy\arcpy\__init__.py", line 21, in <module> from arcpy.geoprocessing import gp File "C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy\arcpy\geoprocessing\__init__.py", line 14, in <module> from …

1
ディスク上のファイルジオデータベースフィーチャクラスのサイズを取得する方法は?
フィーチャクラスが占めるハードドライブの容量を決定する簡単な方法はありますか? 単純なものが欠けているように感じますが、そうする方法は思い出せません。 ArcCatalogでデータセットを右クリックすると、自動的に実行されると思うでしょう。 私がこれまでにできた最善の方法は、Windowsエクスプローラーでgdb全体のサイズを取得することでした。 ArcCatalog UIでこれを行う方法がない場合でも、コードでこれを行う方法に興味があります。 何か案は?

3
ArcGIS SpatialReferenceオブジェクトファクトリコードはEPSG番号に対応していますか?
テキストファイルからジオメトリオブジェクトを読み込んでArcSDEに配置するプロジェクトがあります。これらのジオメトリオブジェクトにはEPSGコードが関連付けられており、作業を終えたときに正しい投影になるようにする方法を探しています。 私が取り組んでいるプロジェクトの興味のある工場コード(GCS GDA94; EPSG:4283およびVicGrid 94; EPSG:3111)を見てみると、EPSGコードはESRIに直接対応しているようです空間参照のファクトリコード(hereおよびhere)。これは素晴らしいことです。たとえば、以下のコードのように、投影ファイルに移動してSpatialReferenceオブジェクトを作成することを心配する必要はありません。 import arcpy # Create a spatial reference object using a factory code # sr = arcpy.SpatialReference() sr.factoryCode = int(epsg_code.lstrip("EPSG:")) sr.create() 残念ながら、これが常に当てはまるかどうかを示すための参照をESRIのドキュメントで見つけることができません。誰が私がどこで見つけることができるか知っていますか?


2
ArcPyを使用してArcMapドキュメントのバージョンを確認しますか?
ArcPyを使用して、マップドキュメント(MXD)のバージョンを識別する方法はありますか。MXDのインベントリを作成するソリューションに取り組んでおり、ドキュメントが8.1、9.2、10.0などであるかどうかを知りたい 現在ArcGIS 10.0を使用していますが、10.1に存在しないアップデートが10.1にある場合は、それも聞いていただければ幸いです。 ArcGISのバージョンをプログラムで見つけるにはどうすればよいかという以前の質問があります。、しかし、すべてのArcObjectsソリューションを参照します(これはpythonから呼び出すことができると思いますが、そうしない方がいいでしょう)。

5
arcpy.Select_analysis()のwhere句に変数を含めますか?
シェープファイルをループして、各機能を順番に選択し、それを一時的なシェープファイルにコピーして、ユニオン分析に含めようとしています。カーソルを使用して、可変の「名前」に設定している各機能のID名を見つけています。この変数をarcpy.Select_analysisのwhere句の一部として使用しようとすると、エラーが発生します。 ExecuteError:ERROR 999999:関数の実行エラー。無効なSQLステートメントが使用されました。無効なSQLステートメントが使用されました。実行に失敗しました(選択)。 私が使用しているコードは次のとおりです。 Name = 101 where = "\'\"StudyID\" = \\'"+str(Name)+"\\'\'" arcpy.Select_analysis("C:\\input.shp", "C:\\output.shp", where) 変数を使用せずに入力した場合: arcpy.Select_analysis("C:\\input.shp", "C:\\output.shp", '"StudyID" = \'101\'') それはうまくいきます 変数をsqlステートメントに合わせるために何をする必要がありますか?

6
GISインベントリを作成する方法は?
私のオフィスでは、GISセクションに大きな変化が見られます。このセクションは1980年代から運用されており、GISデータ(シェープファイル、ラスターファイル、データなど)の膨大なコレクションがありますが、インベントリを介したことはありません。今それが起こります。 GISデータに関するすべての情報(シェイプファイル、アーク情報カバレッジ、レイヤーファイル、*。mxd、gdb、ラスターファイルなど)をPCからExcelファイルに自動的に抽出する方法はありますか?情報には、作成日、最終編集日、フォルダまたはコンテナ名などが含まれます。

3
ArcPyで新しいグループレイヤーを追加しますか?
ArcGIS Desktop 10でPythonを使用してグループレイヤーを追加する方法はありますか? arcpy.mapping.AddLayerを使用できますが、これはグループレイヤーではなく実際のレイヤー専用です。 これまでのところ私はこれを持っています import arcpy mxd = arcpy.mapping.MapDocument("CURRENT") df = arcpy.mapping.listdataframes(mxd, "layers")[0] arcpy.mapping.AddLayer


8
ArcMapのPythonウィンドウでステートメントの実行を手動で中断する方法は?
ArcMapのPythonコンソールで長時間実行されているプロセスの実行を中断するにはどうすればよいですか? たとえば、以下のような長いイテレーションを開始したら、どのように中断しますか? for i in range(1, 50): # some long process which takes over a minute to complete コンソールウィンドウに入力したコードの実行中に、キーボードの組み合わせを押したり、ボタンなどをクリックして、いつでもプロセスを停止したいです。

1
ArcGIS 10.1 Pythonアドインマルチプロセッシングを使用すると、ArcMapがクラッシュしますか?
Pythonアドインツールからマルチプロセッシングタスクを実行したいと思います。私の問題は、プロセスが失敗し続けることです。基本的にArcMapをクラッシュさせます。 私の基本的なコードは次のとおりです。 def function(startOID, endOID, fc): wrksp = r"c:\temp\mp_addintest\data\test_%s.txt" % (int(startOID) + int(endOID)) # real logic removed to dumb it down with open(wrksp, 'w') as writer: writer.write("%s to %s from %s \n" % (startOID, endOID, fc)) return wrksp class btnMP(object): """Implementation for src_addin.MPButton (Button)""" def __init__(self): self.enabled = True self.checked …

6
ArcPyを使用してシェープファイル内の各ポリゴンの範囲を取得しますか?
ArcGIS 10およびPythonでは、シェープファイル内の各ポリゴンの範囲(xmax、ymax、xmin、ymin)情報を取得します。 を使用してシェープファイル全体の範囲を取得できます file=r"D:\SCRATCH\ARCGIS\100k_trc_tiles_TVM.shp" desc=arcpy.Describe(file) print desc.extent.Xmax 394551.52085039532 しかし、データセットの各行に同じ情報を取得する方法を理解することはできません。 rows = arcpy.SearchCursor("100k_trc_tiles_TVM") for row in rows: print row データセットの31行を印刷しますが、 for row in rows: desc=arcpy.Describe(row) print desc.extent.Xmax エラーが発生します。 実行時エラー:オブジェクト:入力値の説明が有効なタイプではありません 「ジオメトリの計算」を使用して範囲値をテーブルに追加することを考えていましたが、これは重心のみを提供します。次に、row.GetValue( "xmax")のようなものを使用できると思います。 とはいえ、http://www.ian-ko.com/free/free_arcgis.htmの関数を使用してX / Y、max / minを作成できることはわかっていますが、追加する必要がなければ、特に、ArcPyがこれらの値を取得できる場合。 基本的に、データセットのサイズが大きいために分割ツールが失敗するため、ジオプロセシングのために30のデータエリア(1:100,000マップシートによる)をクリップするために、エクステントをクリップツールに取り込む必要があります(Intersectが提供する理由を参照)エラー999999:関数の実行中にエラーが発生しました無効なトポロジ[行数の多いエンドポイント]?)。多くのデータセットで繰り返されるので、これを自動化したいです。 ===作業スクリプト=== # Emulates Arc Info SPLIT tool by using Clip but # Requires a …

2
Python / ArcPyを使用して、シェープファイルまたはフィーチャクラスをArcGIS Desktopのレイヤーとして追加しますか?
Pythonを使用して、ArcGIS Desktopのさまざまなタスク(ArcMapを一般的に使用)を自動化しようとしていますが、現在のマップにシェープファイルを追加する方法が必要です。(そして、それに対処しますが、それは別の話です)。 これまでにできる最善の方法は、次を使用して現在のマップにレイヤーファイルを追加することです(「addLayer」はレイヤーファイルオブジェクトです)。 def AddLayerFromLayerFile(addLayer): import arcpy mxd = arcpy.mapping.MapDocument("CURRENT") df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0] arcpy.mapping.AddLayer(df, addLayer, "AUTO_ARRANGE") arcpy.RefreshActiveView() arcpy.RefreshTOC() del mxd, df, addLayer ただし、私の生データは常にシェープファイルであるため、それらを開くことができる必要があります。(同等:シェープファイルを開かずにレイヤーファイルに変換しますが、私はそれを行わないことを望みます)。

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