Secara terprogram menentukan versi file ArcGIS Layer (*. Lyr)

10

Saya telah melalui IStorage, Microsoft Compound File Spec, deserialization ArcObjects dll. Mencoba mendeteksi versi file .lyr.

Menggunakan ArcObjects, saya bisa mendapatkan di properti Layer, sumber data, luas, dll, tetapi properti documentVersion dari LayerFileClass selalu melaporkan kembali 'esriArcGISVersion10' pada file 9.3 layer.

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

Bantuan apa pun dihargai.

Perhatikan posting forum yang keras ini dari tahun 2007.

katup London
sumber
Apakah Anda mendapatkan hasil berbeda di .NET vs java?
Kirk Kuykendall
1
Apakah Anda mencoba menggunakan MemoryBlobStreamClass, bukan LayerFileClass? Buka file lyr dengan IMemoryBlobStream.LoadFromFile, lalu cor ke IDocumentVersion.
Kirk Kuykendall
RE komentar 2: Saya baru saja mencoba - Saya mendapatkan esriArcGISVersion10 untuk file layer 8.3, 9 / 9.1, 9.2 dan 9.3. RE komentar 1: Java ....? Apa itu? ;) Terima kasih atas bantuan Anda. Saya pikir itu tidak mungkin.
valveLondon
Mungkin bermanfaat jika kami mengerti mengapa Anda mencoba mendeteksi versi file .lyr?
Stephen Quan
1
Karena saya ingin tahu versi apa itu.
valveLondon

Jawaban:

6

Setelah file lapisan dimuat, ini adalah versi saat ini sebagai pembukaan yang memutakhirkannya. Properti DocumentVersion ada hanya untuk mengatur versi untuk disimpan kembali ke versi sebelumnya dengan kelas LayerFile.

Versi dokumen yang sebenarnya tidak ditulis ke file lapisan. Satu-satunya informasi versi yang ditulis adalah versi ketekunan internal objek. Informasi ini dapat diekstraksi melalui penyimpanan terstruktur tetapi Anda perlu mencari nomor versi ini untuk setiap jenis lapisan yang memungkinkan (dan Anda juga perlu mengekstraksi panduan jenis lapisan untuk mengetahui jenis lapisannya).

Craig Williams
sumber
Terima kasih atas jawabannya tetapi saya agak bingung karenanya. Apa yang dimaksud dengan 'setiap jenis lapisan yang memungkinkan' - sejauh yang saya tahu ada lima versi yang memungkinkan: 8.3, 9 / 9.1, 9.2, 9.3 dan 10.
valveLondon
Menurut jenis lapisan yang saya maksud FeatureLayer, RasterLayer, GroupLayer dll.
Craig Williams