プログラムでArcGIS Layer(* .lyr)ファイルのバージョンを決定する


10

IStorage、Microsoft Compound File Spec、ArcObjectsの逆シリアル化などを実行して、.lyrファイルのバージョンを検出しようとしました。

ArcObjectsを使用して、レイヤープロパティ、データソース、範囲などを取得できますが、LayerFileClassのdocumentVersionプロパティは、9.3レイヤーファイルの「esriArcGISVersion10」を常に報告します。

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

どんな助けでもありがたいです。

2007年からのこの無愛想なフォーラム投稿に注意してください。


.NETとJavaでは異なる結果が得られますか?
カークカイケンダル2012年

1
LayerFileClassの代わりにMemoryBlobStreamClassを使用してみましたか?IMemoryBlobStream.LoadFromFileでlyrファイルを開き、IDocumentVersionにキャストします。
カークカイケンダル

REコメント2:試してみました-8.3、9 / 9.1、9.2、9.3レイヤーファイルのesriArcGISVersion10を取得しました。REコメント1:Java ......?あれは何でしょう?;) ご協力いただきありがとうございます。それは可能ではないと思います。
valveLondon 2012年

なぜ.lyrファイルのバージョンを検出しようとしているのかを理解していると役立つでしょう。
Stephen Quan 2012年

1
私はバージョンが何であるか知りたいので。
valveLondon、2012年

回答:


6

レイヤーファイルがロードされると、openingがそれをアップグレードするので、それは現在のバージョンです。DocumentVersionプロパティは、レイヤーファイルクラスを使用して、保存するバージョンを以前のバージョンに戻すためにのみ存在します。

実際のドキュメントバージョンはレイヤーファイルに書き込まれません。書き込まれるバージョン情報は、オブジェクトの内部永続性バージョンのみです。この情報は構造化ストレージを介して抽出できますが、可能なすべてのレイヤータイプについてこのバージョン番号のルックアップが必要です(さらに、レイヤータイプGUIDを抽出してレイヤータイプを通知する必要もあります)。


答えてくれてありがとう。でも少し迷ってしまいました。「すべての可能なレイヤータイプ」の意味-可能な限り5つのバージョンがあります:
8.3、9

レイヤタイプI平均FeatureLayer、RasterLayer、GroupLayerなどによって
クレイグ・ウィリアムズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.