Gibt es eine Möglichkeit, die Geodatabase-Version mit Python zu ermitteln?


8

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?


Gibt es eine Möglichkeit, eine "ältere" Geodatabase (10.2) von einer neueren Geodatabase (10.7) zu unterscheiden? Die meisten meiner Geodatabases habe ich in 10.2 erstellt und auf 10.7 aktualisiert. Es wäre schön, wenn ich zwischen den beiden sehr unterschiedlichen Versionen unterscheiden könnte ...
Patty Miller,

Antworten:


8

Ich würde die Release-Eigenschaft Describe Workspace ausprobieren

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


Und wenn ich 10.0 benutze?
Ianbroad

2
@IB, in Ihrer ursprünglichen Frage haben Sie gefragt, ob Sie auch herausfinden könnten, ob eine GDB 10.1 ist. Ich denke, es war fair anzunehmen, dass Sie 10.1 verwenden, da es unwahrscheinlich ist, dass eine frühere Version (dh: 10.0) jemals in der Lage sein würde um dir etwas über eine zukünftige version gdb zu erzählen .
RyanKDalton

Aus der verknüpften Hilfe geht hervor, dass es keinen Unterschied zwischen Geodatabases der Versionen 10.0 und 10.1 gibt. Beide geben den Wert zurück 3,0,0.
blah238

6

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.pydie 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: |


1
Sind Sie sicher, dass es sich um eine 10.1-GeoDatabase handelt und nicht nur um eine 10.0-Datenbank, die in 10.1 geöffnet wurde? Können Sie die Schaltfläche "Geodatabase aktualisieren" verwenden? help.arcgis.com/de/arcgisdesktop/10.0/help/index.html#//…
Ragi Yaser Burhum

Es heißt, dass es sich um die aktuelle Version meiner 10.1-Box handelt und ich sie nicht aktualisieren kann.
blah238

1
ArcGIS Bug sicher :)
Ragi Yaser Burhum

1
Tatsächlich gibt die 10.1 arcpy Workspace description- releaseEigenschaft sowohl für
10.0-

1
Dieser Code führt lediglich select () für eine der Tabellen aus, deren Zeichenfolge version lautet. Diese Zeichenfolge wird aktualisiert, wenn das GeoDatabase-Schema geändert wird. Es ist sehr wahrscheinlich, dass das GeoDatabase-Schema für diese Version nicht geändert wurde und daher niemand den Code berührt hat und daher der Wert nicht berührt wurde. IMHO sollte es von jeder Version berührt werden, aber ich denke, wenn das Schema das gleiche ist, bedeutet es, dass es auf beiden ArcGIS-Versionen geöffnet werden kann - in Wirklichkeit gibt es also keine "10.1" GDB, nur eine 10.0 GDB.
Ragi Yaser Burhum

1

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 ...

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.