Pythonを使用してジオデータベースのバージョンを確認する方法はありますか?


8

ファイルまたはパーソナルジオデータベースが9.3、10.0、10.1などであるかどうかを確認したい

Pythonを使用してこれを行う方法はありますか?


「古い」ジオデータベース(10.2)と新しいジオデータベース(10.7)を区別する方法はありますか?私のジオデータベースのほとんどは、私は10.2で作成された&Iは、10.7にアップグレード&Iは.... 2つの非常に異なるバージョンを区別することができれば、それはいいだろう
パティ・ミラー

回答:


8

ワークスペースのリリースのプロパティを説明してみます

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


また、10.0を使用している場合はどうなりますか?
ianbroad 2013年

2
@IB、元の質問で、gdbが10.1かどうかも確認できるどうか尋ねました。以前のバージョン(つまり、10.0)がこれまで可能だったとは考えられないため、10.1を使用していると想定するのは当然だと思います。将来のバージョンのgdb について何かを教えてください。
RyanKDalton 2013年

リンクされたヘルプから、10.0と10.1リリースのジオデータベースには違いがないようです。どちらも値を返します3,0,0
blah238 2013年

6

これは、10.0で動作するArcObjects + comtypesソリューションです。

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")

出力:

>>> 
10.0

グラブはcomtypesこことESRICOMHelpersこちら。10.1の場合automation.pyは、この回答で説明されているように、comtypeを微調整してください。

注: ArcGIS 10.0から実行すると、10.1ジオデータベースに対しても10.0が返されることに注意してください編集:実際、ArcGIS 10.1から実行した場合も、10.1のファイルジオデータベースに対して10.0が返されます。何が起こっているのかわからない:|


1
10.1で開かれた10.0データベースだけでなく、10.1ジオデータベースであることを確認しますか?「ジオデータベースのアップグレード」ボタンを使用できますか?help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//...
Ragi Yaser Burhum

10.1ボックスの現在のリリースで、アップグレードできないと書いてあります。
blah238 2013年

1
ArcGISのバグは確かです:)
Ragi Yaser Burhum 2013年

1
実際にワークスペースarcpy 10.1は説明releaseだけでなく、両方の10.0と10.1のリリースのジオデータベースに同じプロパティを返します:resources.arcgis.com/en/help/main/10.1/index.html#/...
blah238

1
このコードで行うことは、versionという文字列を持つテーブルの1つでselect()を実行することだけです。その文字列は、GeoDatabaseスキーマが変更されるたびに更新されます。そのリリースではGeoDatabaseスキーマが変更されていなかった可能性が高いため、誰もコードに触れなかったため、値に触れませんでした。私見、すべてのリリースで触れられるはずですが、スキーマが同じであれば、両方のバージョンのArcGISで開くことができるので、「10.1」GDBはなく、10.0 GDBしかありません。
Ragi Yaser Burhum、2013

1

良い質問!10.0では、ジオデータベースのバージョンを記述するためのPythonメソッドが見つかりません。10.1でアップグレードジオデータベース GPツールを使用してテストしましたが、役立つ場合があります。

「ジオデータベースのアップグレードツールは、以前のリリースのジオデータベースに対してのみ機能します。」

これは、「ジオデータベースのアップグレード」オプションを設定せずに、このツールの実行をテストして、実行されるかどうかを確認できることを意味します(ジオデータベースのバージョンが同じ場合、実行されません)。表示される場合-現在のバージョンです(前提条件のチェックのみが実行され、ジオデータベースは変更されません)。

テスト9.3および10.1について-バージョン10.0 / 10.1のジオデータベースでのみ作成可能なサンプルデータセットを作成し、それが作成されるかどうかを確認しようと考えていました。そうでない場合-それは9.3 / 10.1です。

しかし、最もエレガントな解決策ではありません...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.