Apakah ada cara untuk mengetahui versi geodatabase menggunakan Python?

8

Saya ingin mencari tahu apakah salah satu file atau geodatabase pribadi adalah 9.3, 10.0, 10.1, dll

Apakah ada cara untuk melakukan ini menggunakan Python?

ianbroad
sumber
Apakah ada cara untuk memberi tahu geodatabase "lama" (10.2) dari geodatabase yang lebih baru (10.7)? Sebagian besar geodatabase yang saya buat di 10.2 & saya upgrade ke 10.7 & alangkah baiknya jika saya bisa membedakan antara 2 versi yang sangat berbeda ....
Patty Miller

Jawaban:

8

Saya akan mencoba properti rilis Describe Workspace

http://resources.arcgis.com/en/help/main/10.1/index.html#/Workspace_properties/018v0000002v000000/

Nicholas Graf
sumber
Dan jika saya menggunakan 10.0?
ianbroad
2
@ BIB, dalam pertanyaan awal Anda , Anda bertanya apakah Anda juga bisa mengetahui apakah gdb adalah 10.1, jadi saya pikir adil untuk menganggap Anda menggunakan 10.1, karena tidak mungkin bahwa versi sebelumnya (yaitu: 10.0) tidak akan pernah bisa untuk memberi tahu Anda tentang gdb versi masa depan .
RyanKDalton
Dari bantuan yang ditautkan, sepertinya tidak ada perbedaan antara 10.0 dan 10.1 rilis geodatabases. Keduanya akan mengembalikan nilainya 3,0,0.
blah238
6

Berikut ini adalah solusi ArcObjects + comtypes yang bekerja untuk saya di 10.0:

import arcpy
from ESRICOMHelpers import GetESRIModule, CType, NewObj

def GetGDBReleaseVersion(gdbPath):
    """Gets the release version of the given geodatabase."""
    esriGeoDatabase = GetESRIModule("esriGeoDatabase")
    esriGeoprocessing = GetESRIModule("esriGeoprocessing")
    gpUtilities = NewObj(esriGeoprocessing.GPUtilities, esriGeoprocessing.IGPUtilities)
    try:
        dataset = gpUtilities.OpenDatasetFromLocation(gdbPath)
        workspace = CType(dataset, esriGeoDatabase.IWorkspace)
        gdbRelease = CType(workspace, esriGeoDatabase.IGeodatabaseRelease2)
        return "%d.%d" % (gdbRelease.MajorVersion + 7, gdbRelease.MinorVersion)
    except:
        return None

if __name__ == "__main__":
    print GetGDBReleaseVersion(r"C:\GISData\test.gdb")

Keluaran:

>>> 
10.0

Ambil comtypes sini dan ESRICOMHelpers sini. Jika Anda di 10.1 pastikan untuk men-tweak comtypes ' automation.pyseperti yang dijelaskan dalam jawaban ini .

Catatan: Berhati-hatilah bahwa ini juga mengembalikan 10.0 untuk 10.1 geodatabases ketika dijalankan dari ArcGIS 10.0! Sunting: Sebenarnya ini mengembalikan 10.0 untuk geodatabase file 10.1 saat dijalankan dari ArcGIS 10.1 juga! Tidak yakin apa yang sedang terjadi: |

blah238
sumber
1
Apakah Anda yakin itu adalah GeoDatabase 10.1 dan bukan hanya basis data 10.0 yang telah dibuka di 10.1? Bisakah Anda menggunakan tombol "upgrade Geodatabase" di atasnya? help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//…
Ragi Yaser Burhum
Dikatakan itu pada rilis saat ini pada kotak 10.1 saya dan saya tidak dapat memutakhirkannya.
blah238
1
Bug ArcGIS pasti :)
Ragi Yaser Burhum
1
Sebenarnya 10.1 arcpy Workspace menggambarkan releaseproperti mengembalikan yang sama untuk 10.0 dan 10.1 rilis geodatabase juga: resources.arcgis.com/en/help/main/10.1/index.html#/…
blah238
1
Semua yang dilakukan kode adalah melakukan select () pada salah satu tabel yang memiliki string bernama versi. String itu diperbarui setiap kali skema GeoDatabase diubah. Sangat mungkin bahwa skema GeoDatabase tidak diubah untuk rilis itu, dan karenanya tidak ada yang menyentuh kode dan karenanya nilainya tidak tersentuh. IMHO, itu harus disentuh oleh setiap rilis, tapi saya kira jika skemanya sama artinya dapat dibuka pada kedua versi ArcGIS - jadi pada kenyataannya tidak ada "10,1" GDB, hanya 10,0 GDB.
Ragi Yaser Burhum
1

Pertanyaan bagus! Dalam 10.0, saya tidak dapat menemukan metode Python untuk menggambarkan versi geodatabase. Saya telah diuji menggunakan alat Upgrade geodatabase GP di 10.1 dan mungkin membantu.

"Alat Upgrade Geodatabase hanya akan bekerja melawan geodatabases yang ada pada rilis sebelumnya."

Ini berarti kita dapat menguji menjalankan alat ini tanpa menetapkan opsi "Upgrade geodatabase" hanya untuk melihat apakah itu akan mengeksekusi (jika geodatabase dari versi yang sama tidak akan dijalankan). Jika mau - maka ini adalah versi saat ini (hanya pemeriksaan pra-syarat akan dilakukan dan geodatabase akan dibiarkan tak tersentuh).

Mengenai pengujian 9.3 dan 10.1 - Saya berpikir untuk mencoba membuat dataset sampel yang hanya dapat dibuat di geodatabase versi 10.0 / 10.1 dan kemudian memeriksa apakah itu akan dibuat. Jika tidak - maka 9.3 / 10.1.

Bukan solusi yang paling elegan ...

Alex Tereshenkov
sumber