ArcPyカーソルの背後で使用されているテクノロジーは何ですか?


8

ArcGIS Server 10.0を使用しています。arcpy検索、更新、カーソル挿入を使用したジオプロセシングがあります。これらのカーソルの背後にあるテクノロジーについて詳しく知りたいのですが。

データベースへの接続にドライバーまたはプールを使用していますか(Oracle 11gを使用しています)?

カーソルの作成時に一度DBへの接続を開き、カーソルが削除されるとそれを閉じますか?トランザクションはどうですか?

行が更新または挿入されるたびに、カーソルは新しい接続とDBへのトランザクションを開きますか?

回答:


4

ArcPyは、通常のArcGISデスクトップにフックを提供するだけです。デスクトップと同様に、接続が確立されると、ArcGISによって明示的に閉じられるまで(通常、関連付けられているpythonウィンドウが閉じられるとき)、接続が開いたままになります。ドライバーについては、ArcGISにインストールしたドライバーを使用して、ArcSDE / RDBMSに接続します。


ウィンドウを開かないジオプロセシングがあります。それは、アプリケーションが実行されるまで接続が開いたままであることを意味しますdel myCursorか?
yo_haha 2013

1
ウィンドウなしのプロセスを使用している場合、接続はプロセスが閉じられるまで開いたままになります。ArcGISは、開いているデータベース接続を含め、使用するすべてのデータにさまざまなタイプのデータロックをかけているため、非常に積極的です。接続またはデータセットへのすべての参照を削除した後でも、ArcGISはそれをバックグラウンドで接続したままにし、そのロックのあるアプリケーションが閉じるまでロックする場合があります。それは何年もの間ユーザーにとって大きな痛みでした。del関数を使用すると、Pythonアプリ内のすべての参照が削除されますが、必ずしもArcGISが実際にデータベース接続を閉じるわけではありません。
キツネザル2013

1
あなたが説明する状況は10.1で改善されたようです(このブログ投稿へのJasonのコメントを参照してください:sgillies.net/blog/1067/get-with-it
blah238

@ blah238リンクが不完全だったので、言及された投稿の完全なURLは次のとおりです。sgillies.net
Priscilla

3

Pythonカーソルの概念を理解する必要があります。

これらは、データベースクエリによって返された結果を処理するために、PEP 249:Python Database API Specification v2.0のSQLデータベースカーソルをモデルにしています

Pythonデータベースインターフェイスの大部分はこの標準に準拠しています:cx_Oracle(Oracle)、Psycopg2(PostgreSQL / PostGIS)、MySQLdb(MySQL)、sqlite3(SQLite)など。

カーソルを使用すると、一致するすべての行が処理されて結果セット全体が一度にフェッチされるまで、結果の1つ以上の行を取得できます。これにより、処理速度(パフォーマンス)の問題が発生する可能性があります(カーソルよりも速いものはありますか? ArcGISでレコードを計算するには?)。

データベースカーソルは通常、タプルのリストまたはリストのリストを返しますが、ArcGISのカーソルメソッドはPython列挙オブジェクトを返します。

カーソルソリューションを改善するために、SQLデータベースへの簡略化されたインターフェイスを提供するラッパーがいくつか存在します。これらの一部はオブジェクトリレーショナルマッパー、またはORM(データベース行からのPythonicオブジェクトの作成)と呼ばれる場合があり、その他はSQLの生成のみを支援するか、単純なマッピングサポートを提供する場合があります(高レベルデータベースプログラミングを参照)

ArcPyの場合、ソリューションは、たとえばSean Gillies(Get with it)などによって提供されます。

他の地理空間ソリューション(PyQGIS、grass、osgeo.ogr、Pyshp、Rpy、Fiona、PySALなど)はカーソルを使用しないため、物事が簡単になります...


3
これは接線方向であり、Arcpyカーソルに関連/固有のものではありません。これは、ポスターが尋ねたとおりです。
Jason Scheirer、2013

2
申し訳ありませんが、質問は「arcpyカーソルの背後で使用されているテクノロジーは何ですか?」テクノロジーはArcPyではなくPythonカーソルであり、知らない場合、ArcPyカーソルを理解することはできません。それは同じことです。
Gene

8
arcpyカーソルの背後にあるテクノロジは、Pythonラッパーを備えたArcObjectsです。背後にarcpy.*Cursorあるテクノロジーは、ArcObjectsのI*CursorインターフェイスへのPythonマッピングです。ArcObjectsとArcGISのジオデータベースモデルを理解することは、PEP 249カーソルインターフェイス定義の知識よりもはるかに役立ちます。
Jason Scheirer、2013

1
@JasonScheirerこれは基本的には質問に対する正しい答えです。同じ効果に対する実際の答えを書こうと思ったら、投票します:)
blah238

1
クロスポストスレッドへの回答は既にforums.arcgis.com/threads/…に
Jason Scheirer '26

0

@JasonScheirerによるコメント:

arcpyカーソルの背後にあるテクノロジは、Pythonラッパーを備えたArcObjectsです。arcpyの背後にあるテクノロジー。Cursorは、ArcObjectsのI CursorインターフェイスへのPythonマッピングです。ArcObjectsとArcGISのジオデータベースモデルを理解することは、PEP 249カーソルインターフェイス定義の知識よりもはるかに役立ちます。

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