Программно определить версию файла ArcGIS Layer (*. Lyr)

10

Я прошел через IStorage, Microsoft Compound File Spec, десериализацию ArcObjects и т. Д., Пытаясь определить версию файла .lyr.

Используя ArcObjects, я могу получить свойства Layer, источник данных, экстент и т. Д., Но свойство documentVersion в LayerFileClass всегда сообщает об «esriArcGISVersion10» в файлах слоев 9.3.

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

Любая помощь приветствуется.

Обратите внимание на это твердое сообщение на форуме от 2007 года.

valveLondon
источник
Вы получаете разные результаты в .NET против Java?
Кирк Куйкендалл
1
Вы пытались использовать MemoryBlobStreamClass вместо LayerFileClass? Откройте файл lyr с помощью IMemoryBlobStream.LoadFromFile, затем приведите к IDocumentVersion.
Кирк Куйкендалл
RE комментарий 2: Я только что попробовал - я получаю esriArcGISVersion10 для файлов слоев 8.3, 9 / 9.1, 9.2 и 9.3. RE комментарий 1: Java ....? Что это такое? ;) Спасибо за вашу помощь. Я не думаю, что это возможно.
valveLondon
Может быть полезно, если мы поняли, почему вы пытаетесь определить версию файла .lyr?
Стивен Куан
1
Потому что я хочу знать, что это за версия.
valveLondon

Ответы:

6

Как только файл слоя загружен, это текущая версия, поскольку открытие обновляет его. Свойство DocumentVersion существует исключительно для установки версии для сохранения в предыдущей версии с классом LayerFile.

Фактическая версия документа не записывается в файл слоя. Единственная записанная информация о версии - это внутренняя постоянная версия объекта. Эта информация может быть извлечена через структурированное хранилище, но вам потребуется поиск номера этой версии для каждого возможного типа слоя (и вам также необходимо извлечь указатель типа слоя, чтобы даже указать тип слоя).

Крейг Уильямс
источник
Спасибо за ответ, но я немного растерялся. Что подразумевается под «каждым возможным типом слоя» - насколько я могу судить, существует пять возможных версий: 8.3, 9 / 9.1, 9.2, 9.3 и 10.
valveLondon
Под типами слоев я подразумеваю FeatureLayer, RasterLayer, GroupLayer и т. Д.
Крейг Уильямс