IPersistStream

      2013/10/04

ArcGIS Engineはレイヤ ファイル(.lyr)を作成できません。なので数値分類などの凡例情報をファイルとして保存するには,マップ ドキュメント(.mxd)を作るしかありません。

と思ったらありましたIPersistStream。あらゆるArcGISのオブジェクトをバイナリファイルで格納できる優れもの。IPersistStreamを持ってるクラスならすべてバイナリ形式で保存できます。

ヘルプによるとIPersistStreamはMicrosoftが提供しているインタフェースだそうだ。

これならArcGIS Engineでシンボルの保存・読み込みもばっちりです。

■バイナリ型でClassBreaksRendererを保存

Dim pMemoryBlobStream As IMemoryBlobStream
Set pMemoryBlobStream = New MemoryBlobStream
Dim pObjectStream As IObjectStream
Set pObjectStream = New ObjectStream
Set pObjectStream.Stream = pMemoryBlobStream<br /><br />Dim pPersistStream As IPersistStream
Dim pPropertySet As IPropertySet
Set pPropertySet = New PropertySet
pPropertySet.SetProperty "ClassBreaksRenderer", pClassBreaksRenderer
Set pPersistStream = pPropertySet
pPersistStream.Save pObjectStream, False
pMemoryBlobStream.SaveToFile “C:\Temp\MyFile.blb”

■ファイルからClassBreaksRendererを読み込み

Dim pObjectStream As IObjectStream
Set pObjectStream = New ObjectStream<br /><br />Dim pMemoryBlobStream As IMemoryBlobStream
Set pMemoryBlobStream = New MemoryBlobStream
pMemoryBlobStream.LoadFromFile "C:\Temp\MyFile.blb"<br /><br />Dim pFeatureClassName As IFeatureClassName
Dim pPropertySet As IPropertySet
Set pPropertySet = New PropertySet<br /><br />Dim pPersistStream As IPersistStream
Set pPersistStream = pPropertySet
Set pObjectStream.Stream = pMemoryBlobStream
pPersistStream.Load pObjectStream<br /><br />Set pFeatureClassName = pPropertySet.GetProperty("ClassBreaksRenderer")

■出典 ArcGIS Developer Help Online

IPersistStream Interface //edndoc.esri.com/arcobjects/9.1/default.asp?url=/arcobjects/9.1/ComponentHelp/esriSystem/IPersistStream.htm

ObjectStream CoClass //edndoc.esri.com/arcobjects/9.1/default.asp?url=/arcobjects/9.1/ComponentHelp/esriSystem/ObjectStream.htm

 - GIS, ArcObjects