<document>
<title "手動でビットマップデータをサーバにアップする方法">
<ul>
<li>ビットマップデータを作る．</li>
<li>上記ビットマップデータをPPMフォーマット（portable bit/pixel map ）へ変換</li>
<li>PPMフォーマットをGLOBALBASE用階層型ビットマップフォーマットCR(Compressed Rectangle)へ変換</li>
<li>CRフォーマットのデータの書誌情報，それを載せる座標系，を準備する．</li>
<li>CRフォーマット（書誌情報）-> 座標系 -> 外の座標系　とマッピングする．（マッピングファイルを２つ作る）</li>
<li>サーバへ登録 (xl makefile.xl - - )</li>
</ul>

では，最初から説明します．

<chapter "ビットマップデータを作る">
フォトショップかなにかでデータを作ります．TIFF (RGB),JPEG, GIF, PNGのいずれかでセーブします．たとえば，これが，foo.tif /foo.jpg / foo.gif / foo.png のいずれかであったとしましょう．（RGBカラーの画像の場合を説明します．）
</chapter>
<chapter "上記のビットマップデータをPPMフォーマット（portable bit/pixel map ）へ変換">
foo.XXX をPPMへ変換します．ここでNetPBMを使います．NetPBMはWindowsでも存在しますが，今回はSolaris 上のを使うことにします．1. のファイルをサーバ上へ移動します．今回，xldocs/v-kyoto/edomapというディレクトリを作ったので，今その中にあるデータはすべて空にして，そこへftp で上記ファイルをセーブします．

空にするコマンドは，

% cd xldocs/v-kyoto/edomap
% rm -r *

rm -r * をやるときには気を付けましょう．変なところでやると，必要なデータも全部消えてしまいます．

そこへ，ftp でfoo.XX をセーブします．edomapのディレクトリで，以下のようにppmへ変換します．以下の３つのいずれかで変換します．（PPMに変換できれば他のフォーマットでも良いです．）
<pre>
% tifftopnm foo.tif > foo.ppm
% pngtopnm foo.png > foo.ppm
% giftopnm foo.gif > foo.ppm
</pre>
ここで，foo.ppmというファイルが出来ていることを確認してください．
</chapter>
<chapter "PPMフォーマットをGLOBALBASE用階層型ビットマップフォーマットCRへ変換">
CRフォーマットへの変換．

% ppm2r64 -pr foo.ppm foo.r64 -l - -crsize 128 -cr foo.cr

とやると，しばらく動き続け，foo.crというファイルが出来上がるはずです．空白の入れ方に十分注意してください．これが，GLOBALBASE用の階層型ビットマップファイルです．
</chapter>
<chapter "CRフォーマットのデータの書誌情報，それを載せる座標系，を準備する">
<section "書誌情報の作成">
さて次にこのファイルに書誌情報を付けます．書誌情報では，地図の縮尺と，スキャン解像度が重要です．あらかじめ，最初に作ったデータで１ピクセルが実際の地面の上で何メートルか計算してください．今日の話ですと，１条８５０メータでしたか？そうすると，１条分が何ピクセルか計算します．pピクセルだったとしますと，

実際の地面に対する解像度は，p / 850 dot/m ということになります．この解像度を採用した場合，縮尺は， 1 分の1です．なにか変な感じですが，この関係は，測量図をスキャナでスキャンしたときに有効です．たとえば，1/2500の地図を400dpiでスキャンしたとしますと，解像度は400dpi (dot/inch) で，縮尺は2500分の1となります．

これを，ラスタ書誌情報ファイルfoo.lstに書き込みます．それは以下のような
XMLファイルを作ってください．

<pre>
<?xl version="0.1" encoding="UTF-8"?>
<luster>
 <meta>
  <file type="cr">
   foo.cr
  </file>
  <scale>
   (/ 1 1.000000 )
  </scale>
  <scan-resolution>
   1.077144dot/m    <!-- here is scan resolution p / 850 -->
  </scan-resolution>
 </meta>
</luster>
</pre>

解像度の入れる場所はわかったでしょうか．また，scaleのところが，縮尺です．LISP形式の式で書くので，(/ 1 1.0000 ) となっています．どちらかの数字が浮動小数点になるようにしてください．
</section>
<section "座標系の作成">
それでは，このラスタデータを載せる座標系を定義します．座標系には座標系の書誌情報があり，実際に検索がかかるのはこの書誌情報ですので気を付けてください．これは，コンバータで出力したmain.crdに相当するものです．foo.crdとしましょう．中身は以下の通りです．
<pre>
<?xl version="0.1" encoding="Shift-JIS"?>
<coordinate>
 <meta>
  <bib xmlns:gb="xlp://isjhp1.nichibun.ac.jp:8080/gb_metadata">
   <gb:property type="gb-prop" data="base"/>
   <gb:issue.period type="W3C-DTF" data="2003-01-14"/>
   <gb:title type="text" data="江戸池田屋周辺地図"/>
   <gb:creator type="text" data="Webmax"/>
   <gb:content.period type="W3C-DTF" data="1650 / 1670"/>
  </bib>
  <file type="e2d"/>
  <mr>
   ((0.000000m  0.000000m )
    (15.821215m  27.284931m ))
  </mr>
  <v>
   <resolution>
    0.632063dot/m
   </resolution>
  </v>
 </meta>
