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

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

1
LiDARデータを使用した建物の抽出(プロセスの改善)
Lasファイルから建物のアウトライン/フットプリントを自動的に作成するための次のプロセスがあり、誰かがそれを改善するのを助けることができるか、使用する他のプロセスの提案がありますか? 実験: A. ArcGIS-Lidardatasetツール:建物のクラスポイントのみを表示できますが、ポリゴンを自動的に作成することはできません。最小の境界ジオメトリがありますが、データセット全体を見ると、各建物のポイントを手動で選択する必要があります。 B. Overwatchによる外部ライダー分析ツール -建物の抽出はコア機能です。http://www.featureanalyst.com/lidar_analyst.htm(アクティブではなくなりました-2014年7月28 日)裸の地球(必須)を作成してから建物を抽出するのに約8分かかりました。木々の下の建物をキャプチャすることで、最高の結果が得られます(1&4)。これは非常に直感的なインターフェイスであるため、チュートリアルを見ることさえありません。 いくつかの問題は、覆われた廊下を逃したが(3)、開いた屋根を正しく除外したことです(2)。 C. LASTOOLS- lasmergeを使用して関連する4つのタイルをマージし、次にラスクリップを使用してAOIのゾーンのみを抽出しました。 arcpy.lasboundary("AOI.las","1","buildings","true","true","shp","AOI_buildings.shp","","#","true") 出力は非常にぎざぎざだったので、私は使用しました: arcpy.SimplifyBuilding_cartography("AOI","AOI_buildings_simplified.shp","4 Meters","0 SquareMeters","NO_CHECK") その後、実行しました: arcpy.SimplifyPolygon_cartography("AOI_buildings_simplified","AOI_s.shp","POINT_REMOVE","1 Meters","0 SquareMeters","NO_CHECK","KEEP_COLLAPSED_POINTS") 1と2は問題領域を示しています。その一部は、悪いLIDAR分類によるものです。 これにより、長くまっすぐな縁のある建物に良い建物ラインが提供されますが、枝が重なり合っている場合、または複数のエッジ、互いに近い複数のレベルの屋根などがある複雑な建物の場合、詳細なサイトレベルの作業には手動での作成が必要です。一般的な推定屋根形状の場合、プロセスは十分に正確です。プロセスが完了すると、プロセスは合計10分未満で完了します。 私の研究:/programming/5037588/simplified-or-smooth-polygons-that-c​​ontain-the-original-detailed-polygonとプロセスが@gromixによって提案や定義、アルゴリズムと実用的なソリューションは何ですか凹包の

