iRICデフォルトのカラーマップ設定について

iRICもv4になり色々と新機能が追加されているので、ユーザーにもっと興味を持ってもらうためと自分の備忘録としてまとめます。

# iRICのデフォルトカラーマップ設定はじつは色々ある

iRICにはデフォルトのカラーマップに関する設定がいくつかあります。

1. プロジェクト毎のデフォルトカラーマップ設定（**スカラー毎に設定**）
2. ソルバー毎のデフォルトカラーマップ設定（**スカラー毎に設定**）
3. ユーザー個人のデフォルトカラーマップ設定
4. デフォルトのデフォルトカラーマップ設定

デフォルト設定の優先度は上記の並び順通りとなっています。

これらの設定を組み合わせることで「可視化ウィンドウを開くたびに毎回同じ設定をさせられる。。。」なんて手間から開放されるので是非活用してみてください。


以下にそれぞれの設定方法と概要、実態をまとめましたが、小難しいので大体は読み飛ばしても構いません。


# それぞれの設定の概要と実態

## プロジェクト毎のデフォルトカラーマップ設定

最も優先度が高く、ユーザーが一番簡単に設定できるデフォルト設定です。

プロジェクト毎のデフォルトカラーマップ設定はユーザーが任意で設定可能で、カラーマップの設定画面で`デフォルトに設定する`をクリックすると、そのプロジェクト内でのデフォルトのカラーマップ設定を**スカラー毎**に設定することが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/10021ab5-b70a-41a7-b701-6121489705d5.png)

<details><summary>実態について</summary>

この設定はiRICのプロジェクトの情報が保存されている`project.xml`に以下のように記載されています。
`DefaultColorMapSettings`要素がプロジェクト毎のデフォルトカラーマップ設定全体のくくりとなり、その中に子要素`<ColorMapSetting>`としてスカラー毎のデフォルトカラーマップ設定を記載しています。

```xml
<DefaultColorMapSettings>
    <ColorMapSetting name="Depth(m)" transitionMode="0" valueMode="1" autoValueRange="false" minValue="0.1" maxValue="13" fillUppeer="true" fillLower="false" colorTableMinValue="0" visible="true" direction="0" barAutoWidth="false" barWidth="30" barAlign="1" title="Depth(m)" autoNumberOfLabels="true" numberOfLabels="9" labelSkipRate="1" labelFormat="%5.2f" titleFont="Times New Roman,20,-1,5,50,0,0,0,0,0,Regular" labelFont="Times New Roman,20,-1,5,50,0,0,0,0,0,Regular" titleColor="#000000" labelColor="#000000" backgroundColor="#ffffff" backgroundOpacityEnabled="true" backgroundOpacityPercent="20" showBorder="true" position="4" horizontalMarginRatio="0.1224" verticalMarginRatio="0.094" autoSize="true" width="636" height="126">
        <Item value="0" color="#f7fbff" transparent="false"/>
        <Item value="0.125" color="#deebf7" transparent="false"/>
        <Item value="0.25" color="#c6dbef" transparent="false"/>
        <Item value="0.375" color="#9ecae1" transparent="false"/>
        <Item value="0.5" color="#6baed6" transparent="false"/>
        <Item value="0.625" color="#4292c6" transparent="false"/>
        <Item value="0.75" color="#2171b5" transparent="false"/>
        <Item value="0.875" color="#08519c" transparent="false"/>
        <Item value="1" color="#08306b" transparent="false"/>
    </ColorMapSetting>
</DefaultColorMapSettings>
```

プロジェクト毎のデフォルトカラーマップ設定はiRICのGUI上で容易に変更できるのでこの`project.xml`の中身までは気にすることはあまりないでしょう。

</details>

## ソルバー毎のデフォルトカラーマップ設定

プロジェクト毎のデフォルト設定の次に優先される設定です。
ユーザーが扱うには少し複雑かもしれませんが、ソルバーの計算結果の**スカラー毎**に設定ができるため使いこなすことが出来れば非常に便利な機能です。

