Teknologi apa yang digunakan di belakang kursor ArcPy?


8

Saya menggunakan ArcGIS Server 10.0. Saya memiliki geoprocessing menggunakan pencarian arcpy, memperbarui dan memasukkan kursor. Saya ingin tahu lebih banyak tentang teknologi di balik kursor ini.

Apakah itu menggunakan driver atau kumpulan untuk terhubung ke database (saya menggunakan Oracle 11g)?

Apakah itu membuka koneksi ke DB sekali saat membuat kursor dan menutupnya ketika kursor dihapus? Bagaimana dengan transaksi?

Apakah kursor membuka koneksi baru dan transaksi ke DB setiap kali baris diperbarui atau dimasukkan?

Jawaban:


4

Semua yang dilakukan ArcPy adalah menyediakan kaitan ke desktop ArcGIS yang normal. Sama seperti desktop setelah Anda memiliki koneksi, itu akan tetap terbuka sampai ditutup secara eksplisit oleh ArcGIS (biasanya ketika jendela python terkait ditutup). Sedangkan untuk driver itu akan menggunakan driver yang Anda instal untuk ArcGIS untuk terhubung ke ArcSDE / RDBMS Anda


Saya memiliki geoproses yang tidak membuka jendela apa pun. Apakah itu berarti koneksi tetap terbuka sampai aplikasi dijalankan del myCursor?
yo_haha

1
Jika Anda menggunakan proses tanpa jendela, koneksi akan tetap terbuka sampai proses ditutup. ArcGIS sangat agresif dengan berbagai jenis kunci data yang diletakkannya pada data apa pun yang digunakan, termasuk koneksi basis data terbuka. Bahkan setelah menghapus semua referensi ke koneksi atau set data, ArcGIS dapat tetap terhubung di latar belakang dan terkunci sampai aplikasi dengan kunci itu ditutup. Sudah menjadi masalah besar bagi pengguna selama bertahun-tahun. Menggunakan fungsi del akan menghapus semua referensi di aplikasi python Anda, tetapi itu tidak akan menyebabkan ArcGIS untuk benar-benar menutup koneksi database.
Lemur

1
Situasi yang Anda jelaskan tampaknya telah membaik pada 10.1 (lihat komentar Jason ke posting blog ini: sgillies.net/blog/1067/get-with-it )
blah238

@ blah238 tautannya tidak lengkap, jadi di sini adalah url lengkap ke pos yang disebutkan: sgillies.net/2011/02/01/get-with-it.html
Priscilla

3

Anda perlu memahami konsep kursor Python.

Mereka dimodelkan setelah kursor SQL database di PEP 249: Python Database API Specification v2.0 untuk memproses hasil yang dikembalikan oleh query database.

Mayoritas antarmuka basis data Python mematuhi standar ini: cx_Oracle (Oracle), Psycopg2 (PostgreSQL / PostGIS), MySQLdb (MySQL), sqlite3 (SQLite), dll.

Kursor memungkinkan pengambilan satu atau lebih baris hasil, sampai semua baris yang cocok telah diproses dan akan mengambil seluruh hasil yang ditetapkan sekaligus, yang dapat menyebabkan masalah kecepatan pemrosesan (kinerja) ( Apakah ada yang lebih cepat daripada kursor) di ArcGIS untuk menghitung catatan? ).

Database kursor umumnya mengembalikan daftar tupel atau daftar daftar sementara metode kursor di ArcGIS mengembalikan objek enumerasi Python.

Untuk meningkatkan solusi kursor, ada beberapa pembungkus yang menyediakan antarmuka yang disederhanakan ke database SQL. Beberapa di antaranya mungkin disebut sebagai pemetaan relasional objek, atau ORM (pembuatan objek Pythonic dari baris database) dan lainnya hanya dapat membantu menghasilkan SQL, atau menyediakan dukungan pemetaan sederhana (lihat Pemrograman Basis Data Level Tinggi )

Untuk ArcPy, solusi disediakan oleh, misalnya, Sean Gillies ( Dapatkan dengannya ) dan lainnya.

Solusi geospasial lainnya (PyQGIS, rumput, osgeo.ogr, Pyshp, Rpy, Fiona, PySAL, dll.) Tidak menggunakan kursor, yang membuat segalanya lebih mudah ...


3
Ini tangensial dan tidak terkait / spesifik dengan kursor Arcpy, yang diminta oleh poster.
Jason Scheirer

2
Saya minta maaf tetapi pertanyaannya adalah "Teknologi apa yang digunakan di belakang kursor curam?" dan teknologinya adalah kursor Python, bukan ArcPy, dan jika Anda tidak mengetahuinya, Anda tidak dapat memahami kursor ArcPy: itu adalah hal yang sama.
gen

8
Teknologi di belakang kursor arcpy adalah ArcObjects dengan pembungkus Python. Teknologi di belakang arcpy.*Cursoradalah pemetaan Python ke I*Cursorantarmuka ArcObjects . Pemahaman tentang ArcObjects dan model geodatabase ArcGIS jauh lebih berguna daripada pengetahuan tentang definisi antarmuka kursor PEP 249.
Jason Scheirer

1
@JasonScheirer yang pada dasarnya adalah jawaban yang benar untuk pertanyaan jadi jika Anda menulis jawaban yang sebenarnya untuk efek yang sama saya akan memilihnya :)
blah238

1
Sudah memposting jawaban untuk utas yang diposting di forums.arcgis.com/threads/…
Jason Scheirer

0

Seperti yang dikomentari oleh @JasonScheirer:

Teknologi di belakang kursor arcpy adalah ArcObjects dengan pembungkus Python. Teknologi di balik arcpy. Kursor adalah pemetaan Python ke antarmuka I kursor ArcObjects ' . Pemahaman tentang model geodatabase ArcObjects dan ArcGIS jauh lebih berguna daripada pengetahuan tentang definisi antarmuka kursor PEP 249.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.