2
ArcGISでマルチコア処理を最適化する方法
デスクトップコンピューターで利用可能なマルチコア処理能力を最大限に活用するための学習方法に興味があります。Arcは、ユーザーがバックグラウンドジオプロセシングで複数のコアを利用できると述べていますが、タスクは基本的に前のタスクが完了するまで待機する必要があります。 Arc / Pythonで並列またはマルチスレッドのジオプロセシング手法を開発した人はいますか?個々のタスクでマルチコア処理を妨げるハードウェアのボトルネックはありますか? Stackoverflowで興味深い例が見つかりましたが、これはジオプロセシングの例ではありませんが、興味を惹きました。 from multiprocessing import Pool import numpy numToFactor = 976 def isFactor(x): result = None div = (numToFactor / x) if div*x == numToFactor: result = (x,div) return result if __name__ == '__main__': pool = Pool(processes=4) possibleFactors = range(1,int(numpy.floor(numpy.sqrt(numToFactor)))+1) print 'Checking ', possibleFactors result = pool.map(isFactor, …

1
ArcPyは、隣接するマルチパートジオメトリを書き込むときに誤った内部リングを追加しますか?
Arcpyを使用してマルチパートジオメトリをシェープファイルに書き込むと、奇妙な問題に遭遇しました。InsertCursorを使用して、頂点ペアのリストを持つ各パーツのリストからマルチパートフィーチャーを作成しています。この機能を作成すると、隣接する複数のパーツが自動的に単一のパーツに「溶解」されることを理解しています。しかし、何らかの理由で、通常は内部リングを追加するために必要なNull arcpy.point()を配列に含めなかったにもかかわらず、これは内部リングを作成しています。これが視覚化です: 誰がこれが起こっているのか、および/または問題を克服する方法を知っていますか? 参考のために、ここに私のコードがあります: import arcpy arcpy.CreateFeatureclass_management(r"C:\temp", "test.shp", "POLYGON") OutputCursor = arcpy.InsertCursor(r"C:\temp\test.shp") # List of parts, each with list of vertex pairs ListOfParts = [] ListOfParts.append([[0,1],[1,1],[1,0],[0,0],[0,1]]) ListOfParts.append([[0,2],[1,2],[1,1],[0,1],[0,2]]) ListOfParts.append([[0,3],[1,3],[1,2],[0,2],[0,3]]) ListOfParts.append([[1,1],[2,1],[2,0],[1,0],[1,1]]) ListOfParts.append([[1,2],[2,2],[2,1],[1,1],[1,2]]) ListOfParts.append([[1,3],[2,3],[2,2],[1,2],[1,3]]) ListOfParts.append([[2,1],[3,1],[3,0],[2,0],[2,1]]) ListOfParts.append([[2,2],[3,2],[3,1],[2,1],[2,2]]) ListOfParts.append([[2,3],[3,3],[3,2],[2,2],[2,3]]) # Array of parts to be passed to newRow() ArrayOfParts = arcpy.Array() # Add parts to …

5
ArcPyを使用したArcGIS Desktopでのバッチクリッピング?
古いバージョンのArcGISについても同様の質問がいくつかありましたが、ArcGIS 10に適した答えは見つかりませんでした。 大きな領域(たとえば、州/県全体)をカバーする2つのポリゴンシェープファイルがあります。最初のシェープファイルは州全体の土地被覆を表し、2番目のシェープファイルは50の個々の流域を表します。各流域に基づいて土地被覆シェープファイルをクリップしたいと思います(それぞれがフィールドに格納された一意の名前を持っています)。次に、分水界名を使用して、出力クリップファイル(50の分水界ごとに1つ)を保存します。 実行するクリップが50個あることを考えると、このプロセスはバッチ処理の優れた候補です。

5
ArcGIS Geoprocessing Toolsを使用するPythonスクリプトを(.exeに)コンパイルしますか?
私は数か月間Pythonでコーディングしており、主にジオプロセシングタスク用のかなり複雑なスクリプトを開発しました。そうは言っても、SQL / VBA / VBScriptのバックグラウンドから来ているので、私はまだ多くを学んでいます。 コンパイルされたコードは通常、言語インタープリターで処理する必要があるコードよりも高速で実行されることを知っているため、ビッグデータを操作するためにジオプロセシングPythonスクリプトを.EXEファイルにコンパイルする可能性に興味があります。 これも可能ですか?もしそうなら、arcgisscriptingまたはarcpyモジュールをインポートするPython(.py)スクリプトをコンパイルする最良の方法は何ですか? やりたいことを見つけるために数分を費やし、検索の結果、とりわけこの記事が返されました:http : //www.ehow.com/how_2091641_compile-python-code.html コンパイラは動作しているように見えましたが、結果の.EXEファイルを実行すると、一部のファイルが利用できないという不可解なエラーが発生しました。 Pythonスクリプトは、コマンドラインからはかなり適切と思われるものを実行しますが、.pyファイルをコンパイルできた場合、若干の改善が見られるかどうか疑問に思っています。繰り返しますが、処理に+20時間かかる大きなデータセットを使用しています(入力水質サンプルサイトからの分水界の輪郭を描く)。改善のために手に入れることができるものは何でも取ります。 このスクリプトは、サイトのテストセットを使用してコマンドラインから迅速外のArcGISの10%を走っ対 ArcCatalogで新しいツールボックスのスクリプトツールとしてスクリプトを設定します。専用のコンピューターでArcGISのインスタンスを開かずに、コマンドラインからスクリプトを実行しました。 では、arcgisscriptingモジュールをインポートし、ArcToolBoxツールを呼び出すPythonスクリプトをコンパイルできますか? 編集 入力をありがとう、これは私にとって有用です。このスクリプトは、主に多くのArcGISツールを調整し、適切な属性で目的の形式/場所で出力する方法です。一部の暫定ラスターファイルのスクラッチパーソナルジオデータベースではなくスクラッチフォルダーに書き込むことで、ESRI GRID形式とIMG形式の両方で保存できるように、すでにいくつかの脂肪を削除しました。ただし、プロファイラーの提案を確認します。 私のオフィスには、主にコンパイルされたVisual BasicプログラムやVB.NETプログラムと比較して、「コンパイルされたコードはインタープリターを介して実行されるコードよりもはるかに速い」と Pythonに質問する人がいますが、それは良い点ですツールはどちらの方法でも時間がかかります。そして、現代のコンピューティングマシンでは、コードの解釈はコンパイルされたコードよりもそれほど遅くないので、その余分な距離を進むことが保証されているようです。 編集 -ラスター形式でのプログラムの最適化に関する更新。 このPythonプログラムの「最適化」をフォローアップしたかったため、パーソナルジオデータベースではなくGRID形式で中間ラスターを書き込むことで、2時間の処理時間を節約できました。それだけでなく、データサイズのディスクスペース消費量が大幅に削減されました。私がすべてのラスターを書き込んだ元の実行(およびそれらはラスターに変換されたポイントフィーチャであり、その後、流域ラスターであった)は、これらのファイルだけで37.1 GBのデータになりました。後者の2つのデータ出力をGRID形式のフォルダーに書き込むことは、667 MBのデータに削減されました。 主にデータのサイズの方法で、ファイルGDBがこれらのデータをどのように処理するかを知りたいと思います。ただし、処理時間を9.5時間から7.5時間に短縮することで、GRID形式のジオデータベース外のラスターを処理することを支持できます。

1
VirtualenvでのArcGIS 10.0の実行
コマンドラインツールとArcToolboxツールが混在するPythonパッケージに取り組んでいます。Pythonの開発では、特にインストーラーを使用する場合、VirtualEnvを使用すると非常に便利です。ArcMapまたはArcCatalogにPythonの現在のVirtualEnvセッションを認識させる方法はありますか?カスタムツールが実行されると、c:\ Python26 \ ArcGIS10のデフォルトのPythonパスとパッケージの代わりにVirtualEnv Pythonパスとパッケージを使用します.0?


2
スクリプトツールではなくコマンドとしてPythonスクリプトを呼び出すボタンを作成しますか?
Arc9.3では、VBAスクリプトを使用してコマンドを作成できると考えています。カスタムコマンドを追加するには、[カスタマイズ]> [ツールバー]> [カスタマイズ...]に移動し、[UIControls]をクリックします。ただし、UIControlsはバージョン10にはありません。 マップブックプロジェクト用に2つの個別のスクリプトを作成しています。1つのスクリプトはレイアウト設定をテーブルに保存し、もう1つのスクリプトは同じテーブルの設定でレイアウトを更新します。これらのスクリプトの両方を、ツールバーのボタンに割り当てられたコマンドにする必要があります。スクリプトツールとして作成しましたが、クリックするたびに、ジオプロセシングツールとしてスクリプトを実行します。進行状況ウィンドウが表示され、Pythonコマンドラインウィンドウでコードを実行した場合よりも実行に約10倍時間がかかります。進行状況ウィンドウやはるかに長い実行時間は必要ありません。 スクリプトが「ツール」と見なされず、代わりに「保存」ボタンに似たコマンドになるようにするにはどうすればよいですか?

3
arcpy.ListFeatureClassesで複数のワイルドカードパラメーターを使用する
これを行う方法がなければならないことは知っていますが、その方法を理解するのに苦労しています。オペレーションを実行するためのフィーチャクラスのリストを作成したいのですが、2つの別個の異なるファイル名識別子を持つフィーチャクラスをリストに含める必要があります。コードは次のようになります。 FCS = arcpy.ListFeatureClasses("X_*" OR "*_Y") 私はORが間違っていることを知っていますが、2番目のワイルドカードで動作するコードを書き直すことなくこれを行う方法はありますか?痛風を助けてくれてありがとう、ORステートメントを使用して複数のワイルドカードを使用できるSelect By Attributesに選択方法があることを知っています。
12 arcpy  list  wildcard 

2
ArcPyスクリプトが遅いのはなぜですか?
ポイントシェープファイル内のフィールドを、その中にあるポリゴンフィーチャからの情報で更新する簡単なarcpyスクリプトがあります。arcpyで100ポイントを実行するには9分かかりますが、arcmapでの空間結合は瞬時に行われます。この問題を解決するための迅速に確立された方法があると確信しています。誰かが私を正しい方向に向けることができますか? import took 0:00:07.085000 extent took 0:00:05.991000 one pt loop took 0:00:03.780000 one pt loop took 0:00:03.850000 one pt loop took 0:00:03.791000 import datetime t1 = datetime.datetime.now() import arcpy t2 = datetime.datetime.now() print "import took %s" % ( t2-t1) #set up environment arcpy.env.workspace = "data\\" arcpy.env.overwriteOutput = True desc = …

1
Pythonを使用して、ページサイズの変化に比例してスケールマップ要素を無効にしますか?
ArcPyとArcGIS 10.0を使用して、さまざまなオフィスのMXDのソースを変更しています。ここで見たように、命令mxd.save()が送信されると、プリンター設定はデフォルトのプリンターに戻ります。 私の場合、プリンターの紛失は軽微な問題ですが、「プリンターの用紙設定を使用」が選択されているときに「ページサイズの変化に比例してマップ要素を拡大縮小する」印刷オプションにチェックを入れると重大になります。以下のスクリーンショットは私の最悪のシナリオであり、最良のケースは両方のチェックボックスをオフにすることです。 MXDを保存する前に、comtypesを使用してそのオプションの値を確認し、False(チェックなし)に設定したいと考えています-これは、既存のArcPyスクリプトから関数として呼び出すことです。(主な目標) 印刷設定をさらに保護するために、[プリンタ設定を使用する]チェックボックスがオンになっている場合はオフにすることも理想的です。(二次目標) 誰でも助けることができますか?

2
ArcPyのメモリワークスペースに設定しますか?
env.workspace = "in_memory"ArcGIS ProとArcGIS 10.2.2(または10.3)アーキテクチャの両方を使用してArcPyで設定することはできますか? 私がやろうとしているのは、ディスクではなくメモリに書き込まれたスナップ流動点操作の出力を取得することです。 私はディスクに書き込み、それをメモリに持ち込めることを理解していますが、これは役に立ちません。次のプロセスへの入力としてのみ必要なプロセスの出力を物理メディアへの書き込みの使用を最小限に抑える一連のタスクを最適化しようとしています。

1
Numpy配列からのPySALの自然な中断
Pythonを使用して、ラスターから自然なブレーク値を抽出しようとしています。 目的のプロセスは次のとおりです。ArcpyラスターオブジェクトからNumPy配列(RasterToNumPyArrayを使用)から自然ブレーク値(PySAL Natural Breaks関数を使用)。 import arcpy, pysal from pysal.esda.mapclassify import Natural_Breaks as nb # code to create greenIndex arcpy Raster object here greenArray = arcpy.RasterToNumPyArray(greenIndex) breaks = nb(greenArray,k=2,initial=20) このコードは、エラー「ValueError:マトリックスは2次元でなければなりません」を返します。 私の知る限り、greenArrayは2次元配列です。

2
ArcGIS Desktopを使用してポリゴン(ウェルパス)内に平行線を描画しますか?
複数の不規則なポリゴンを持つポリゴンフィーチャクラスを取得し、Arcに各ポリゴンの内側に平行線を描画させたいと思います。理想的には、Arcが多角形の最も長い辺の角度を把握し、その辺に平行線を引くのがいいと思いますが、単純にするために、すべての平行線に1つの角度を入力できると思います。簡単になります。 したがって、ポリゴンの側面からのライン角度、ライン間の幅、最小/最大長、およびバッファ幅が基本的な基準です。 それが役立つ場合に添付される画像。

3
シェープファイルからArcPyレイヤーに定義クエリを設定しますか?
ArcPyを使用してレイヤー定義クエリを設定するオプションを決定しようとしています。 arcpy.mapping.ListLayers()を使用すると可能になることを知っています。 ただし、このシナリオでは、シェープファイルを読み込んでおり、ArcPyでarcpy.MakeFeatureLayer_management()を使用しています。 このジオプロセッサを使用して作成したレイヤーに定義クエリを設定します。 これは可能ですか?

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