IPersistStream

投稿日:2006/11/19 (日) 更新日:

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

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

Dim pMemoryBlobStream As IMemoryBlobStream
Set pMemoryBlobStream = New MemoryBlobStream
pMemoryBlobStream.LoadFromFile "C:\Temp\MyFile.blb"

Dim pFeatureClassName As IFeatureClassName
Dim pPropertySet As IPropertySet
Set pPropertySet = New PropertySet

Dim pPersistStream As IPersistStream
Set pPersistStream = pPropertySet
Set pObjectStream.Stream = pMemoryBlobStream
pPersistStream.Load pObjectStream&

Set pFeatureClassName = pPropertySet.GetProperty("ClassBreaksRenderer")

■出典 ArcGIS Developer Help Online

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

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

関連記事

-プログラミング
-,

Copyright© WINGFIELD since1981 , 2018 All Rights Reserved.