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

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

2
ジオプロセシング速度テストの異常な結果
Pythonジオプロセシングスクリプトで異常なパフォーマンスを観測しています。(添付)スクリプトは、次のアクションを実行します。 検索カーソルを使用して、ポリゴンフィーチャに対応するUTMゾーンを検索します 検索カーソルの結果に基づいて空間参照オブジェクトを作成する .csvをフィーチャレイヤーに変換してからポイントフィーチャクラスに変換する スクリプトの実行方法に基づいて、処理時間が著しく異なることに気付きました。 IDLEを使用した32ビット処理= 203秒 32ビット処理フォアグラウンドスクリプトツール = 91秒 64ビット処理のバックグラウンドスクリプトツール = 206秒 上記の条件でこのスクリプトのパフォーマンスが異なるのはなぜですか? フォアグラウンドで実行される32ビットスクリプトツールが他のメソッドの2倍の速さで動作することは期待できません。 import arcpy, os, time ###IDLE Parameters ##fc = r'C:\path\to\polygon\fc\with\utm\zones\and\features' ##outws = r'C:\out\location' ##arcpy.env.workspace = r'C:\workspace' #################### ## Script tool parameters fc = arcpy.GetParameterAsText(0) # Feature class outws = arcpy.GetParameterAsText(1) # Folder arcpy.env.workspace = arcpy.GetParameterAsText(2) # …

6
Pythonスクリプトが引き続き実行されるかどうかをテストするために、ArcGIS Desktopライセンスを低いレベルに設定しますか?
クライアントに渡す必要があるPythonスクリプトがあります。 現在、ソフトウェア取得の目的でスクリプトを実行するためにクライアントが必要とするライセンスレベルを評価しています。 当社にはすべてArcGIS 10.1 Advancedライセンスがあります。 スクリプトで使用されているすべてのツールと拡張機能をWebヘルプと照合したところ、標準ライセンスレベルで動作するはずです。 標準のライセンスレベルが社内または会社にない場合(上位の上級レベルのみ)、スクリプトを標準ライセンスレベルに対してテストする方法はありますか?

3
ArcGIS for Desktopを使用してフィールドで重複レコードを検索しますか?
「ID」と呼ばれる属性に基づいて、dbfファイル内の重複レコードを探しています。50万レコードから150万レコードまでのさまざまなdbfファイルがあり、多数の重複があることを知っています。 ID属性が他の場所にある場合に、「はい」または「いいえ」(または1または0で十分)と表示されるフィールド「重複」を追加したいと思います。Field Calculatorで次のPythonスクリプトを使用すると、重複するエントリに対して1が返され、一意のエントリに対して0が返されます。 uniqueList = [] def isDuplicate(inValue): if inValue in uniqueList: return 1 else: uniqueList.append(inValue) return 0 isDuplicate(!FIELD_NAME!) ただし、たとえば5つの重複IDの最初のレコードも0として返されます(後続の4つは重複と見なされます)。IDが他の場所に存在するため、5つすべてを重複としてマークする必要があります。 次のコードを使用すると、そのIDが何回発生したかを増分カウントできます。1は1回目を意味し、以下同様です。 UniqueDict = {} def isDuplicateIndex(inValue): UniqueDict.setdefault(inValue,0) UniqueDict[inValue] += 1 return UniqueDict[inValue] isDuplicateIndex( !YOUR_FIELD! ) そのレコードのIDが他の場所に存在する場合は、1(または[はい])が必要です。(ArcGISバージョン10.1) 重複レコードを特定するためのPythonスクリプト(フォローアップ)などの他の回答を見てきましたが、うまくいきません。

4
ラスター処理を使用してポイントが囲まれているかどうかを判断する
自然災害モデルのために、現在非常に厄介なベクター/ Pythonプロセスを改善しようとしています。現時点では、特定のポイントからの距離/方位線を生成して決定する長いスクリプトがあります。 交差するポリゴンのタイプ(森、草、沼など) そのポリゴンまでの距離 これらの線のどれだけがポリゴンと交差し、どれだけ「囲まれている」かを決定します。 より多くの関与がありますが、それはそれの要点です。私はこれを改善する方法を見つけようとしていて、現在パート3で困惑しています。アイデアは、ポイントがポリゴンで完全に囲まれているかどうか、たとえば200m以内かどうかを判断することです そのため、添付画像では、ポリゴンで完全に囲まれているため、ポイントAをポイントBよりもリスクが高いとマーク付けします。これは約1300万ポイント繰り返されるため、簡単な作業ではありません。スクリプトを実行するのではなく、値を導出するためのサーフェスを用意します。これを行うには、水文学のツールやコストパスのバリエーションが必要だと思いますが、頭を悩ませることはできません。 これについてどうすればいいですか?


