Existe uma maneira de dizer a versão do geodatabase usando Python?

8

Quero descobrir se um arquivo ou um geodatabase pessoal é 9.3, 10.0, 10.1, etc.

Existe uma maneira de fazer isso usando Python?

ianbroad
fonte
Existe uma maneira de diferenciar um geodatabase "mais antigo" (10.2) de um geodatabase mais recente (10.7)? A maioria dos meus geodatabases eu criei em 10,2 & I atualizado para 10,7 e seria bom se eu pudesse distinguir entre as 2 versões muito diferentes ....
Patty Miller

Respostas:

8

Eu tentaria a propriedade de liberação Describe Workspace

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

Nicholas Graf
fonte
E se eu estiver usando 10.0?
ianbroad
2
@IB, na sua pergunta original, você perguntou se também poderia descobrir se um gdb era 10.1, por isso acho que é justo supor que você esteja usando o 10.1, pois é improvável que a versão anterior (ou seja: 10.0) possa para lhe dizer algo sobre uma versão futura do gdb.
precisa saber é o seguinte
Na ajuda vinculada, parece que não há diferenciação entre os geodatabases 10.0 e 10.1 da versão. Ambos retornarão o valor 3,0,0.
precisa saber é o seguinte
6

Aqui está uma solução ArcObjects + comtypes que funciona para mim na 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")

Resultado:

>>> 
10.0

Pegue comtypes aqui e ESRICOMHelpers aqui. Se você estiver na versão 10.1, certifique-se de ajustar os comtipos ', automation.pyconforme descrito nesta resposta .

Nota: Esteja avisado de que isso também retorna 10.0 para 10.1 geodatabases quando executado a partir do ArcGIS 10.0! Edit: Na verdade, isso retorna 10.0 para um geodatabase 10.1 quando executado a partir do ArcGIS 10.1 também! Não tenho certeza do que está acontecendo: |

blah238
fonte
1
Você tem certeza de que é um GeoDatabase 10.1 e não apenas um banco de dados 10.0 que foi aberto no 10.1? Você pode usar o botão "atualizar Geodatabase"? help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//…
Ragi Yaser Burhum
Ele diz que está na versão atual da minha caixa 10.1 e não posso atualizá-la.
precisa saber é
1
ArcGIS bug certamente :)
Ragi Yaser Burhum
1
Na verdade, a 10,1 arcpy Workspace descrever releaseretornos de propriedade da mesma para ambos os 10.0 e 10.1 geodatabases libertação, bem como: resources.arcgis.com/en/help/main/10.1/index.html#/...
blah238
1
Tudo o que esse código faz é fazer um select () em uma das tabelas que possui uma string chamada version. Essa sequência é atualizada sempre que o esquema do GeoDatabase é alterado. É muito possível que o esquema do GeoDatabase não tenha sido alterado para essa versão e, portanto, ninguém tocou no código e, portanto, o valor não foi tocado. IMHO, ele deve ser tocado em todas as versões, mas acho que se o esquema for o mesmo, significa que pode ser aberto nas duas versões do ArcGIS - portanto, na realidade, não existe um GDB "10.1", apenas um 10.0 GDB.
Ragi Yaser Burhum
1

Boa pergunta! Na 10.0, não consigo encontrar nenhum método Python para descrever a versão do geodatabase. Testei usando a ferramenta GP do geodatabase de atualização na versão 10.1 e pode ser útil.

"A ferramenta Upgrade Geodatabase funciona apenas com geodatabases que estão em uma versão anterior."

Isso significa que podemos testar a execução dessa ferramenta sem definir a opção "Atualizar geodatabase" apenas para ver se ela será executada (se o geodatabase for da mesma versão, não será executado). Se for - então é da versão atual (somente a verificação de pré-requisitos será realizada e o banco de dados geográfico permanecerá intocado).

Sobre os testes 9.3 e 10.1 - Eu estava pensando em tentar criar um conjunto de dados de amostra que é possível criar apenas no geodatabase da versão 10.0 / 10.1 e depois verificar se ele foi criado. Se não - então é 9.3 / 10.1.

Não é a solução mais elegante ...

Alex Tereshenkov
fonte