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

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

1
追加する前に、フィーチャクラスまたはテーブルに特定の名前のフィールドが含まれているかどうかを確認するにはどうすればよいですか?
シェープファイルに特定のフィールドがあるかどうか、およびフィールドを追加しないかどうかを確認するスクリプトを作成しようとしています。フィールドを表示するために取得しますが、ループは各フィールドを通過するため、指定されたフィールドが存在しない場合は常に新しいフィールドが作成されます。でもそこにあるなら、そこにあると言って欲しいし、新しいフィールドを作るのではないなら。これまでのところ私のコードはただ言う: "not filled in yet" "not filled in yet" "not filled in yet" "cities.shp" "not filled in yet" (この原因で出力されるフィールドは5つあります) これまでの私のコード: fieldList = arcpy.ListFields("cities.shp") for field in fieldList: if field.name == "CAPITAL": print "cities.shp" else: "then add new field"

3
ArcPyカーソルの背後で使用されているテクノロジーは何ですか?
ArcGIS Server 10.0を使用しています。arcpy検索、更新、カーソル挿入を使用したジオプロセシングがあります。これらのカーソルの背後にあるテクノロジーについて詳しく知りたいのですが。 データベースへの接続にドライバーまたはプールを使用していますか(Oracle 11gを使用しています)? カーソルの作成時に一度DBへの接続を開き、カーソルが削除されるとそれを閉じますか?トランザクションはどうですか? 行が更新または挿入されるたびに、カーソルは新しい接続とDBへのトランザクションを開きますか?

2
Esriサーバーで実行されているジオプロセシングスクリプトから現在のジョブIDにアクセスする方法
ESRI 10.2で実行されているジオプロセシングスクリプトの現在のジョブIDにプログラムでアクセスしたい。スクリプトは、スクリプトの呼び出し元ではなく、ジョブIDを知る必要があるものです。 検索中に、ジョブIDを使用してジョブ送信要求がどのように返されるかを示す例をたくさん見ました。これは私が欲しいものではありません。 サーバーで実行されているスクリプトで、ジョブIDをログに含めたいのですが、スクリプトでジョブを取得する方法がわかりません。最初にチェックしましたがarcpy.env、何も表示されませんでした。他にどこを見ればいいですか?

1
arcpyには、カーソル内の関連レコードにアクセスする方法はありますか?
サンプリングセグメントを表すラインフィーチャクラスがあります。リレーションシップクラスを使用してフィーチャクラスに接続されている同じジオデータベースにフィールドノートのデータテーブルがあります。 arcpyが関連レコードにアクセスするための組み込みメソッドはありますか?回避策は、2番目のテーブルに別のカーソルを追加することですが、データを関連付けるのに時間をかけると、関連するレコードにプログラムでアクセスするための迅速で簡単な方法があると思います。 ソフトウェア:ArcGIS 10.1

2
arcpyを使用して属性フィールドに値を追加する
属性テーブルの既存のフィールドに値を追加する必要があります。値は、同じ属性テーブルの別のフィールドの値によって決定されます。スクリプトの別のフィールドで値を定義できません。誰かがそれを手伝ってくれる?
8 arcpy 

3
PythonスクリプトがArcGIS(arcmapまたはサーバー上)またはスタンドアロンのPythonスクリプトから実行されているかどうかの確認
デバッグのために、スクリプトがスタンドアロンまたはArcGISツールとして実行されることを確認するハードコードされた条件を作成しました。とにかくこれを実行時に推測することはありますか?例:環境変数、グローバル変数など 例えば dryRun= 1 if dryRun: par= 'Hello' else: par= arcpy.GetParameterAsText(0) # Do something