このデフォルト設定はソルバーの情報を定義している`definition.xml`に情報を記載して設定します。

<details><summary>実態について</summary>

実態としては`definition.xml`内の`<GridRelatedCondition>`要素内に計算結果スカラー毎の要素`<Output>`を定義し、この中に`<ColorMapSetting>`または`<EnumerateColorMapSetting>`として定義されています。

```xml: 例

<GridRelatedCondition>

<!-- 実数型のカラーマップ設定の例 -->
    <Output name="ElevationChange(m)" caption="ElevationChange(m)">
		<Definition valueType="real" position="node" />
		<ColorMapSetting transitionMode="0" valueMode="1" autoValueRange="true" minValue="0" maxValue="1" fillUppeer="true" fillLower="true" colorTableMinValue="0" visible="true" direction="1" barAutoWidth="false" barWidth="30" barAlign="2" title="title" autoNumberOfLabels="true" numberOfLabels="2" labelSkipRate="1" labelFormat="%5.2f" titleFont="Arial,14,-1,5,50,0,0,0,0,0,Regular" labelFont="Arial,14,-1,5,50,0,0,0,0,0,Regular" titleColor="#000000" labelColor="#000000" backgroundColor="#ffffff" backgroundOpacityEnabled="true" backgroundOpacityPercent="20" showBorder="true" position="7" horizontalMarginRatio="0" verticalMarginRatio="0.1" autoSize="true" width="300" height="200">
			<Item value="0.000000" color="#0000ff" transparent="false"/>
			<Item value="0.500000" color="#fffefe" transparent="false"/>
			<Item value="1.000000" color="#ff0000" transparent="false"/>
		</ColorMapSetting>
	</Output>

<!-- 整数型で列挙型のカラーマップ設定の例 -->
	<Output name="HABITAT_Fr_Classes" caption="HABITAT_Fr_Classes">
		<Definition position="node" valueType="integer">
			<Enumeration value="1" caption="Pool" />
			<Enumeration value="2" caption="Glide" />
			<Enumeration value="3" caption="Run" />
			<Enumeration value="4" caption="Riffle" />
			<Enumeration value="5" caption="Cascade/rapid" />
		</Definition>
		<EnumerateColorMapSetting visible="true" direction="1" barAutoWidth="false" barWidth="30" barAlign="1" title="HABITAT_Fr_Classes" titleFont="MS UI Gothic,14,-1,5,50,0,0,0,0,0" labelFont="MS UI Gothic,11,-1,5,50,0,0,0,0,0" titleColor="#000000" labelColor="#000000" backgroundColor="#ffffff" backgroundOpacityEnabled="true" backgroundOpacityPercent="20" showBorder="true" position="7" horizontalMarginRatio="0.01" verticalMarginRatio="0.15" autoSize="false" width="300" height="200">
			<Item value="1" color="#00007f" transparent="false"/>
			<Item value="2" color="#0000ff" transparent="false"/>
			<Item value="3" color="#ffff00" transparent="false"/>
			<Item value="4" color="#ffaa00" transparent="false"/>
			<Item value="5" color="#55ff7f" transparent="false"/>
		</EnumerateColorMapSetting>
	</Output>
</GridRelatedCondition>

```

この設定についてはソルバー開発者が`definition.xml`の`<GridRelatedCondition>`に計算結果スカラー毎の要素`<Output>`を登録していない場合、ユーザーで追加しなければいけないので少し面倒ですが、以下の記事で`<Output>`登録の作業手順を紹介していますので挑戦したい方は読んでみてください。

https://qiita.com/starfieldKt/items/ee1b4822b4654adb54b3

`definition.xml`の要素のリファレンスはこちらです。

https://iric-solver-dev-manual.readthedocs.io/ja/v4_jp/05/04_reference.html

</details>

## ユーザー個人のデフォルトカラーマップ設定

プロジェクト毎、ソルバー毎の設定がされていない場合、この設定がデフォルトとして反映されます。
上記の2つとは違い、ここでの設定はスカラーごとには設定されず、実数型のスカラー全てに反映されます。

