Ich möchte herausfinden, ob eine Datei oder eine persönliche Geodatabase 9.3, 10.0, 10.1 usw. Ist
Gibt es eine Möglichkeit, dies mit Python zu tun?
Ich möchte herausfinden, ob eine Datei oder eine persönliche Geodatabase 9.3, 10.0, 10.1 usw. Ist
Gibt es eine Möglichkeit, dies mit Python zu tun?
Antworten:
Ich würde die Release-Eigenschaft Describe Workspace ausprobieren
http://resources.arcgis.com/de/help/main/10.1/index.html#/Workspace_properties/018v0000002v000000/
3,0,0
.
Hier ist eine ArcObjects + comtypes- Lösung, die für mich unter 10.0 funktioniert:
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")
Ausgabe:
>>> 10.0
Schnapp dir hier Comtypes und hier ESRICOMHelpers . Wenn Sie bei 10.1 sind, stellen Sie sicher, dass Sie automation.py
die in dieser Antwort beschriebenen comtypes optimieren .
Hinweis: Beachten Sie, dass dies auch 10.0 für 10.1-Geodatabases zurückgibt, wenn Sie mit ArcGIS 10.0 ausgeführt werden! Bearbeiten: Tatsächlich gibt dies 10.0 für eine Geodatabase mit 10.1-Dateien zurück, wenn es auch unter ArcGIS 10.1 ausgeführt wird! Nicht sicher, was los ist: |
Gute Frage! In 10.0 kann ich keine Python-Methode zur Beschreibung der Version der Geodatabase finden. Ich habe das Upgrade des Geodatabase GP-Tools in 10.1 getestet und es könnte hilfreich sein.
"Das Upgrade-Geodatabase-Tool funktioniert nur mit Geodatabases, die in einer früheren Version enthalten waren."
Dies bedeutet, dass wir die Ausführung dieses Tools testen können, ohne die Option "Geodatabase aktualisieren" zu aktivieren, um festzustellen, ob es ausgeführt wird (wenn die Geodatabase dieselbe Version hat, wird sie nicht ausgeführt). Wenn dies der Fall ist, handelt es sich um die aktuelle Version (nur die Überprüfung der Voraussetzungen wird durchgeführt und die Geodatabase bleibt unberührt).
In Bezug auf das Testen von 9.3 und 10.1 habe ich darüber nachgedacht, ein Beispieldatensatz zu erstellen, das nur in der Geodatabase der Version 10.0 / 10.1 erstellt werden kann, und dann zu überprüfen, ob es erstellt wird. Wenn nicht - dann ist es 9.3 / 10.1.
Nicht die eleganteste Lösung ...