3
Python-パス文字列のフォーマットとパスが存在するかどうかの確認
次のコードを使用して、パスが存在するかどうかを確認したいと思います。チェックしたいパスが、ArcMap 10.0ツールダイアログボックスのパラメーターを介してコードに渡されています。パラメータのデータタイプはフォルダです。このフォルダパスは、以下のコードでsys.argv [2]に渡されます。 {import sys import os if os.path.exists("%s"): %(sys.argv[2]) pass else: #Do Something Magical} 通常、フォルダーパスを明示的に指定していれば、このスクリプトで問題は発生しません。たとえば、次の3つのいずれもうまく機能し、私が必要とすることを行います。 os.path.exists("C:\\Data\\Hardwar\\Folder"): os.path.exists(r"C:\Data\Hardwar\Folder"): os.path.exists("C:/Data/Hardwar/Folder"): 上記のコードで私が見つけているのは、パス((C:\Data\Hardwar\Folder)がパラメーターからsys.argv [2]に渡されるときに、\の後の最初の文字がエスケープされ、正しくエスケープされていることです。 sys.argv [2]のパスをPythonの許容パス形式にフォーマットするにはどうすればよいですか?

1
IDLEでArcpyを使用して、消去機能の処理時間を短縮する
私は18,000のフィーチャクラス(ファイルGDBに保存)を処理しており、それぞれ海域で約500レコード(ポリゴンフィーチャ)を持っています。また、Erase関数を使用して、海岸と重なるエリアを削除するスクリプトを実行しています。スクリプトは正常に実行されていますが、文字どおり完了するまでに数日かかります。一部のファイルの処理には数秒かかります(これは、海岸線と重複していないことが確認されているためです)、一部のフィーチャクラスの処理には1時間以上かかります。 私は自分のコンピューターでローカルで作業し、32ビットWindows 7、3.33 GHz Intel DuoCore、4 GB RAMコンピューター上のArcGIS 10.1(すべてのライセンス)を使用してIDLEでスクリプトを実行しています。 私はPythonでロープを学んでいます。処理時間を短縮するために実行できる手順がある場合は、スクリプトのヒントを本当に感謝しています。ありがとうございました! # Import modules import arcpy import sys import os from arcpy import env arcpy.env.overwriteOutput = True print arcpy.env.overwriteOutput #Erase coastline from selected buffers. workspace = "C:\\DIR\\points_buff\\" arcpy.env.workspace = workspace erase_output = workspace+"erased.gdb\\" erasedirectorypath = "C:\\DIR\\points_buff\\selectedbuff.gdb" fileList = [] for dirpath, …

2
ArcGIS 10 / Pythonでポリゴンのスパイクを削除するにはどうすればよいですか?
下の図では、TINから抽出された急勾配を表すポリゴンレイヤーを確認できます。ポリゴンにはスパイクがたくさんあります。残りの境界線がまったく同じ場所にある間に、これらのスパイクを削除したいと思います。これは、Pythonスクリプトで、arcpy関数またはPython関数を使用して行います。 詳細情報:ArcGIS 10.0、Python 2.6.5、ポリゴンレイヤーはGDBにあります

2
arcpy.da.SearchCursorを使用して2番目のフィールドの一意の値を取得しますか?
フィーチャクラスがあり、arcpy.da.SearchCursorを使用して、フィールドの一意の値(名前など)を取得しています。このメソッドを使用して、別のフィールド(diffフィールド= Name2)の関連する行の値を取得するにはどうすればよいですか? これまでのところ、これを使用して、フィールド名のみで一意の値を取得します。 values = [row[0] for row in arcpy.da.SearchCursor(fc, ("Name"))] uniqueValues = set(values) for value in uniqueValues: フィーチャクラスを検索するときに、別のフィールド(フィールドName2)の値も取得するにはどうすればよいですか?
8 arcpy  cursor 


2
Pythonアドインツールを使用してArcMapでフィーチャを選択してコピーする
アドインのツールバーにツールを追加して、既存のフィーチャクラスからフィーチャを選択し、それらを別のフィーチャクラスにコピーしようとしています。ポイント用と長方形用の2つのツールが必要です。アドインツールは四角形のみを処理するため、onMouseDownイベントからポイント座標を生成し、取得したXおよびYフィードバックを使用しようとしています。問題は、これらの座標を機能の抽出に役立つものに渡すことができないように見えることです。環境エクステントを使用してから単純なCopyFeaturesを実行しようとしましたが、fc全体をコピーし、設定した環境設定を反映していないため、機能しません。 位置選択ツールに何らかの方法で座標を渡すことはできますか、またはその範囲で抽出するために座標を何かに渡す別の方法はありますか? これは私が今持っているものです: import arcpy import pythonaddins arcpy.overWriteOutput = True # Replace this with the SDE layer once it's available. global ELAtemplate, fc ELAtemplate = r'C:\Data\nsw_map_units.shp' fc = "" class DefineUnitsbyPoint(object): """Implementation for DefineUnitsbyPoint.tool (Tool)""" def __init__(self): self.enabled = True self.shape = "Rectangle" # Use onMouseDown to get initial extent …

3
同じフィーチャクラスの空間的に一致するフィーチャをマージする
互いに直接重なり合っているグリッドセル(ポリゴン15x15m)をプログラムでマージし、それらの属性のいくつかを追加する方法が必要です。 ArcGIS 10.1で、ポリゴンフィーチャクラスとして保存されたデータを使用しています。 データは、事前定義されたグリッド全体での歩行者調査の結果です。時々、歩行者調査を実施している人々は、コースから外れ、作業しているものに隣接する列または行に何かを記録します(またはGPS位置が移動します)。これにより、複数のGPSユニットからのデータが単一のフィーチャクラスに追加されると、各セルに対して2セットのデータが記録されます。各セルを調べて、重複する機能があるかどうかを確認し、それらの属性(整数、テキストなど)をマージして、マージされたデータを取得しなかった1つの機能を削除する方法が必要です。 「同一の削除」ツールと「同一の検索」ツールは、私が探していることを実行しません-フィーチャクラスには、10,000以上のフィーチャが含まれていることが多いため、手動で実行することはできません。 Pythonを使用してフィーチャクラスを反復処理し、その場所に重複するフィーチャがあるかどうかを確認する方法を知っています。どうすればよいかわからないのは、機能のマージと属性の更新です。誰かがこれを達成する方法について何らかの指示を提供できれば、私はそれを大いに感謝します。 編集-前/後の状態の詳細説明:下の図では、2つの機能が選択されています-同一の15x15メートルの正方形のポリゴン、すべての整数フィールド(プレフィックスとしてTOT_が付いているフィールド)を追加し、GPS_UNIT、INITIALSを追加する必要があります、およびREC_DATE文字列フィールド。 機能が直接重複しているため、表示するのは困難です。 編集2: XY中心を計算し、[X]& '、'&[Y]として文字列フィールドに連結して、データベースをアクセス可能にして、Find Duplicatesクエリを使用することで、重複するフィーチャを簡単に識別できることを発見しました複製されたセルを特定します。ただし、各セルの属性を1つの行にマージするための適切な方法を理解できていません。Pythonまたはデータベース環境でそれを行う方法のヘルプは大歓迎です!

2
Pythonを使用してラスターの範囲を取得する方法
保存して、抽出された範囲で別のラスターをクリップするためにそれを使用できるように、特定のラスターの範囲を取得する必要があります。今のところ、私は範囲の部分で立ち往生しています。 import arcpy from arcpy import env desc= arcpy.env.extent("D:\GIS @ UTD\Sem 1\GISC 6317\Lab\Lab 10\temp\Tahoe\Tahoe\Emer\erelev.grid") print desc 以下は、出力を示します0 0 0 0 NaN NaN NaN NaN。 助言がありますか。
8 raster  arcpy  clip  extents 

4
ArcpyのreplaceDataSourceエラー
ここで他の回答を確認しましたが、どれもうまくいきませんでした... これは、マップ内の名前でレイヤーを検索し、そのデータソースを変更するという「単純な」問題です。 これが私のスクリプトです: #-- New Source newSource = os.path.join(currDir, lyrZones + "_Dep" + dirNum + ".shp") #-- Validation if arcpy.Exists(newSource): print "The new source exists!" else: print "Not found!" #-- Find the layer and change its source for lyr in arcpy.mapping.ListLayers(mxd): if lyr.name == lyrZones: print "Layer found!" print layers.dataSource …
8 python  arcpy 

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