4
ArcPyを使用してArcSDEジオデータベースをファイルジオデータベースにコピーしますか?
SDEデータベースの正確なコピー(ドメイン、フィーチャデータセット、フィーチャクラスなど)をファイルジオデータベースに作成したいと考えています。 私は以下を含むいくつかの可能性を試しました: コピー(データ管理)プロセスの使用 新しいGDBを作成し、SDEから各フィーチャデータセットを手動でコピーする SDEからxmlワークスペースドキュメントをエクスポートし、GDBにインポートする このCopy_managementプロセスは、SDEをGDBにコピーする場合には機能しないようです。これは、入力と出力のデータ型が一致している必要があるためです。 各フィーチャデータセットを新しいGDBにインポートするプロセスは、各フィーチャデータセットを反復処理することで、おそらくCopy_managementを使用して自動化できますが、いずれかのプロセスでエラーが発生した場合、不完全なコピーの問題が発生する可能性があります。 XMLワークスペースのエクスポートとインポートは機能するようですが、このプロセスを大規模なジオデータベースで使用すると、非常に大きなファイルが作成されます。 自動化できる方法で、SDEのコンテンツとスキーマをGDBにコピーする方法として、前述の方法よりも簡単な方法はありますか? そうでない場合、上記の可能性をこのプロセスで使用すべきでない理由はありますか?

2
ArcPyを使用してファイルジオデータベースに真の曲線楕円ポリゴンを生成しますか?
背景として、この質問は、Table To Ellipseツールから出力されたラインからオーバーラップポリゴンを生成する方法に関する質問に答えようとすることから生じました。 ArcMap 10.1 GUIを使用すると、楕円作成ツールを使用して実際のカーブポリゴンをファイルジオデータベースフィーチャクラスにデジタル化するのは非常に簡単ですが... 中心点、主軸、副軸、およびそれぞれの方位角を含むテーブルから行(arcpy.da.SearchCursor)を読み取りながら、真の曲線楕円ポリゴンを書き込むことはできますか? これを行うためにarcpy.da.InsertCursorで使用できるトークンがあることを期待していましたがSHAPE@、Geometryオブジェクトがサポートするものによって制限されているようで、実際の曲線が含まれていないようです。

5
ArcMapの結合フィールドをプログラムで識別しますか?
ArcMapで2つのデータセットをテーブル結合するために使用されている結合フィールドをプログラムで識別することは可能ですか?現在、ArcGIS 10.0、SP5を使用しており、ArcPyソリューションを希望しますが、ArcPyソリューションが利用できない場合でも、他のソリューションに反対することはありません。 私が試した方法の1つは、すべてのフィールドをループして、一致する「baseName」を探すことでしたが、これは、両方のデータベースのフィールド名が同じであることを期待している「教育的な推測」にすぎません。 私が求めているものをグラフィックで表現するために、基本的には「結合の追加」ダイアログに表示される「入力結合フィールド」と「出力結合フィールド」を識別したいと思いますが、もちろん事後です。 これは、「参加」をプログラムで検出できるかどうかに関するタグ付きの質問です。、しかしこの場合、2つ(またはそれ以上)のデータセットを結合するために使用されているFIELDを識別する機能を拡張したいと思います。

6
図形の数=テーブルレコードの数かどうかをプログラムで確認する方法
破損しているシェープファイルが約1000個あります(添付のエラーメッセージを参照)。シェープファイルはeCognition Developer 8から生成されました。シェープファイルが破損していると識別されると、シェープファイルを修復するように見えるスクリプトツールがあります。 編集: すべてのシェープファイルをループして、シェイプの数がテーブルレコードと一致するかどうかを確認する簡単なスクリプトを作成したいと思います。以下を使用してテーブルレコードをカウントできます。 # Name: fcCount.py # Purpose: calculate the number of features in a featureclass # Import system modules import arcpy from arcpy import env env.workspace = "C:/data" Sample = "MyShp.shp" result_dbf = int(arcpy.GetCount_management(Sample).getOutput(0)) print result_dbf 最終的には、次のようなロジックチェックを作成します。 if result_dbf = result_shp: pass else: print "There is a …

3
arcpyがデスクトップとサーバーのどちらで実行されているかを検出できますか?
ArcGIS Server Webサービスとスタンドアロンスクリプトの両方として実行するコードを開発しています。AGS Webサービスとして実行されているか、スタンドアロンのpython / within Desktopとして実行されているかに応じて、実行をわずかに変更できるようにしたい。 これを検出する方法はありますか? いくつか検索を行いましたが、満足できるものは何も見つかりませんでした。私が見てきたarcpy.mapping.CreateGISServerConnectionFileを、しかし、現在の環境をチェックするとは対照的に、サーバにこのセットを接続。また、AGSでサービスがどのように実行されるかについての情報(たとえばthis)も探しましたが、arcpy.isWebService()タイプの関数の行に沿って何も表示されません。環境をチェックするだけでよいですか(「%scratchFolder%が設定されているかどうか、またはsys.argvに関連するものを調べているかどうか」など)?不安定なソリューションのようです。

