Determinare a livello di codice la versione del file ArcGIS Layer (*. Lyr)


10

Ho provato IStorage, Microsoft Compound File Spec, la deserializzazione di ArcObjects, ecc., Cercando di rilevare la versione del file .lyr.

Usando ArcObjects, riesco ad accedere alle proprietà del livello, all'origine dati, all'estensione, ecc., Ma la proprietà documentVersion di LayerFileClass riporta sempre "esriArcGISVersion10" su file 9.3.

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

Qualsiasi aiuto è apprezzato.

Nota questo post sul forum crusty del 2007.


Ottieni risultati diversi in .NET vs java?
Kirk Kuykendall,

1
Hai provato ad usare MemoryBlobStreamClass invece di LayerFileClass? Apri il file lyr con IMemoryBlobStream.LoadFromFile, quindi esegui il cast su IDocumentVersion.
Kirk Kuykendall,

RE commento 2: Ho appena provato - Ottengo esriArcGISVersion10 per i file di livello 8.3, 9 / 9.1, 9.2 e 9.3. RE commento 1: Java ....? Cos'è quello? ;) Grazie per l'aiuto. Non penso sia possibile.
Valvola Londra,

Potrebbe essere utile se abbiamo capito perché stai cercando di rilevare la versione del file .lyr?
Stephen Quan,

1
Perché voglio sapere qual è la versione.
Valvola Londra

Risposte:


6

Una volta caricato un file di livello, è la versione corrente in quanto l'apertura lo aggiorna. La proprietà DocumentVersion esiste esclusivamente per impostare una versione per il salvataggio su una versione precedente con la classe LayerFile.

La versione effettiva del documento non viene scritta in un file di livello. Le uniche informazioni sulla versione scritte sono la versione di persistenza interna dell'oggetto. Queste informazioni possono essere estratte tramite una memoria strutturata, ma per ogni possibile tipo di livello è necessario cercare questo numero di versione (e per estrarre il tipo di livello è necessario anche estrarre la guida del tipo di livello).


Grazie per la risposta ma mi sono un po 'perso. Cosa si intende per "ogni possibile tipo di strato" - per quanto ne so, ci sono cinque possibili versioni: 8.3, 9 / 9.1, 9.2, 9.3 e 10.
valvola

Per tipi di layer intendo FeatureLayer, RasterLayer, GroupLayer ecc.
Craig Williams
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.