Determine mediante programación la versión del archivo ArcGIS Layer (*. Lyr)

10

He pasado por IStorage, Microsoft Compound File Spec, ArcObjects deserialization, etc. tratando de detectar la versión del archivo .lyr.

Al usar ArcObjects, puedo acceder a las propiedades de capa, fuente de datos, extensión, etc., pero la propiedad documentVersion de LayerFileClass siempre informa 'esriArcGISVersion10' en los archivos de capa 9.3.

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

Cualquier ayuda es apreciada.

Tenga en cuenta esta publicación del foro crujiente de 2007.

válvula de Londres
fuente
¿Obtiene resultados diferentes en .NET vs java?
Kirk Kuykendall el
1
¿Intentaste usar MemoryBlobStreamClass en lugar de LayerFileClass? Abra el archivo lyr con IMemoryBlobStream.LoadFromFile, luego envíe a IDocumentVersion.
Kirk Kuykendall el
Comentario RE 2: Acabo de intentarlo: obtengo esriArcGISVersion10 para los archivos de capa 8.3, 9 / 9.1, 9.2 y 9.3. Comentario RE 1: Java ...? ¿Que es eso? ;) Gracias por tu ayuda. No creo que sea posible.
valveLondon
Puede ser útil si entendemos por qué está tratando de detectar la versión del archivo .lyr?
Stephen Quan el
1
Porque quiero saber cuál es la versión.
valveLondon

Respuestas:

6

Una vez que se carga un archivo de capa, es la versión actual a medida que la apertura lo actualiza. La propiedad DocumentVersion existe únicamente para establecer una versión para guardar en una versión anterior con la clase LayerFile.

La versión real del documento no se escribe en un archivo de capa. La única información de versión escrita es la versión de persistencia interna del objeto. Esta información se puede extraer a través del almacenamiento estructurado, pero necesitaría una búsqueda de este número de versión para cada tipo de capa posible (y también necesitaría extraer el tipo de capa guid para incluso indicar el tipo de capa).

Craig Williams
fuente
Gracias por la respuesta, pero estoy un poco perdido por eso. Lo que se entiende por 'cada tipo de capa posible', por lo que puedo decir, hay cinco versiones posibles: 8.3, 9 / 9.1, 9.2, 9.3 y 10.
valveLondon
Por tipos de capa me refiero a FeatureLayer, RasterLayer, GroupLayer, etc.
Craig Williams