Programowo określ wersję pliku ArcGIS Layer (*. Lyr)

10

Przeszedłem przez IStorage, Microsoft Compound File Spec, ArcObjects deserializację itp. Próbowałem wykryć wersję pliku .lyr.

Za pomocą ArcObjects mogę uzyskać informacje o właściwościach warstwy, źródle danych, zakresie itp., Ale właściwość documentVersion LayerFileClass zawsze zgłasza „esriArcGISVersion10” w plikach 9.3 warstw.

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

Każda pomoc jest mile widziana.

Zwróć uwagę na ten chrupiący post na forum z 2007 roku.

klapa Londyn
źródło
Czy otrzymujesz różne wyniki w .NET vs Java?
Kirk Kuykendall
1
Czy próbowałeś użyć MemoryBlobStreamClass zamiast LayerFileClass? Otwórz plik lyr za pomocą IMemoryBlobStream.LoadFromFile, a następnie rzutuj na IDocumentVersion.
Kirk Kuykendall
Komentarz do RE 2: Właśnie próbowałem - otrzymuję esriArcGISVersion10 dla plików warstw 8.3, 9 / 9.1, 9.2 i 9.3. Komentarz RE 1: Java ....? Co to jest? ;) Dzięki za pomoc. Nie sądzę, żeby to było możliwe.
valveLondon
Pomocne może być zrozumienie, dlaczego próbujesz wykryć wersję pliku .lyr?
Stephen Quan
1
Ponieważ chcę wiedzieć, jaka jest wersja.
valveLondon

Odpowiedzi:

6

Po załadowaniu pliku warstwy jest to bieżąca wersja, ponieważ otwieranie go aktualizuje. Właściwość DocumentVersion istnieje wyłącznie w celu ustawienia wersji do zapisywania z powrotem do poprzedniej wersji z klasą LayerFile.

Rzeczywista wersja dokumentu nie jest zapisywana do pliku warstwy. Jedyne zapisane informacje o wersji to wewnętrzna wersja trwałości obiektu. Informacje te można wyodrębnić za pomocą pamięci strukturalnej, ale trzeba będzie wyszukać ten numer wersji dla każdego możliwego typu warstwy (trzeba też wyodrębnić przewodnik typu warstwy, aby nawet powiedzieć typ warstwy).

Craig Williams
źródło
Dzięki za odpowiedź, ale trochę mnie to zagubiło. Co należy rozumieć przez „każdy możliwy typ warstwy” - o ile wiem, istnieje pięć możliwych wersji: 8.3, 9 / 9.1, 9.2, 9.3 i 10.
valveLondon
Przez typy warstw rozumiem FeatureLayer, RasterLayer, GroupLayer itp.
Craig Williams