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

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

2
ArcGIS Python Toolboxでインポートされたモジュールを更新しますか?
ArcMapでPythonツールボックス(.pyt)を使用する場合、通常、.pytファイル自体が単なる入力引数を収集してツール自体を定義するラッパーであるパターンに従います。サポートコードは、個別のユニットテスト可能なモジュールに保持されます。 例: import supporting_module class MyTool(object): ... def execute(self, parameters, messages): """The source code of the tool.""" some_input = parameters[0].valueAsText some_output = parameters[1].valueAsText supporting_module.do_something(some_input, some_output) arcpy.SetParameter(2, some_output) これは非常にうまく機能しますが、開発中にイライラする問題に遭遇しました。ArcMapの.pytを右クリック->更新すると、.pytファイルのコードのみが更新されます。インポートされたモジュールは更新されないため、そこで何かを変更するたびにArcMapを閉じて、再度開く必要があります。幸いなことに、私は独立してコードをテストしているので、これを大量に行う必要はありませんが、それでも大きな手間がかかります。これを回避する方法はありますか?多少関連があります-Pythonコンソールを完全に更新する方法はありますか(カスタムサイトパッケージがあるので、ArcMapを閉じたり開いたりして変更を取得する必要があります)? ArcMap 10.2.1を使用しています。

4
スクリプトの編集後にPythonアドインを再コンパイルしますか?
私はいくつかのpythonアドインを開発してきましたが、スクリプトを編集するたびにアドインを再コンパイルする最善の方法は何なのか疑問に思っています。 現在、スクリプトを編集すると、次のようになります。 ArcMapを閉じる マイアドインフォルダーに移動し、 'makeaddin' Pythonファイルをダブルクリックします 「Pythonアドインファイル」をダブルクリックします 変更を有効にするためにArcMapを再起動します これらの手順を実行しないと、編集が認識されません。単純な印刷行をどこかに配置したい場合や、結果をテストするためだけに小さな編集を行う場合、これはかなり面倒で時間がかかります。 これを行うより良い方法はありますか?

3
ArcGIS for Desktopで特定の列のみをCSVファイルにエクスポートしますか?
ポリゴンフィーチャクラスをファイルジオデータベースに出力するarcpyを使用して、Pythonスクリプトを記述しました。属性を別のCSVファイルにエクスポートする機能を追加しました。この投稿で見つけた完全に機能するコードを使用しています。ただし、そのコードは、フィーチャクラスのすべての列をエクスポートします。:私は、以下の名前を持っていないフィールドをエクスポートするOBJECTID、ShapeまたはShape_Length。 CSVファイルが正常に生成され、またはフィールドが正しく含まれていません。ただし、フィールドはファイルに書き込まれます。そのフィールドに書き込まれる値の例は次のとおりです。OBJECTIDShape_LengthShape <geoprocessing describe geometry object object at 0x28CB90A0> フィールド名を印刷する行を追加しましたが、フィールド名を繰り返し処理するため、驚くことにShape印刷されません。ArcGISが非表示にしたり、別の名前を付けたりするようです。 私の関数のコードは次のとおりです。 def exportToTable(): """ Exports the final outputs to a CSV File. """ # Create path to CSV File (note the varialbe outputPath is declared elsewhere). CSVFile = outputPath+'\\FinalOutput.csv' arcpy.AddMessage("Created CSV File: %s" %CSVFile) # Get all fields in FinalOutput …

1
ArcPy Cost Path AnalysisツールがArcObjectsよりも高速である理由を理解できますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた3年前。 Pythonを使用してジオプロセシングスクリプト/サービスを作成しましたが、ArcObjectsを使用して同等の操作を実行するとパフォーマンスが向上するという印象を受けました。 私が投稿したのArcGIS ServerのGPサービス- RasterIO.dllクラッシュのArcSOC.exeをし、ArcGISのジオプロセシングスクリプトは、デスクトップに罰金を実行しますが、ジオプロセシングサービスとしてクラッシュしますか?Spatial Analystツールを使用してジオプロセシングサービスとして機能するジオプロセシングスクリプトを取得する方法について、過去数日間にわたって説明しました。私の締め切りはすぐに近づいているので、希望の機能を達成するためにSOEルートに行くことにしました。 .NET ESRI.ArcGIS.SpatialAnalyst.RasterDistanceOpClass、特にCostDistanceFull()およびCostPath()メソッドを使用すると、ArcObjectsでコストパス分析を取得するのは比較的簡単でした。 私が物事をどのように行っているかのコードスニペット: Python # Get Cost Path Origin and Destination Points inputPointsShp = 'D:/RasterStuff/test_points.shp' arcpy.MakeFeatureLayer_management(inputPointsShp,"origin",' "TYPE" = \'ORIGIN\' ') arcpy.MakeFeatureLayer_management(inputPointsShp,"destination",' "TYPE" = \'DESTINATION\' ') # Check out the ArcGIS Spatial Analyst extension license arcpy.CheckOutExtension("Spatial") # Execute CostDistance outCostDistance = CostDistance("origin",SOURCE_RASTER,"#","backlink") # …

