YouTube | Facebook | Twitter  Feed

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

関連記事

  • この記事を書いた人

羽田 康祐

呉市生まれ広島市出身。Esri認定インストラクター、GIS上級技術者、測量士補、潜水士。GISy / GISc とその関連分野である地理学・地図学について日々の出来事で学んだ記憶を記録するためにブログを書いています。行動原理は伊達と酔狂。好きな地形は圏谷。好きな地図投影法はパースクインカンシャル図法。GIS を使った自己紹介はこちら

-プログラミング
-

Copyright© WINGFIELD since1981 , 2020 All Rights Reserved.