csv-plot.xl(CSVプロットデータのマトリックスへの変換)

著者: 森 洋久 / joshua@globalbase.org  ※ 

プロトタイプ

xl csv-plot.xl [CSV-FILE] [CORRESPOND] [MATRIX] [X-DOTS] [Y-DOTS]

引数

[CSV-FILE] プロットデータのCSVフィアル

[CORRESPOND] 対応変換ファイル

[MATRIX] 保存先マトリックスファイル

[X-DOTS] X方向ドット数。

[Y-DOTS] Y方向ドット数。

オプション

環境

エージェント  exl [UNDEF REF (exl)]

説明

LANDSCAPEをインストールされている場合、/usr/local/xl-gbs/xlsamples/gbs/plot1 にサンプルデータがあるのでこれを参考に以下を読んでいただきたい。

このスクリプトは、CSVファイル [CSV-FILE] に列挙されたプロットデータを [MATRIX] で与えられたマトリックスフォーマットのファイルへ変換する。マトリックスとなったプロットデータは、全体を見ていて、多量のプロットが画面に表示しきれない場合は、次のような動作となる。
  1. アイコンを小さくする。
  2. アイコンを小さくしても表示しきれない場合は、単なる色のついた点にする。
  3. 画面の1ピクセルにいくつものプロットが入るような場合は、点をマージして領域表示にする。
このような操作により、表示可能プロット数はほぼ無制限となる。

マトリックスは基本的には整数座標系であるのに対して、プロットはたとえば緯度経度に対するプロットなど、連続(実数)座標系のプロットである場合が多い。そのため、マトリックスでは解像度を指定し、プロットの座標を整数に変換する。言ってみれば、実数座標系を非常に細かいグリッドに分割し、プロットの位置をそのグリッドの整数座標で表す。 [X-DOTS][Y-DOTS] はその整数グリッドの大きさを表す。

マトリックス内部の1プロットに与えられた属性は0から始まる番号で識別される。座標XX,YYのプロットのN番の属性といった具合である。各属性にはデータ型が存在する。このデータ型は、マトリックスの画像(グリッド)解像度を下げていく過程で、プロット同士のマージが生じた場合にどのようにマージするかを指定するものでもある。このような観点から以下のデータ型が定義されている。まず基本データ型である。 さらに、各基本データ型に詳細データ型が存在する。 CSVファイル [CSV-FILE] は単なる属性の列挙なので、どれが座標なのかわからない。また同様にCSVファイルの属性は型をもっていない。そこで、
  1. CSVファイルのどの列を座標値の列とみなすか。
  2. CSVファイルの残りの列をマトリックスファイルの何番の属性に割り当てるか。
  3. 割り当てるときに、型をなににするか。
を指定しなければならない。この指定を行うのが、 [CORRESPOND] で指定されるファイルである。[CORRESPOND]は、XLスクリプトファイルであるが、実際に使う命令は少ない。 /usr/local/xl-gbs/xlsamples/plot1/gaz.xl がこれにあたる。これを開くと、使われている命令は、?xl,Define,gmxPgPlotField のみである。

Defineで定義されている変数

<Define> ^reso	3600 </Define>
 

は、解像度を変数resoに定義しており、これは、3600dot/degree という意味である。例に挙げられている、gaz.csvでは、列A,Bにdegree=度で座標が指定されており、マトリックスファイルでは、1秒を1ドットとして定義しているためである。 ファイルの最後にある、

<Define> ^StartLine 1 </Define>
 

はCSVの最初の無視する行数を示している。例では最初の1行を無視する。

gmxPgPlotField

次につづく、gmxPgPlotFieldによってcsvの各列と、マトリックスファイルの座標、および属性番号の対応を実現している。gmxPgPlotFieldはエージェントgbmxの関数になっており詳しい機能 XL関数(環境)(gmxPgPlotField)を参照されたい。csv-plot.xlスクリプトでは以下2種類のように使われる。

(A)
<gmxPgPlotField id="^mtx" csv="A" merge-type="^mxPgTYPE_INT" dim="0">
  ^Fields ^mxPgFDIT_DD ^reso (* 180 reso) 0</gmxPgPlotField>
 



(B)
(B-1)
<gmxPgPlotField id="^mtx" csv="C" merge-type="^mxPgTYPE_STRING" label="5">
  ^Fields utf-8 ([quote type="direct"] '([field name="LABEL"] ($ ___convert)))</gmxPgPlotField>
(B-2)
<gmxPgPlotField id="^mtx" merge-type="^mxPgTYPE_RGBA" label="0">
  ^Fields 0 0xff000000</gmxPgPlotField>
(B-3)
<gmxPgPlotField id="^mtx" csv="D" merge-type="^mxPgTYPE_STRING" label="1">
  ^Fields utf-8 () test-http </gmxPgPlotField>
 

(A) は座標を指定する方法であり、 (B) は属性の対応を指定する方法である。XML属性は以下のとおりである。 最後にgmxPgPlotFieldの要素データの与え方はmerge-type XML属性で与えたデータ型によって異なる。 整数型における[CSV中のデータ型] これに指定する値としては以下のものがある。 /usr/local/xl-gbs/xlsamples/gbs/plot1の使い方

プロットデータを公開したい場合、
  1. /usr/local/xl-gbs/xlsamples/gbs/plot1を公開ポイントへコピーする。たとえばそのディレクトリを、myplotとすると、
  2. myplotの中身img.crdの書誌データを編集する。
  3. 公開したいプロットデータのCSVファイルを用意し、それを、myplot内にたとえば、myplot.csvというファイルとして保存する。
  4. gaz.xlファイルをmyplot.csv用に編集し、属性の対応をはかる。

  5. 
    xl csv-plot.xl - - / myplot.csv gaz.xl img.mtx [X-DOTS] [Y-DOTS]
     

    を実行する。

  6. 
    xl makefile.xl - -
     

    を実行する。
という流れで公開可能である。

ページトップへ戻る

戻り値

エラー

参考

/usr/local/xl-gbs/xlsamples/gbs/plot1

バグ



ページトップへ戻る
  GLOBALBASEは、オープンソース・ソフトウェア支援プログラムSOURCEFORGE.JPに参加しています。 SourceForge.jp SourceForge.net Logo