数値地図2500(その3)




 
図枠線
 

 数値地図2500は紙地図をスキャンしてデジタル化したもの。ビットマップをペクトリ化する手法は色々あるが、輪郭線抽出法がその一つ。街区データはこの方法で作成されたように思う。
 地図の境界がアークデーターの一部になっているが、これは不用に思う。CADデーターが枠線を0画層に別に作ってある。この枠線はCADの手作業でしか消去できない。変換時に描画しないロジックを組みたてた。

 真中に地図の繋ぎ目がある。

一本の直線ならいいが、ポリラインは分解しないと消せない。


 
ロジック
 

 データ構造を見ながら、枠線を描画しないロジックを完成させていった。


計算時間を考慮しながら試行錯誤を繰り返し、こんなロジックとなった。
xx0=0; yy0=0; for (j=0;j<i ;j++){ n=n1+1 n1=msg.indexOf("\n",n); xy=msg.substring(n,n1-1).split(",");  yy=parseFloat(xy[1])+y0;    xx=parseFloat(xy[0])+x0; if (((xx==x0 && xx==xx0)|| (xx==x1 && xx==xx0))|| ((yy==y0 && yy==yy0))||(yy==y1 && yy==yy0)) { msg2+="\r\n3dpoly\r\n"; msg2+=yy+","+xx+",0.00\r\n"; } else { msg2+=yy+","+xx+",0.00\r\n"; } xx0=xx; yy0=yy;             }

図枠左下の公共座標 x0、y0を加算して全体を公共座標に変換している。 一つのARCデータのルーチン。

前の点の座標値をxx0、yy0に記憶しておく。今回の座標値が図枠の座標の場合、前もそうか調べる。同じなら水平線か、垂直線。すなわち図枠線。
この場合、前と結ばない。新たなポリラインを始める。これがAutoCAD流の作図手順。これをプログラムした訳だ。

一枚の地図の街区座標計算は5秒だろうか。パソコンで5秒待つと”遅い!” となるが、それまでではなかったから5秒以下ということ。


 
変換ツール
 

   ロジックが完成したら街区プロットは終っていた。後のデーターはこのルーチンで処理できる。


 これが僕の自作ツール。ラジオボタンが無い時には紙に作業終了のチェック表を作っていた。ラジオボタンをチェックして項目を選択するとデータが閲覧できる。 読み取った座標値と原本に相違ないか確認して変換ボタンをおす。変換結果を閲覧して問題なければファイルに保存する。
 横に立ち上げておいたAutoCADLTからそのファイルをダブルクリックでCADプロットする。こんなシステム。
 ラジオボタン、インプットボタン、テキストエリア、全部javaScriptの部品。 プログラムコードはヘージに書き込んである。最後、ファイル保存をHDDにするので、ネット公開ができないのが残念ですが。直接AutoCADLTにデータを送るようにしたら公開も問題ないのだろうが。
2003.12.11
by Kon