iRICをインストールした段階ではこれは設定されていないので、ユーザーが設定をする必要があります。
簡単な設定方法は好みのカララーマップ設定をiRIC上で調整し、`IRICROOT/private/colormaps`に`default.cmsetting`という名前でカラーマップ設定ファイルを出力してください。

:::note
（`IRICROOT`はiRICがインストールされているフォルダです）
:::

<details><summary>実態について</summary>

実態は`IRICROOT/private/colormaps`に置かれている`default.cmsetting`というカラーマップ設定ファイルです。
`default.cmsetting`とうファイル名であればよいので、気に入ったカラーマップ設定をiRICからエクスポートして`default.cmsetting`にリネームするだけで設定ができます。

詳しくは以下の記事で解説していますのでそちらを御覧ください。

https://qiita.com/starfieldKt/items/20ff99ab058e52e84b02#%E7%95%AA%E5%A4%96%E7%B7%A8%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E3%82%AB%E3%83%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%97%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B

</details>

## デフォルトのデフォルトカラーマップ設定

上記のデフォルト設定がすべてない際に読み込まれるデフォルトのカラーマップ設定です。
iRICをインストールした時点での初期のデフォルトカラーマップ設定になります。

見慣れた虹色のやつです。
特にユーザーがこの設定を変更することはありません
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/6d2ccd2f-5c1d-41df-81cb-76f41cddf2af.png)

<details><summary>実態について</summary>

実態は`IRICROOT/colormaps`に置かれている`default.cmsetting`というカラーマップ設定ファイルです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/791c9a7b-b0fc-45ab-8602-500ad46bd2db.png)

個人のデフォルト設定として`IRICROOT/private/colormaps/default.cmsetting`を作成せず、こちらの設定を直接弄っても別に問題はありませんが、バックアップ的な意味でこちらは編集しないことをおすすめします。

</details>

# カラーマップ設定の要素、属性について

ここまで4つのデフォルトカラーマップ設定の概要と実態について説明しました。

「プロジェクト毎の設定」と「ソルバー毎の設定」はそれぞれ`project.xml`と`definition.xml`に記載、
「ユーザー個人のデフォルト設定」と「デフォルトのデフォルト設定」については特定のディレクトリに`default.cmsetting`を配置するということで、カラーマップ設定の情報の持ち方はそれぞれでした。

ただし、カラーマップ設定の要素の書き方はすべて同じです。
実数型の場合は以下のようになりますが、これはカラーマップ設定ファイル(*.cmsetting)の中身そのものです。

```xml
<ColorMapSetting 
transitionMode="0" valueMode="1" autoValueRange="true" minValue="0" maxValue="1" fillUppeer="true" fillLower="true" colorTableMinValue="0" visible="true" direction="1" barAutoWidth="false" barWidth="30" barAlign="1" title="title" autoNumberOfLabels="true" numberOfLabels="2" labelFormat="%5.2f" titleFont="Century Gothic,14,-1,5,50,0,0,0,0,0,Regular" labelFont="Century Gothic,14,-1,5,50,0,0,0,0,0,Regular" titleColor="#000000" labelColor="#000000" backgroundColor="#ffffff" backgroundOpacity="20" position="7" horizontalMarginRatio="0" verticalMarginRatio="0.1" width="300" height="200">
    <Item value="0" color="#0000ff" transparent="false"/>
    <Item value="0.25" color="#00ffff" transparent="false"/>
    <Item value="0.5" color="#00ff00" transparent="false"/>
    <Item value="0.75" color="#ffff00" transparent="false"/>
    <Item value="1" color="#ff0000" transparent="false"/>
</ColorMapSetting>
```

この内容に興味があれば以下の記事の「【番外編2】カラーマップの設定ファイルの中身」を読んでみてください。

https://qiita.com/starfieldKt/items/20ff99ab058e52e84b02#%E7%95%AA%E5%A4%96%E7%B7%A82%E3%82%AB%E3%83%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%97%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%B8%AD%E8%BA%AB