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?
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?
Jawaban:
Saya akan mencoba properti rilis Describe Workspace
http://resources.arcgis.com/en/help/main/10.1/index.html#/Workspace_properties/018v0000002v000000/
3,0,0
.
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.py
seperti 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: |
release
properti mengembalikan yang sama untuk 10.0 dan 10.1 rilis geodatabase juga: resources.arcgis.com/en/help/main/10.1/index.html#/…
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 ...