1
PythonウィンドウとPythonスクリプトツールのパフォーマンスに違いはありますか?
PythonウィンドウでPythonスクリプトを実行する場合と、ArcGIS Desktop 10.0のツールボックスからPythonスクリプトツールとして実行する場合で、パフォーマンスに違いはありますか? ArcPyを使用してArcGISを実行する必要がある場合があります。私の最近の経験では、ツールボックスとpythonウィンドウで同じスクリプトを実行でき、ツールボックスは少し高速のようです。

3
ArcPyとPythonを使用して、属性テーブルの英語以外の文字を置き換えますか?
一部の属性に英語以外の文字ÅÄÖが含まれているシェープファイルがいくつかあります。一部のクエリはこれらの文字(具体的にはChangeDetector)では機能しないため、簡単なスクリプトで事前に変更して、新しい文字列を別のフィールドに追加しようとしました。 ただし、文字の変更は正常に機能しますが、arcpy.UpdateCursorでフィールドを更新しません。 これを解決する適切な方法は何ですか? 同じエラーで、コードブロックに「コード」を投稿するときに、フィールド計算機を使用してこれを実行しようとしました。 エラーメッセージ: ランタイムエラートレースバック(最後の最新の呼び出し):ファイル ""、1行目、ファイル "c:/gis/python/teststring.py"、28行目、val = code(str(prow.Typkod)) UnicodeEncodeError: 'ascii'コーデックは位置3の文字u '\ xc4'をエンコードできません:序数が範囲(128)にありません コード: # -*- coding: cp1252 -*- def code(infield): data = '' for i in infield: ## print i if i == 'Ä': data = data + 'AE' elif i == 'ä': data = data + 'ae' …

5
ArcPyを使用してフィールドの名前を変更しますか?
私は何をする必要がありますか: テーブル/フィーチャクラスのフィールド名を変更する すべての値を新しいフィールドにコピーする これまでのところ、@ artwork21が示すように、次のコードを実行しました。 import sys import traceback import arcpy from arcpy import env ## ARGUMENTS # argv[1] = input table/feature class path # argv[2] = input old field name # argv[3] = input new field name path = sys.argv[1] oldFieldName = sys.argv[2] newFieldName = sys.argv[3] env.overwriteOutput = True …

2
庭のプロットの太陽強度マップを作成する方法は?
小さな庭の区画の単位面積あたりの平均太陽強度を表すラスターサーフェスの作成に興味があります。モデルへの入力は次のようになると思います。 プロットエリア-簡単にするために、庭のプロットが円形であると仮定しましょう。 周囲の森の端の平均木の高さ さまざまな太陽角度での太陽強度 時間の経過に伴う庭園の区画に関連する平均太陽角度。 最終的には、木々に囲まれた庭の区画の中で、植物の成長に最適な場所を示したいと思います。誰かがこの分析の解決策に私を向けることができますか?私は参照を見つけることができませんが、誰かがすでにこれを行っていると確信しています。 編集: 例として、添付の画像は、同じ年齢の針葉樹の林に囲まれた1エーカーの庭の区画を示しています。この分析をさらに単純化するために、6月から10月までの園芸シーズン中の太陽の天頂と強度のみに関心があると仮定します。伐採はオプションではありません!

1
ArcGIS Pythonスクリプトツールの実行中にユーザー入力を求めますか?
スクリプトツールにすべてのパラメーターを指定した後、ユーザー入力を求めるプロンプトを表示します。私はこれに関する多くのフォーラムの投稿とstackexchangeの質問を見てきましたが、それらはすべて不要であると結論付けていますが、私のケースは例外だと思います。GPS座標の数など、データを確認する機会をユーザーに提供したいと考えています。これらは「はい/いいえ」の質問(「このデータは明らかに正しくないのですか?」)であり、スクリプトツールのパラメーター入力フォームは、これにはうまく機能しないようです。 TkinterのイベントハンドラーがArcGISで問題を引き起こし、他のフレームワークでも同様の問題があることを知っています。私が見つけた回避策の1つは、別のプロセスとして実行される別のスクリプトをスクリプトで呼び出し、2番目のプロセスからGUIを表示することですが、これは少しハックしすぎるようです。 どうやらwxPython は機能しますが、Pythonには含まれていません。ArcGIS以外の追加要件なしでこれらのスクリプトを配布できるようにする必要があるので、私にはうまくいきません。 明確にするために、最も重要な用途は、ソフトウェア検証チェックでデータを検証できないときにユーザーにプロンプ​​トを表示することです。たとえば、検証するIDのリストがありますが、形式が一貫していません。ソフトウェアで検証できない場合(たとえば、IDが一般的なパターンの1つと一致しない場合)は、はい/いいえダイアログでユーザーにプロンプ​​トを表示できるようにしたいです。私の知らないうちに新しいID形式が作成される可能性があります。 別の例:とりわけ、開始時間と停止時間の表を含むファイルがあります。テーブルの各行を個別に検証し、そのすべてのデータに加えて他のチェックを警告ウィンドウに詰め込むと、非常に速くなります。

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