Determinar programaticamente a versão do arquivo ArcGIS Layer (*. Lyr)

10

Passei por IStorage, Microsoft Compound File Spec, desserialização do ArcObjects etc. tentando detectar a versão do arquivo .lyr.

Usando o ArcObjects, posso acessar as propriedades da camada, a fonte de dados, a extensão etc., mas a propriedade documentVersion do LayerFileClass sempre reporta 'esriArcGISVersion10' nos arquivos da camada 9.3.

ILayerFile l = new LayerFileClass();
l.Open(fileName);
LayerFileClass t = (LayerFileClass)l;
string version = t.DocumentVersion.ToString();

Qualquer ajuda é apreciada.

Observe esta postagem no fórum de 2007.

valveLondon
fonte
Você obtém resultados diferentes no .NET vs java?
Kirk Kuykendall
1
Você tentou usar MemoryBlobStreamClass em vez de LayerFileClass? Abra o arquivo lyr com IMemoryBlobStream.LoadFromFile e, em seguida, faça a conversão para IDocumentVersion.
Kirk Kuykendall
Comentário do RE 2: Acabei de tentar - recebo esriArcGISVersion10 para arquivos de camada 8.3, 9 / 9.1, 9.2 e 9.3. RE comentário 1: Java ....? O que é isso? ;) Obrigado pela ajuda. Eu não acho que é possível.
usar o seguinte comando
Pode ser útil entendermos por que você está tentando detectar a versão do arquivo .lyr?
Stephen Quan
1
Porque eu quero saber qual é a versão.
usar o seguinte código

Respostas:

6

Depois que um arquivo de camada é carregado, a versão atual é a atualizadora. A propriedade DocumentVersion existe apenas para definir uma versão para salvar em uma versão anterior com a classe LayerFile.

A versão real do documento não é gravada em um arquivo de camada. As únicas informações de versão gravadas são a versão de persistência interna do objeto. Essas informações podem ser extraídas por meio de armazenamento estruturado, mas você precisa procurar esse número de versão para cada tipo de camada possível (e também precisa extrair o guia de tipo de camada para informar até o tipo de camada).

Craig Williams
fonte
Obrigado pela resposta, mas estou um pouco perdido por isso. O que se entende por 'todo tipo de camada possível' - até onde posso dizer, há cinco versões possíveis: 8.3, 9 / 9.1, 9.2, 9.3 e 10.
valveLondon
Por tipos de camada, quero dizer FeatureLayer, RasterLayer, GroupLayer etc.
Craig Williams