Ermitteln Sie programmgesteuert die Version der ArcGIS Layer-Datei (*. Lyr)

10

Ich habe IStorage, Microsoft Compound File Spec, ArcObjects-Deserialisierung usw. durchlaufen und versucht, die .lyr-Dateiversion zu erkennen.

Mit ArcObjects kann ich auf die Layer-Eigenschaften, die Datenquelle, den Umfang usw. zugreifen, aber die documentVersion-Eigenschaft der LayerFileClass meldet immer 'esriArcGISVersion10' für 9.3-Layer-Dateien.

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

Jede Hilfe wird geschätzt.

Beachten Sie diesen knusprigen Forumsbeitrag von 2007.

ventilLondon
quelle
Erhalten Sie unterschiedliche Ergebnisse in .NET und Java?
Kirk Kuykendall
1
Haben Sie versucht, MemoryBlobStreamClass anstelle von LayerFileClass zu verwenden? Öffnen Sie die Lyr-Datei mit IMemoryBlobStream.LoadFromFile und wandeln Sie sie in IDocumentVersion um.
Kirk Kuykendall
RE-Kommentar 2: Ich habe es gerade versucht - ich bekomme esriArcGISVersion10 für Layer-Dateien der Versionen 8.3, 9 / 9.1, 9.2 und 9.3. RE Kommentar 1: Java ....? Was ist das? ;) Danke für Ihre Hilfe. Ich denke nicht, dass es möglich ist.
Ventil London
Es kann hilfreich sein, wenn wir verstanden haben, warum Sie versuchen, die .lyr-Dateiversion zu erkennen.
Stephen Quan
1
Weil ich wissen will, was die Version ist.
Ventil London

Antworten:

6

Sobald eine Layer-Datei geladen ist, handelt es sich um die aktuelle Version, die beim Öffnen aktualisiert wird. Die DocumentVersion-Eigenschaft dient ausschließlich zum Festlegen einer Version zum Speichern auf eine frühere Version mit der LayerFile-Klasse.

Die eigentliche Dokumentversion wird nicht in eine Layer-Datei geschrieben. Die einzige geschriebene Versionsinformation ist die interne Persistenzversion des Objekts. Diese Informationen können über einen strukturierten Speicher extrahiert werden. Sie benötigen jedoch eine Suche nach dieser Versionsnummer für jeden möglichen Layertyp (und Sie müssen auch die Layertyp-Anleitung extrahieren, um den Layertyp überhaupt zu ermitteln).

Craig Williams
quelle
Danke für die Antwort, aber ich bin ein bisschen verloren. Was ist mit "jeder mögliche Schichttyp" gemeint - soweit ich das
beurteilen
Mit Layertypen meine ich FeatureLayer, RasterLayer, GroupLayer usw.
Craig Williams