Програмно визначити версію файлу ArcGIS Layer (*. Lyr)


10

Я пройшов через IStorage, специфікацію файлів сполучених файлів Microsoft, десеріалізацію ArcObjects тощо, намагаючись виявити версію файлу .lyr.

Використовуючи ArcObjects, я можу отримати властивості шару, джерело даних, ступінь і т. Д., Але властивість documentVersion LayerFileClass завжди звітує про "esriArcGISVersion10" для файлів 9,3 шару.

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

Будь-яка допомога вдячна.

Зверніть увагу на цю грубість форуму з 2007 року


Чи отримуєте ви різні результати в .NET vs java?
Кірк Куйкендалл

1
Ви намагалися використовувати MemoryBlobStreamClass замість LayerFileClass? Відкрийте файл lyr за допомогою IMemoryBlobStream.LoadFromFile, а потім перейдіть до IDocumentVersion.
Кірк Куйкендалл

RE коментар 2: Я щойно спробував - я отримую esriArcGISVersion10 для 8,3, 9 / 9,1, 9,2 та 9,3 файлів шарів. RE коментар 1: Java ....? Що це? ;) Спасибі за вашу допомогу. Я не думаю, що це можливо.
клапан Лондон

Це може бути корисно, якщо ми зрозуміли, чому ви намагаєтесь виявити версію файлу .lyr?
Стівен Куан

1
Тому що я хочу знати, що це за версія.
клапан Лондон

Відповіді:


6

Щойно файл шару завантажується, він відкриває оновлення його поточної версії. Властивість DocumentVersion існує виключно для встановлення версії для збереження назад до попередньої версії з класом LayerFile.

Фактична версія документа не записується у файл шару. Єдина написана інформація про версію - це внутрішня версія збереження об'єкта. Цю інформацію можна отримати за допомогою структурованого сховища, але вам знадобиться пошук цього номера версії для кожного можливого типу шару (і вам також потрібно буде витягнути орієнтир типу шару, щоб навіть вказати тип шару).


Дякую за відповідь, але я її трохи втратив. Що означає "кожен можливий тип шару" - наскільки я можу сказати, є п'ять можливих версій: 8.3, 9 / 9.1, 9.2, 9.3 і 10.
valveLondon

Під типами шарів я маю на увазі FeatureLayer, RasterLayer, GroupLayer тощо
Крейг Вільямс,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.