2
.NETからarcpy / pythonを呼び出しますか?
Pythonを.NET ArcGISアドインまたはエクステンションに統合する方法を示す利用可能な例はありますか?.NETのフォームイベント(ボタンのクリックなど)から呼び出す一連のpythonスクリプトがあります。また、.NETフォームからスクリプトに変数を設定できるようにしたいと思います。 弾丸を噛んでこれらのスクリプトを.NETで書き直す必要がありますか、それともPythonコードをラップする簡単な方法がありますか?

3
ArcPyを使用してArcGIS DesktopでポイントごとにArcSDEポリゴンを選択しますか?
私は何かが足りないに違いないと考え続けていますが、ArcPyを介してポイント(X、Y)の位置にあるレイヤーからフィーチャ(特にポリゴン)を選択するツールはArcGIS 10にはないようです。このようなツールのパラメーターは、レイヤー名とXYロケーションのみです。 現時点では、ポイントを含むポイントフィーチャクラスを作成し、その上でSelectLayerByLocationを実行することでこれを回避します。ただし、ポリゴンフィーチャクラスがOracleにあり(ArcSDE 9.x経由でアクセス)、350万個のポリゴンが含まれている場合、選択を行うのにかかる時間は、2、3秒(より少ないコードで)より適切な。フィーチャクラスには空間インデックスがあり、arcpy.env.extent(SelectLayerByLocationが無視するように見える)を使用してアクセスする地理的領域を制限しようとしましたが、パフォーマンスは非常に低いままです。 ArcGIS Desktop 10とArcPyを使用してこれを行う簡単な方法はありますか?


1
ArcPyを使用して中点でポリゴンを分割しますか?
次の図のように、最長軸に垂直な(つまり、中間点の幅を横切る)中間点で約4000個のポリゴンを分割しようとしています。 理想的には、これを自動的に行い、各ポリゴンを手動で分割しないようにします。それぞれに描画できる最長の線を変換してポリゴンの中間点を抽出しましたが、この点を横切る線を自動的に描画する方法を決定するだけです。 ポリゴンの幅はさまざまであるため、特定の長さの幅の線を定義してポリゴンを分割するツールは、私が探しているものではありません。 何か案は?

2
ArcPyを使用して関連レコードを効率的に選択しますか?
以下は、ArcMapの「関連テーブル」ボタンを複製するために使用しているコードです。ArcMapでは、そのボタンは、別の関連フィーチャクラスまたはテーブルのフィーチャの選択に基づいて、あるフィーチャクラスまたはテーブルのフィーチャを選択します。 ArcMapでは、そのボタンを使用して、選択を関連テーブルに数秒で「プッシュ」できます。ボタンを複製するarcpyに組み込まれたものを見つけることができなかったため、同じタスクを実行するためにいくつかのネストされたループを使用しました。 以下のコードは、「治療」のテーブルをループします。各処理について、「ツリー」のリストをループします。治療のIDフィールドとツリーの間で一致が見つかると、ツリーレイヤーで選択が行われます。治療に一致するものが見つかると、コードは追加の一致のためにツリーレイヤーを検索し続けません。処理テーブルに戻り、次の処理を選択して、再びツリーフィーチャクラスを検索します。 コード自体は正常に機能しますが、非常に遅くなります。この場合の「治療テーブル」には16,000レコードがあります。「ツリー」フィーチャクラスには60,000レコードがあります。 あるテーブルから別のテーブルに選択をプッシュするときに、ESRIが実行していることを再作成する別のより効率的な方法はありますか?テーブルのインデックスを作成する必要がありますか?注:このデータはSDEに保存されます。 # Create search cursor to loop through the treatments treatments = arcpy.SearchCursor(treatment_tv) treatment_field = "Facility_ID" for treatment in treatments: #Get ID of treatment treatment_ID = treatment.getValue(treatment_field) # Create search cursor for looping through the trees trees = arcpy.SearchCursor(tree_fl) tree_field = "FACILITYID" for tree in trees: …

5
ArcGISでPython開発プロジェクトチームとして働いていますか?
Python(ArcGIS 10)の開発プロジェクトがあります。このプロジェクトには、ツールボックス、マップテンプレート、レイヤーファイル、ファイルジオデータベーステンプレート(スクリプトによってマップにインポートされるテンプレートとして機能する)など、さまざまなものが混在しています。 ソースエディターとしてEclipseを使用し、ソースコードリポジトリとしてSVNを使用します。 すべてのファイル(pyファイルではない)を全員が同期プロジェクトに保持することには問題がありますが。ツールボックスは、ツールボックスを編集している複数の人によって日常的に台無しにされ、その後テンプレートファイルが調整され、チェックインされないため他の人のために更新されません。 会社のツールボックスプロジェクトに複数のpython開発者がいる組織の人々は、プロジェクトとすべての異なるファイルが正しくバージョン管理され、管理されていることをどのように保証していますか?または、すべてがEclipse(テンプレートレイヤーとスクリプトで使用されるGDBを含む)からプロジェクトに移動し、ユーザーがファイルを正しくチェックアウトすることを望んでいますか?

