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.


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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.