Déterminer par programme la version du fichier ArcGIS Layer (*. Lyr)

10

J'ai utilisé IStorage, Microsoft Compound File Spec, la désérialisation ArcObjects, etc. en essayant de détecter la version du fichier .lyr.

En utilisant ArcObjects, je peux accéder aux propriétés de la couche, à la source de données, à l'étendue, etc., mais la propriété documentVersion de la LayerFileClass rapporte toujours `` esriArcGISVersion10 '' sur les fichiers de la couche 9.3.

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

Toute aide est appréciée.

Notez ce post de forum croustillant de 2007.

valveLondres
la source
Obtenez-vous des résultats différents dans .NET vs java?
Kirk Kuykendall
1
Avez-vous essayé d'utiliser MemoryBlobStreamClass au lieu de LayerFileClass? Ouvrez le fichier lyr avec IMemoryBlobStream.LoadFromFile, puis transtypez en IDocumentVersion.
Kirk Kuykendall
RE commentaire 2: Je viens d'essayer - j'obtiens esriArcGISVersion10 pour les fichiers de couches 8.3, 9 / 9.1, 9.2 et 9.3. RE commentaire 1: Java ....? Qu'est-ce que c'est? ;) Merci de votre aide. Je ne pense pas que ce soit possible.
valveLondon
Il peut être utile de comprendre pourquoi vous essayez de détecter la version du fichier .lyr?
Stephen Quan
1
Parce que je veux savoir quelle est la version.
valveLondon

Réponses:

6

Une fois qu'un fichier de couches est chargé, c'est la version actuelle car l'ouverture le met à niveau. La propriété DocumentVersion existe uniquement pour définir une version à sauvegarder dans une version précédente avec la classe LayerFile.

La version réelle du document n'est pas écrite dans un fichier de couches. Les seules informations de version écrites sont la version de persistance interne de l'objet. Ces informations peuvent être extraites via un stockage structuré, mais vous auriez besoin d'une recherche de ce numéro de version pour chaque type de couche possible (et vous auriez également besoin d'extraire le guide de type de couche pour même indiquer le type de couche).

Craig Williams
la source
Merci pour la réponse mais je suis un peu perdu. Qu'entend-on par «tous les types de couches possibles» - pour autant que je sache, il existe cinq versions possibles: 8.3, 9 / 9.1, 9.2, 9.3 et 10.
valveLondon
Par types de calques, je veux dire FeatureLayer, RasterLayer, GroupLayer etc.
Craig Williams