</coordinate>
</pre>

ここで，以上の各項目は，以下の通りです．

gb:property

これは地図のデータ形式の分類です．base, plot, photo などがあります．通常の地図はbaseです．プロットデータはplotです．航空写真や衛星写真はphotoです．

gb:title

地図のタイトルです．

gb:creator

この地図を作った人，組織の名称です．

gb:issue.period

この地図をサーバにアップした日付を入れます．

gb:content.period

この地図の内容年代をいれます．

以上のデータを注意深く書きこみ．セーブしてください．
</section>
</chapter>
<chapter "CRフォーマット（書誌情報）-> 座標系 -> 外の座標系　とマッピングする．
（マッピングファイルを２つ作る）">
<section "マッピングの準備">
マッピングは，foo.lst をfoo.crdにくっつけるマッピングと，foo.crdを他の座標系へ付けるマッピングの二種類が必要です．どちらも同じ形式で書きます．
<pre>
<mr> .... </mr>
</pre>
これは，地図の大きさを示します．((左上x 左上y) (右下x 右下y)) という具合に書きます．カッコと空白の使い方に気を付けてください．ビットマップの場合は，右上は，(0m 0m)で，左下は，横のドット数,縦のドット数 をそれぞれ解像度でわり算した縦と横の対地長さを記入してください．
<pre>
<v><resolution> XXXdot/m </resolution></v>
</pre>
はブラウザの拡大率（ブラウザのウィンドウの左下に出てくる数字）が　XXXdot/m　になったらこの地図を表示開始するという意味です．

以上を記入し終わったら座標系は終わりです．
</section>
<section "マッピング">
マッピングは，foo.lst をfoo.crdへ付けるもの，foo.crdを他の座標系へ付けるものの２種類が必要です．いずれも同じ形式ですが，内容は若干違います．まず，最初はfoo.lst をfoo.crdへ付けるもの．このファイル名をfoo-lst.map としましょう．
<pre>
<?xl version="0.1" encoding="UTF-8"?>
<map>
 <meta>
  <file type="xl"/>
  <src>
  foo.lst
  </src>
  <dest>
   foo.crd
  </dest>
  <dp>
   1
  </dp>
 </meta>
 <point-map>
  a1
  <point>
   0
   0
  </point>
  <point>
   0
   0
  </point>
 </point-map>
 </map>
</pre>
これは，単に一対一で対応させればいいので，src / destを書き換えるのみで(00) を(0 0)へ対応させるというpoint-mapを一つ用意すれば良いです．foo.lstがsrc　foo.crdがdestになっているのに注意してください．

次は，foo.crdを他の座標系へマッピングするものです．これをfoo.mapとしましょう．
<pre>
?xl version="0.1" encoding="UTF-8"?>
<map>
 <meta>
  <file type="xl"/>
  <src>
  foo.crd
  </src>
  <dest>
   xlp://gbs.webmax.co.jp:8080/kokudo/coord/no6.crd
  </dest>
  <dp>
   1
  </dp>
 </meta>
 <point-map>
  a1
  <point>
   0m
   0m
  </point>
  <point>
   50m
   50m
  </point>
 </point-map>
 <point-map>
  a2
  <point>
   100m
   100m
  </point>
  <point>
   1000m
   1000m
  </point>
 </point-map>
 </map>
</pre>
ここでは，マッピングする，さきとの点の対応を１点以上３点まで指定できます．４点以上の対応はちょっと別の方法があるので，この対応の方法がわかった後に説明します．

point-map の中にまず文字列(a1とかa2)がありますが，マッピングポイントに付けられた名前です．これはpoint-mapごとに１とつ，他と重複しないように付けます．そして，point-mapの中は，
<pre>
<point-map>名前
 <point>src座標系上の座標 </point>
 <point> dest座標系上の座標</point>
</point-map>
</pre>
という形式になっています．

まずは，一つpoint-mapを指定して現代の座標系へマッピングして，位置を調整し，次にもう一点という具合に点の数を増やしていく必要があります．
</section>
</chapter>
<chapter "サーバへの登録">
さて，この段階で，

foo.cr , foo.lst, foo.crd, foo-lst.map, foo.map というファイルが同じディレクトリの中にあることを確認してください．foo.png やfoo.tifなど最初のビットマップファイルはあっても無くてもかまいません．

ここで，これらを登録します．このディレクトリで，

% xl makefile.xl - -

を実行し，終了するのを待ちます．

これで登録okです．ブラウザで，年代情報などをあわせて，閲覧してください．（若干表示が有効になるのに数分かかる場合もあります．）
</chapter>
</title>
</document>