1
ArcPyを使用して複数のMXDのデータソースを修復しますか?
約50のmxdがあり、すべての壊れたレイヤーを通過し、手動でリセットしました。 データは別のコンピューターから移動され、フォルダー構造が変更されたため、単なる変更プロセスではありません(例)。 「F:\ Data \ Rivers.shp」から「C:\ Data \ Rivers.shp」 それは次のようなものです: 「F:\ Data \ Rivers.shp」からC:\ Data \ Park \ Water \ Rivers.shpへ すべての種類のデータ(境界、野菜の覆い、道路など)について、それぞれ独自のサブフォルダーに保存します。 私は、これらのmxdのいずれかを開くたびに繰り返し実行できるスクリプトを作成します。これにより、少なくともほとんどのmxdで見られる一般的なレイヤーのいくつかが修復され、残りは手動で修復できます。私は、少なくとも私自身保存することができ、そのよういくつかの時間を。 私は次のラインに沿って何かを使用しています: import arcpy mxd = arcpy.mapping.MapDocument("CURRENT") for lyr in arcpy.mapping.ListLayers(mxd): if lyr == "Rivers": #Should this be the layner name in TOC or FC name? lyr.replaceDataSource(r"C:\Data\Park\Water", "SHAPEFILE_WORKSPACE", …

5
20万ポリゴンの1次近傍を効率的に見つける
208,781国勢調査のブロックグループごとに、すべての1次近隣のFIPS IDを取得したいと思います。すべてのTIGER境界をダウンロードして、1つの1GBシェープファイルにマージしました。 BOUNDARY_TOUCHESのコアでSelectLayerByLocationを使用するArcPythonスクリプトを試しましたが、ブロックグループごとに1秒以上かかります。これは、SelectLayerByLocation検索を同じ状態のグループをブロックするように制限した後でもです。このスクリプトを見つけましたが、内部でSelectLayerByLocationも使用しているため、高速ではありません。 ソリューションはArcベースである必要はありません。Pythonでコーディングするのが最も快適ですが、私は他のパッケージを受け入れています。

5
ArcPyを使用してフィーチャクラスとフィールドエイリアスを一括で変更しますか?
1年に2回以上、エイリアスを追加または変更するための10個または20個の属性を持つFCが100個以上あります。言うまでもなく、これは私が自分の道をうなりだすものではありません。このプロセスを自動化するにはどうすればよいですか? Pythonソリューションが優先されますが、機能するものなら何でも使用します。 Arcgis 9.3.1および10(ArcInfoライセンスレベル)にアクセスできます。

4
各ポリゴンの頂点の数を抽出していますか?
私はArcGIS Desktop 10.2を持っていますが、私の挑戦は、このようなすべての機能の各ポリゴンの頂点数を抽出する方法です。 フィーチャクラスに多数のパーセルがあり、すべてのフィーチャの頂点の数を個別に抽出し、すべての頂点のXY座標を表示したい。 詳細については、各ポリゴンの頂点を変換し、1つの数字から始まる各頂点の数を表示するだけなので、ポリゴンがあり、4つの頂点がある場合、ポリゴンを頂点に変換するには、このような頂点の数を表示します(1、2、3、4、5)、各頂点のxyを表示し、実際のチャレンジIDに、すべてのポリゴンを頂点に変換し、頂点の数を1から開始する方法を考えます。

4
Python Toolboxヘルプのパラメーターの説明を定義しますか?
ArcMapアプリケーションのPythonツールボックス(MyTool.pytなど)を作成しようとしています。 ヘルプテキストは、クラスself.description属性で定義されていることがわかります。 ただし、プログラムを実行し、パラメーターフィールドのいずれかをクリックすると、ヘルプ/説明テキストが空になります。各パラメーターの説明フィールドを提供できるようにしたいと思います。これはどのように達成されますか? いくつかの回答の後、「アイテムの説明」の右クリックコンテキストメニューから、入力できるフィールドが多数あることがわかりました。これを行うための「Pythonの」方法はありますか?つまり、いくつかの属性を.pytファイルクラスに埋め込むだけですか? たとえば、.pytツールボックス定義には、Toolboxクラスがあります。 import arcpy class Toolbox(object): def __init__(self): """Define the toolbox (the name of the toolbox is the name of the .pyt file).""" self.label = "My Toolbox" self.alias = "" # List of tool classes associated with this toolbox self.tools = [MyNiceTool] class MyNiceTool(object): def __init__(self): """Define …

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