図1に示すこの発明の一実施例の地図印刷/読取装置10は、コンピュータ12を含み、このコンピュータ12は、デスクトップ型、ノート型などのパソコンやワークステーションなど任意のコンピュータであってよく、マウスやキーボード(ともに図示せず)を含む操作装置14および画像表示のためのモニタ16を付属的に備える。コンピュータ12はさらに、ROMやRAMを含む内部メモリ18およびプロセッサ(CPUと呼ばれることもある。)を有する。この内部メモリ18には、地図データベース20に格納されているディジタル地図データを処理するためのGIS(Geographic Information System)アプリケーションプログラムや具体的なアプリケーションプログラム、実施例では地図印刷プログラムや地図読取プログラムが設定されている。
この実施例では、地図データベース20としては、一例として、株式会社ゼンリンの「Zmap(TOWN II)」および「Zmap(AREA II)」(ともに商品名)という商用データベースを用いる。この実施例の地図データベース20では、道路、鉄道、建物、建物の戸別名称、行政界などの項目を含み、これらの情報は階層(レイヤ)毎にベクトル形式で、たとえば日本測地系での経緯度データおよび基本属性情報(戸別建物名称に付加した個別キー情報や住所情報)とともに、データ化されている。そのため必要なレイヤを選択することにより、用途に応じた地図表現が可能である。この地図データベース20をコンピュータ12によって処理または操作するために、この実施例では、「Zmap OA II Professional」または「Arc View」(ともに商品名)という、そのデータベースに特化したGISアプリケーションソフトを利用する。このアプリケーションソフトの各コンポーネントが、地図操作プログラムとして、上記内部メモリ18に設定されている。
また、地図データベース20の位置座標は、座標系の原点が19箇所で定義される、「19座標系」に基づいて決められる。たとえば、第6系には、京都府、大阪府、福井県、滋賀県、三重県、奈良県および和歌山県が含まれ、第6系の原点は「東経136度0分0秒00」、「北緯36度0分0秒00」である。そして、第6系の地域を表す地図データにおいて、任意の位置座標は、原点から任意の位置までの方向ベクトルに基づいて求められる。具体的には、方向ベクトルの長さと方向とから、横方向の距離および縦方向の距離を算出することで、任意の位置における位置座標(経緯度データ)を求めることができる。
地図印刷/読取装置10にはさらに、プリンタ22およびOCR(Optical Character Reader)カラースキャナ(以下、単に「スキャナ」という。)24を備える。なお、このスキャナ24は光学読取手段として機能する。
実施例の地図印刷/読取装置10で印刷した地図は、たとえば事件が起きやすい場所を調べる防犯調査のような調査内容と地図上の位置とを紐付けして管理する必要がある場合において、防犯調査票と地図画像とを1枚の地図表として印刷する。
たとえば、プリンタ22では、地図画像の少なくとも対角、たとえば左上角と右下角(または、右上角と左下角)の世界測地系または日本測地系の経緯度を表す数値を、2次元バーコード(実施例では、QRコード:商品名)のような機械読み取り可能な符号画像として、地図画像と共に印刷しておく。
また、調査票を用いて調査するユーザは、防犯調査内容に対応する属性(「盗難」、「追いかけ/声かけ」、「暴力」など)に対応するシール(属性マーク)を予め用意しておく。そして、ユーザは、たとえば複数の子どもに属性が含まれるシールを渡し、子ども達自身が体験した事件の場所に対応して、地図上にシールを貼り付けさせる。この場合、調査対象者が子どもであるため、シールの貼り付けをゲーム感覚で行うため、調査内容が充実する。
その後、上記のシールが貼り付けられた(付与された)地図表をスキャナ24によって読み取る。QRコードのような符号画像を読取ることによって、その符号画像で表される地図画像の対角の座標(経緯度)を認識する。同時に、一般的な認識技術などを利用して、シールが貼られた位置を取得して、所定の計算によってシールが貼り付けられた場所の経緯度を求める。さらに、シールに含まれる属性を認識し、シールの経緯度とシールに含まれる属性とを対応付けてメモリ18に記憶する。
このようにして、地図表で調査した結果を容易に取り込み、データベース化できる。
図2を参照して、図1に示す内部メモリ18には、プログラム領域26、データ記憶領域28およびフラグ領域30の各領域が設定されている。プログラム領域26には、たとえばWindows(登録商標)のようなOSプログラム260の他、上述の地図操作プログラム261、印刷プログラム262および読取プログラム263が設定されている。ただし、これらの印刷プログラム262および読取プログラム263では必要な場面で地図操作プログラム261のコンポーネントをそのまま利用することがある。データ記憶領域28には、調査結果として記憶される属性関連付けテーブル264が記憶されるとともに、上記各プログラム260‐263の実行の過程まで必要なデータを記憶する。フラグ領域30は、同様に各プログラムの実行の過程で必要に応じてフラグを記憶する。
印刷プログラム262は、地図データベース20に格納されている地図データを読み出し、その地図データを地図画像としてモニタ16上に表示し、その表示した地図画像を処理または操作し、その結果をプリンタ22で印刷するためのプログラムである。地図画像の操作または処理としては、たとえば、拡大/縮小操作、ドラッグ移動操作、プリンタ設定操作、印刷枠設定操作、およびQRコード指定操作などである。
読取プログラム263は、後述のようにシールが貼り付けられた地図を読み取って、そのシールの貼り付け位置を測地系データとして特定し、シールに含まれる属性と合わせて記憶するためのアプリケーションである。
図3は印刷プログラム262に対応するフロー図である。印刷プログラム262が実行されるとき、図3の最初のステップS1において、図4に示すような地図操作GUI32がモニタ16上に表示される。地図操作GUI32は、操作設定領域34と、地図表示領域36とを含む。地図表示領域36は、コンピュータ12が、地図データベース20から読み出した地図画像データに従って地図画像を表示するための領域である。操作設定領域34は、ユーザが、その地図画像を見ながら地図データやプリンタを操作したり、プリンタ設定や印刷枠設定などを行なったりするための操作ボタンなどを表示する領域である。
なお、地図印刷操作の終了時にはそのときの地図画像を示す地図データベース20のデータ、たとえば使用レイヤ番号(名称)、表示場所などを示すデータが既定値として図2に示すデータ記憶領域28内に保存される。ステップS1ではその保存データに基づいて地図データベース20から読み出すので、ステップS1では、前回の印刷の終了時の地図画像がそのときの表示位置で表示される。したがって、たとえば一旦中断した同じ地図印刷の作業を簡単に再開できる。
このステップS1で地図画像を表示するとき、この地図画像上の特定の位置、たとえば左上角を基準点として、その基準点の経緯度データが同時に地図データベース20から読み出され、メモリ18のデータ記憶領域28に格納される。この基準点の経緯度データは後述の印刷枠指定の際に、印刷枠64のたとえば対角の経緯度を特定するために利用される。
ただし、このステップS1で地図操作GUI32の地図表示領域36に表示する地図画像は、たとえば後述する住所検索などの方法で、任意の地図画像に変更できることは勿論である。
また、この地図操作GUI32の操作設定領域34に含まれる縮尺設定部38をマウス(図示せず)でクリックすると、そのとき使用する地図画像データの縮尺(度)を設定できる。たとえば、縮尺設定部38をクリックした後、キーボード(図示せず)を用いて適宜の数値を入力することによって、任意の縮尺(度)を設定できる。実施例では、設定できる縮尺として、1/425から1/10648までの縮尺を自由に設定できる。
操作設定領域34に含まれるスライダ40は、地図表示領域36に表示されている地図画像の縮尺度を変更または設定するために利用され、ユーザは地図画像の縮尺度を変更するとき、操作装置14(図1)のマウス(図示せず)でこのスライダ40を左または右に変位させる。
スライダ40が操作されると、図3のステップS3で“YES”が判断され、続くステップS5で表示範囲を拡大または縮小するための処理を実行する。この拡大/縮小処理は、地図表示領域36に表示される地図画像の表示範囲を拡大したり縮小したりするもので、縮尺設定部38で設定した地図の縮尺そのものを変更する所定ではない。
なお、縮尺設定部38で地図の縮尺そのものを変更すると、地図表示領域36に表示されている地図画像の範囲もそれに応じてリアルタイムに拡大または縮小される。
図3のステップS3で“NO”を判断した場合、コンピュータ12は次のステップS7で、ユーザの操作はドラッグ移動かどうか判断する。操作設定領域34に表示されている手アイコン42は、地図表示領域36に表示されている地図画像をドラッグしてスクロール表示するための操作手段であり、表示されている地図画像の任意の場所をドラックできる。ステップS7ではこの手アイコン42が操作されたかどうか判断する。
そして、ステップS7で“YES”であれば、つまり手アイコン42が操作されれば、続くステップS9でドラッグ操作に対応する処理を実行する。ドラッグ操作では、地図表示領域36全体を上下左右にスクロールするとき、表示されている地図画像の任意のポイントにマウスを当て、マウスを移動すると、地図表示領域36に表示される地図画像もマウスの移動方向へスクロールされる。そして、ユーザは、スクロールの結果表示範囲が刻々と変わる地図表示領域36の地図画像を確認して、所望の移動場所に到達すると左クリックを押した状態を解除(ドロップ)することによって、スクロールを停止する。
なお、ドラックおよびドロップによる地図画像のスクロールは、斜め方向スクロールや逆方向へスクロール方向を変える場合に簡単に行なえるので便利であるが、結果的に同じことができるという意味において、ドラッグ移動は、縦横スクロールと同じであり、したがって、ドラッグ移動に代えて縦横スクロールを採用してもよい。
図3のステップS7での判断が“NO”の場合、次のステップS11でユーザの操作はプリンタ設定の操作かどうか判断する。つまり、操作設定領域34に設定されるプリンタ設定ボタン44が操作されたかどうか判断する。プリンタ設定ボタン44が操作されると、図5に示すプリンタ設定GUI46が地図表示領域36上に重畳表示される。このようなプリンタ設定GUI46はOS260としてインストールされているたとえばWindowsで既によく知られたところであり、使用するプリンタの機種、用紙サイズ、印刷方向(縦または横)などを設定する。
このプリンタ設定操作はステップS13のプリンタ設定処理に基づいて実行されるが、既によく知られたところであり、ここでは簡単に説明する。
プリンタ設定処理が実行されると、コンピュータ12は、そのときのプリンタ名、用紙サイズ、印刷方向、給紙方法などの既定値を読み込み、操作装置14からの入力に基づいて、それらの規定値に変更が指示されたかどうか判断する。そして、プリンタの変更指示があれば変更後のプリンタ名を登録し、用紙サイズの変更指示があれば変更後の用紙サイズを登録し、印刷方向の変更指示があれば変更後の印刷方向、縦または横を登録する。
また、印刷を行うプリンタを選択して登録すると同時に、指定された用紙サイズ(実施例ではA4サイズ(210mm×297mm))および印刷方向(縦または横によって地図印刷時の縮尺の基になる値が変化する。)が登録される。これらのデータもまた、データ記憶領域28(図2)に登録され得る。特に、用紙サイズの縦と横の長さと、印刷するときの縮尺(図3の縮尺設定部38に表示されている)とは、用紙内に印刷できる(入る)実際の距離を計算する上で重要な設定値となる。これについては、以下の「印刷枠指定」で詳細を説明する。
図3のステップS11で“NO”が判断されたときには、続いてステップS15において、コンピュータ12は、そのときのユーザの操作が「印刷枠指定」かどうか判断する。操作設定領域34に設定される印刷枠指定ボタン48を操作することによって、地図表示領域36に表示されている地図画像上の印刷すべき領域を示す印刷枠64を設定することができる。したがって、ステップS15では印刷枠指定ボタン48が操作されたかどうかよって、ユーザの操作が印刷枠指定操作かどうか判断する。なお、印刷枠64とは、プリンタ設定操作で指定された用紙サイズと印刷方向および縮尺設定部38(図4)で設定された縮尺度とに基づいて、地図画像上の印刷対象とする領域を示す「枠」を意味する。また、後述の印刷操作においては、この枠単位での印刷およびプレビューが行われる。
図6または図7に示すように、印刷枠64は、プリンタ設定操作で設定された用紙サイズの1枚の用紙に対する印刷領域を示す枠であり、地図表示領域36の左上角の基準点66を基準として、地図画像上に重畳表示される。図6では1つの印刷枠64だけを示すが、印刷枠設定操作においては、印刷すべき地図画像上の領域を何枚の用紙に印刷するかを数値(縦枚数および横枚数)として設定できる。このような枚数設定は、枚数設定窓50において上向き矢印または下向き矢印を操作して増減できる。複数枚印刷が設定されたときには、図7に示すように、複数の(実施例では縦2×横3計6つの)印刷枠64が表示される。そして、以下に詳細に説明する印刷枠指定で登録された各データもまた、メモリ18のデータ記憶領域28(図2)に保存される。
図8の最初のステップS31で、コンピュータ12は内部メモリ18のデータ記憶領域28を参照して、印刷枠64に関するデータが既に登録されているかどうか判断する。“YES”の場合には後に説明するが、“NO”の場合、次のステップS33で、コンピュータ12は、地図表示領域36の左上角の基準点66の位置データすなわち経緯度(NX,NY)を取得する。この実施例の場合、位置データ(NX,NY)は、前述のステップS1において地図操作プログラム261によって地図データベース20から地図データを読み出すとき、そのプログラム261の1つのコンポーネント(機能)を利用することによって、地図データベース20から取得され、データ記憶領域28に既に格納されている。つまり、地図データベース20では地図画像データのレイヤだけでなくその地図画像の各位置の経緯度のデータを保持する経緯度レイヤを有し、先に説明したように、ステップS1で地図画像データを読み出す際、その地図画像の基準点(実施例では左上角)の経緯度データも併せて読み出すのである。
続くステップS35において、コンピュータ12は、数1に従って、1つの印刷枠64に入る地図上の実際の距離を計算する。
[数1]
横の距離=(PX−US)×SS
縦の距離=(PY−LS)×SS
ただし、用紙サイズを(横:PXmm 縦:PYmm)とし、用紙上下の余白合計をUSmm、左右余白合計をLSmmとし、縮尺をSSとする。
たとえば、用紙サイズが、横:210mm、縦:297mm(A4)の場合で、用紙上下の余白合計USを30mm、左右余白合計LSが20mmとし、縮尺を1,000(1/1,000)としたとき、横の距離は、(0.21−0.02)×1000=190メートルとなり、縦の距離は、(0.297−0.03)×1000=267メートルとなる。
その後、ステップS37において、コンピュータ12は、印刷枚数が1枚かどうか判断する。図4に示す枚数設定部50の「縦1」が設定されかつ「横1」が設定されているとき、このステップS37で“YES”を判断する。枚数設定部50の「縦」および「横」の少なくとも一方に2以上の数値が設定されているとき、ステップS37で“NO”となる。
ステップS37で“YES”と判断したとき、続くステップS39において、コンピュータ12は、1枚印刷のための内部座標上の四角形の印刷枠64を決定し、その印刷枠64とページ番号とをユーザレイヤに描画する。ただし、この印刷枠64およびページ番号は、地図操作プログラム261のコンポーネントの機能を利用することによって、実行される。
詳しくいうと、上述のようにしてステップS35で計算した、1枚の用紙に印刷される地図画像の縦および横の実際の距離から、地図画像の内部座標(経緯度)を変換することによって、1つの印刷枠64の、内部座標上の距離、横AXおよび縦AYが計算できる。したがって、図6のように1つの印刷枠64だけが設定されている場合、ステップS39で、基準点66の位置(NX,NY)を用いて、図6の印刷枠64の左座標、右座標、上座標および下座標を、それぞれ、「NX」、「NX+AX」、「NY」および「NY+AY」として計算し、それに従って印刷枠64を描画する。
図7では、縦2枚、横3枚、計6枚の用紙を用いて印刷する場合を例示しているが、このように複数の印刷枠64を設定する場合、コンピュータ12は、ステップS41において、上述の左座標「NX」および上座標「NY」と、1枚分の内部座標距離「AX」,「AY」に基づいて、各四角形の測地系での上下左右座標を求める。たとえば、図7でページ番号「1」で示す四角形の測地系位置データは、左座標は「NX」、上座標は「NY」、右座標は「NX+AX」、下座標は「NY+AY」で与えられる。
同様に、ページ番号「2」で示す四角形の測地系位置データでは、左座標は「NX+AX」、上座標は「NY」、右座標は「NX+2×AX」、下座標は「NY+AY」で与えられる。
ページ番号「3」で示す四角形の測地系位置データでは、左座標は「NX+2×AX」、上座標は「NY」、右座標は「NX+3×AX」、下座標は「NY+AY」となる。
ページ番号「4」で示す四角形の測地系位置データでは、左座標は「NX」、上座標は「NY+AY」、右座標は「NX+AX」、下座標は「NY+2×AY」となる。
ページ番号「5」で示す四角形の測地系位置データでは、左座標は「NX+AX」、上座標は「NY+AY」、右座標は「NX+2×AX」、下座標は「NY+2×AY」となる。
ページ番号「6」で示す四角形の測地系位置データでは、左座標は「NX+2×AX」、上座標は「NY+AY」、右座標は「NX+3×AX」、下座標は「NY+2×AY」となる。
このようにして、複数枚の用紙に印刷する場合、ステップS41において、左座標「NX」、上座標「NY」、1枚分の内部座標距離「AX」、「AY」に基づいて、各四角形の上下左右座標の測地系位置データを決定し、それに従って各印刷枠64およびページ番号をユーザレイヤに描画する。
上述のように、基準点または基準位置が1つの印刷枠64の対角の一方に相当するので、基準位置の経緯度に内部座標上の距離を加算することによって、対角の他方の経緯度を算出することができる。ただし、印刷枠64が複数の場合、すでに説明したように、1つ目の印刷枠64以外の各印刷枠64の対角の一方についても、基準位置の経緯度と内部座標上の距離の加算によって算出する必要がある。
そして、コンピュータ12は、ユーザが登録指示したとき、たとえば、図4に示す印刷設定保存ボタン52をクリックしたとき、ステップS43で“YES”を判断し、続くステップS45で、たとえば、印刷枠64はユーザレイヤにおける図形データとして、ページ番号はユーザレイヤにおけるテキストデータとして、各座標データ(位置データ)とともにデータ記憶領域28に登録する。
たとえば、ステップS31で登録済みのデータを使用する場合は、ステップS47で、その登録済みデータに従って印刷枠64およびページ番号を図6または図7のように描画する。このように、登録済みデータを利用できるようにしているため、一旦中断した印刷作業を再開するときなど、同じ地図画像を同じ条件で印刷した地図を容易に取得できる。
なお、印刷枠指定処理においては、印刷枠64が1つの場合も複数の場合も、移動ボタン62(図6、図7)を操作することによって、印刷枠64を移動させることができる。この印刷枠移動処理は、地図操作プログラム261の機能の1つを利用するもので、ユーザがこの移動ボタン62をクリックすると、図形移動モードが設定され、図示しないが十字カーソルが画面上に出現し、それを使ってユーザが移動先を確定してクリックすると、その位置に印刷枠64が移動する。この場合、移動後の印刷枠64の左上角を基準点(NX,NY)として図8の印刷枠指定処理を実行することになる。このとき、印刷枠64の左上角が地図画像上の基準点(左上角)とずれることになるが、そのときの印刷枠64の左上角の経緯度と地図画像の基準点(左上角)の経緯度とのずれ距離および方向を計算し、基準点からそのずれ方向にずれた点を印刷枠64の左上角の経緯度として計算する必要がある。つまり、印刷枠64を基準点からずらす操作をした場合には、そのずれに応じて印刷枠64の左上角(実施例では)の経緯度を再計算する必要がある。
また、他の実施例では、ページ毎に印刷される枚数が設定されてもよい。たとえば、図9を参照して、ページ毎の印刷枚数を設定する操作がされると、印刷枚数設定GUI70が地図表示領域36に重畳されて表示される。印刷枚数設定GUI70はページ数に応じた枚数指定部72を含み、ページ数が4であれば、印刷指定部72a,72b,72c,72dが表示される。たとえば、2ページのみを2枚印刷し、残りの1,3,4ページを1枚印刷する場合には、枚数指定部72bに「2」が入力され、他の枚数指定部72a,72b,72cに「1」が入力される。そして、設定ボタン74が操作された後に、印刷実行操作されると、設定されたとおりに各ページが印刷される。なお、キャンセルボタン76が操作された場合には、各枚数指定部72に入力された結果は反映されない。
図3のステップS15で“NO”を判断したとき、ステップS19でコンピュータ12は、ユーザの操作がQRコードの設定操作かどうか判断する。“YES”なら、続いて、ステップS21のQRコード指定処理に進む。この実施例の1つの特徴は、上述のようにして取得した測地系の座標データをQRコードによって地図画像と同時に印刷し、それを地図上の位置を特定するために利用することである。
図4のQRコード設定ボタン54をユーザがクリックすると、コンピュータ12はそれに応じて、図12に示すQRコード設定GUI80を、たとえば図4の地図操作GUI32の上に一時的に重畳表示する。
QRコード設定GUI80は、QRコードの色を設定する色指定部82、測地系を設定する測地系指定部84および数値形式を設定する数値形式指定部86を含む。色指定部82では、青、赤、緑、黒の4色のうち1色を指定できる。測地系指定部84では、日本測地系か世界測地系のどちらかを指定できる。結果を表示するGISアプリケーションプログラムによって扱える座標系が違うことがあるので、どちらでも指定できるようにしている。数値形式指定部86では、度分秒形式かまたは度形式のどちらかを指定できる。一例として、度分秒形式では「135403964」(東経135度40分39秒64)と表現される測地系座標データは、度形式では「135804824」(東経135.804
824度)と表現される。
図11に詳細に示すQRコード設定処理では、まずステップS51およびS53で、コンピュータ12は、ユーザの操作に従って、地図と同時に印刷するQRコードの色を登録し、ステップS55およびS57で、測地系として世界測地系か日本測地系を登録し、ステップS59およびS61で、度分秒形式かまたは度形式のどちらかの数値形式を登録する。このQRコード設定処理のデータもまた、データ記憶領域28に登録され得る。
なお、図4に示すプレビューボタン56は印刷プレビューを実行するための操作ボタンであり、このプレビューボタン56をユーザが操作したとき、印刷プレビューが実行される。ただし、この印刷プレビューでは、ステップS17すなわち図8の動作フローに従って設定された印刷枠単位で行われる。
図4で操作設定領域34に設定される印刷ボタン58を操作することによって、図3のステップS23において、プリンタ設定操作や印刷枠設定操作で設定された条件に従って、印刷枠64毎に地図表示領域36に表示されている地図画像が用紙90(図13)上に印刷される。この印刷処理は具体的には、図12に詳細に示すフロー図に従って実行される。ただし、図12のフロー図の各ステップにおいて言及している具体的数値は、単なる例示であり、これらの数値に拘束されるものではないことを予め指摘しておく。
最初のステップS71において、コンピュータ12は、データ記憶領域28(図2)からデータを読み出し、印刷設定操作で登録した左余白、上余白および用紙サイズのそれぞれのデータに基づいて、地図画像の縦横の印刷の長さを決定する。
続いて、ステップS73において、コンピュータ12は、先に説明した印刷枠指定操作で計算した各印刷枠64の左上経度、左上緯度、右下経度、右下緯度を、QRコード設定操作で設定した測地系および度分秒形式または度形式に従って、数値データに変換する。ただし、先にも説明したが、印刷枠64の少なくとも対角(左上角と右下角)の経緯度データがあればよいのであり、逆に、印刷枠64の左下経度、左下緯度、右上経度、右上緯度の数値データを用いてもよい。そして、この数値データは、データ記憶領域28に一時保存される。
次のステップS75において、コンピュータ12は、図13に示す用紙90の左から10mm、上から11mmの左上角を合わせた縦265mmと横200mmの印刷の長さを有する地図画像を生成する。つまり、この実施例では、ステップS71において、縦265mm×横200mmの印刷長さを決定した。
続くステップS77において、コンピュータ12は、地図画像の左上角および右下角にQRコード画像を生成する。つまり、地図画像とQRコード画像との角が一致するように、QRコードを生成する。また、QRコード画像は、先にステップS73で変換した左上経度、左上緯度、右下経度、右下緯度のデータを符号化したものである。たとえば、度形式で「1355051019, 347056606,1355098019, 347006450」のような数値がQRコードで符号(画像)化される。なお、左上角および右下角に生成されるQRコードは同じ経緯度のデータが符号化されたものである。
ただし、この実施例では、QRコード画像を作成するために、たとえば、「http://www.vector.co.jp/soft/win95/writing/se359398.html」で取得可能なフリーウェアを利用した。
ステップS79およびS81において、コンピュータ12は、メッシュ用の細線画像を生成する。本実施例では、メッシュを地図画像92に重ねて印刷するようにしていて、その個数は、縦横(Wx,Wy)個である。なお、メッシュの具体的な利用目的については後述する。ステップS79では、Wx個のメッシュを形成できる本数の縦の細線の画像を生成し、ステップS81では、Wy個のメッシュを形成できる本数の横の細線の画像を生成する。このメッシュの数(Wx,Wy)はメモリ18のデータ記憶領域28の所定のレジスタに設定されている。この実施例では、一例として、ステップS79で縦の細線の画像を、用紙90の左10mmを基点に5mm間隔で、上から11mmの位置から276mmの位置まで39本生成する。ステップS81では、上から11mmを基点に5mm間隔の横の細線の画像を、左から10mmの位置から右200mmの位置まで54本生成する。したがって、この実施例では、合計2014(=38×53)個のメッシュが地図画像上に重畳して形成される。
これらの生成画像はたとえばビットマップ印刷データとしてデータ記憶領域28に一時記憶され、次のステップS83において実行される印刷ステップで、図13に示すように、用紙90上に印刷される。
ただし、この実施例では、上記の印刷処理およびプレビュー処理に関しては、地図操作プログラムの他にDelphiのフリーウェア(http://mrxray.on.coocan.jp/)にあるプレビュー制御およびプリンタ設定コンポーネントを、一部のソースコードを修正しながら使用している。
図13を参照して、用紙90上に、上で例示した縦横印刷長さで地図画像92が印刷される。また、地図画像92には、上で例示した位置、つまり左上角および右下角に第1QRコード94aおよび第2QRコード94b(特に識別しない場合は、まとめてQRコード(経緯度画像)94と言う。)がそれぞれ、重畳された状態で印刷される。また、QRコード94は、QRコード設定操作で設定した色で印刷されるが、地図画像92は、図13に示すモノクロ画像であっても、カラー画像であってもよい。
また、図13に示す実施例では、地図画像92に重畳されて縦横においてそれぞれ一定間隔の細線が多数印刷されているのが図13に示されているが、これら縦横の細線によって、多数の(実施例では2014個の)メッシュ96が形成される。そして、地図画像92の周囲には、メッシュの座標位置を容易に視認できるようにするために、メッシュの座標の1の位の数値が記述される。さらに、地図画像92の下方に経緯度部98が設けられ、ここにはQRコード94に含まれる左上角と右下角との経緯度が印刷される。
なお、メッシュ96および経緯度部98の具体的な利用方法については後述する。また、この実施例の地図が被災調査に使われることもあるため、その調査票(図示せず)に予め設定しているIDを記入する欄がさらに印刷されていてもよい。
図14(A)を参照して、左上角K1において、第1QRコード94aの左上角は、地図画像92の左上角と一致する。また、図14(B)を参照して、左上角K1の対角である右下角K2において、第2QRコード94bの右下は、地図画像92の右下と一致する。つまり、地図画像92の対角の頂点のそれぞれには、第1QRコード94aの角および第2QRコード94bの角が一致するように印刷される。
また、この実施例では、QRコードを復号する際に、QRコードの四隅のピクセル値を個別に得ることができる。ピクセル値とは、スキャナ24などでスキャンされた画像における1ピクセル(pixels)毎の位置を示す値である。たとえば、スキャナ24の読み取り解像度を300dpiに設定してA4サイズの用紙90をスキャンすると、用紙90に対応する画像の全ピクセル数は「2480pixels×3508pixels」となる。このとき、図14(A)における用紙90の左上角Poを原点(0,0)とすれば、左上角K1のピクセル値は(113,86)となり、右下角K2のピクセル値は(2348,3151)となる。
ただし、この実施例の読取プログラム263は、有限会社Psytecが提供する「QR Code Decode Library(http://www.psytec.co.jp/product/03/)」をライブラリとして含んでおり、QRコードの四隅のピクセル値を個別に取得する処理に関しては、そのライブラリが利用されている。
また、上記実施例では、地図データベース20から読み出した地図画像データに従って地図操作GUI32の地図表示領域36に地図画像を表示し、その左上角を基準点66として印刷枠64を設定する設定方法を説明した。しかしながら、他の実施例では、住所表記に基づいて所望の地図データを検索することもできるので、次に住所検索の方法について説明する。
住所検索をする場合には、図示していないが、たとえば図3の印刷枠指定処理(ステップS15,S17)を住所検索処理に変更すればよい。
たとえば、図4の地図操作GUI32の操作設定領域34に設定されている住所検索/大字枠ボタン60を操作することによって、ユーザは住所検索による印刷枠、すなわち大字(おおあざ)枠の設定を選択できる。したがって、たとえば、ステップS15でコンピュータ12がボタン60に対する操作があったかどうかを検出し、ボタン60の操作を検出したことに応じて、ステップS15で“YES”を判断し、図15に示す住所検索GUI100を表示してステップS17において住所検索による印刷枠設定処理を実行すればよい。
ユーザが住所検索/大字枠ボタン60を操作することによって、住所検索での印刷枠設定操作が選択されたとき、図15に示すように、地図操作GUI32の地図表示領域36に重畳的に、住所検索GUI100が表示される。この住所検索GUI100は地図操作プログラム261に含まれるコンポーネントであり、ここではこれをそのまま利用する。住所検索GUI100において、都道府県欄102は都道府県を選択または指定し、市区町村欄104は市区町村を選択または指定する。また、大字(おおあざ)を指定するための大字欄106および字(字丁目)を指定するための字丁目欄108には、市区町村欄104に表示された市区町村内で選択できる大字および字丁目がプルダウンメニューの形式で表示されるので、ユーザはそれらを任意に指定する。
たとえば、ユーザによって住所検索の操作がおこなわれると、地図データベース20に地図データが格納されていて、選択可能な都道府県名のデータを地図データベース20から抽出し、利用可能な地図データの都道府県名の一覧を取得して表示する。なお、コンピュータ12は、地図操作プログラム261を利用して、地図画像データの属性データも含まれている地図データベース20から取得することができる。そして、ユーザによって都道府県欄102、市区町村欄104、大字欄106および字丁目欄108の順に各項目がクリックされると、コンピュータ12は、指定された住所に対応する住所ポリゴンの部分に地図の表示を移動させて、地図ポリゴンを表示する。
なお、地図データベース20内にある地図データが1つの都道府県だけの場合該当の都道府県が自動的に都道府県欄78に表示される。
なお、地図データベース20には、都道府県、市区町村、大字および字丁目の住所ポリゴンから構成される行政界ポリゴンデータが含まれている。そして、各住所ポリゴンは、ポリゴンの形状を示す各頂点情報、住所の名称を示す行政名および代表座標などのデータから構成される。たとえば、住所ポリゴンには、住所ポリゴンの形状を示す各頂点情報、大字の名称を示す行政名、住所ポリゴンを代表する位置の代表座標などが含まれる。そのため、コンピュータ12は、地図ポリゴンの基準点の経緯度データ、つまり各頂点情報を地図データベース20から抽出することができる。
その後、大字印刷枠の表示処理を実行が実行され、ユーザが選択した大字の地図ポリゴンが複数または1つの印刷枠64の中に全体としてセンタリングされて、先の図13に示すように、各印刷枠64内に印刷され得る。
ここで、ユーザは、先にも説明した通り、図13に示す用紙90の上に印刷された地図画像92に対して、QRシール(図16(A))を貼り付ける。つまり、ユーザは、印刷された地図に対して認識させたい位置情報(経緯度)をQRシール(属性情報シール)によって付与する。
図16(A),(B)を参照して、QRシールには、属性が符号(画像)化されたQRコード(属性画像)と、属性を示す文字列とが印刷される。そして、QRコードの認識処理が実行されると、先述したように、QRコードにおける頂点A1(特定部位)のピクセル値とQRコードが復号化された文字列が得られる。たとえば、印刷された地図において、ユーザが任意の場所に「盗難」の属性を付与する場合には、ユーザは、地図画像92における認識させたい場所に対して、図16(A)に示すQRコードの頂点A1が重なるようにQRシールを貼り付けるだけでよい。
また、図17(A)を参照して、QRコードの認識処理が実行されると、頂点A1,A2,A3およびA4の順番にピクセル値が得られる。そして、ピクセル値が得られる順番は、QRコードが図17(B)のように左回転していたとしても、得られる順番は変化しない。つまり、QRシールがどのような状態で貼り付けられたとしても、頂点A1に対応する位置のピクセル値が必ず取得される。ただし、他の実施例では、ピクセル値が得られる順番は頂点A1以外の頂点から始まってもよい。
なお、図18(A)を参照して、他の実施例のQRシールは、任意の位置を指し示すような形状であってもよい。この形状のQRシールでは、頂点A1のピクセル値に基づいて頂点A5のピクセル値を取得する。具体的には、図18(B)を参照して、利用するQRシールの大きさを全て同じにしておくことで、頂点A1と頂点A5との距離Lが変化しないようにする。そして、三角関数の定理などを利用して距離Lを求め、その距離Lを利用する計算式を読取プログラム263に記述しておくことで、容易に頂点A5を算出することができる。
また、本願発明は防犯調査だけに限られないため、図18(A)に示すように、被災調査用の属性(「集合住宅」)を持つQRシールが調査に利用されてもよい。さらに、被災調査の場合は、QRシールに含まれる属性は、点(経緯度)ではなく、ポリゴンなどの面(建物の範囲)に関連付けられてもよい。
以下に説明する読取処理によって、QRシールが貼り付けられた座標と角に印刷されたQRコードで示す紙地図の座標とから測地系に則した変換を行ない、QRシールが貼り付けられたシール位置(座標)の経緯度を算出し、QRシールが含む属性と、QRシールが示す経緯度とを関連付けて、メモリ18に記憶する。つまり、先の地図印刷処理によって印刷した地図に対して、QRシールが貼り付けられた地図をイメージリーダで読取り、角のQRコードおよび地図に貼り付けられたQRシールの位置を検出する。そのQRコードに埋め込まれた地図の左上と右下の座標である経緯度に基づいて、シール位置をGISデータとして利用する経緯度へ変換する。そして、QRシールが示す経緯度と属性とを関連付けてメモリ18に記憶することで、データベース化することができる。さらに、構築されたデータベースは、CSV形式等のデータとして外部へ出力する事も可能になる。
したがって、地図すなわち用紙の読取りに際して、読取るコンピュータにはGISデータベースなどの地図データがなくても、QRシールの貼り付け位置の経緯度への変換が可能である。つまり、従来のGISデータベースを元に地図データの入力等を行うシステムに対して、この実施例のシステムではデータベースを各コンピュータなどの端末に設定する必要がないという利点がある。
また、変換された座標データはCSV形式等のテキストファイルやその汎用的な商用データに変換することができ、さらには、利用に際してGISデータベースを必要としないので、変換されたGISデータについてはインターネットで利用できるネットワーク型地図システムで利用することができる。
読取処理の基本動作が図19のフロー図に示される。図19の最初ステップS91では、図21に示す読取GUI120をモニタ16(図1)に表示する。この読取GUI120は、左側にイメージ表示領域124があり、このイメージ表示領域124には、読み取られた画像データがそのまま表示される。ここでは、スキャナ24によって読み取られた、図20に示す用紙90のイメージ(用紙90上の地図画像やQRコードなど)がそのまま表示されている。
なお、以下の説明では、地図領域92にQRシール150a−150d(特に識別しない場合は、単にQRシール150と言う。)の少なくともいずれか1つが貼り付けられていることが前提である。また、QRシール150が貼り付けられていない場合には、ユーザにエラーが通知される。
イメージ表示領域124の上側には選択ボタン122が形成される。選択ボタン122は、メモリ18のデータ記憶エリア28に記憶されている画像データを、図示しないGUIによって選択するためのボタンである。また、選択ボタン122の右側にはコード解析ボタン126が形成され、このコード解析ボタン126が操作されると、画像データに含まれるQRコードの全体数が、上部のやや中央付近の表示部128に表示される。また、コード94に埋め込まれた経緯度の数値が、表示部128の下側に形成された解析結果表示部130に表示される。さらに、解析結果表示部130の下側に形成された経緯度表示部132には、左上経緯度および右下経緯度の数値が表示される。
また、経緯度表示部132の下側には基準点表示部134が形成され、ここには左上角K1のピクセル値および右下角K2のピクセル値がそれぞれ表示される。さらに、解析結果表示部130の上側に形成される分割数表示部136には、地図画像92と対応する画像データのX(縦)軸およびY(横)軸のピクセル総数が表示される。
さらに、基準点表示部134の下側には、QR内容表示部138、QRピクセル値表示部140およびQR位置座標表示部142が形成される。QR内容表示部138は、QRシール150a−150dに印刷されるQRコードが復号された結果の文字列を示す文字列である。たとえば、QR内容表示部138に表示される「20100115,0001,06-01」に着目すると、前半部の「20100115」は「2010年1月15日」を示し、QRシールに含まれる属性が定義された日付を示す。また、中央部の「0001」は「1種類目」であることを示し、ここでは1種類目は「防犯調査」に対応する。そして、後半部の「06-01」は属性が「盗難6−自転車1」であることを示す。
また、QRピクセル値表示部140はQRシール150a−150dのピクセル値を示す数値を表示し、QR位置座標表示部142はQRシール150a−150dが示す経緯度を示す数値を表示する。
なお、QR内容表示部138、QRピクセル値表示部140およびQR位置座標表示部142の下側には、入力部144およびMapボタン146が形成される。ユーザは、入力部144に対してQR位置座標表示部142に表示された経緯度を入力し、その右側に形成されたMapボタン146を操作することで、ネットワークを介してディジタル地図をモニタ16に表示することができる。つまり、Mapボタン146が操作されると、コンピュータ12はネットワークを利用したディジタル地図提供サービスのサイト(たとえば、Google(登録商標)マップなど)にアクセスし、そのサイトが提供するディジタル地図をモニタ16に表示する。
図20に示す用紙90をスキャナ24にセットして、ステップS91でこのような読取GUI120を表示した後、コンピュータ12は、ステップS93において、ユーザによってイメージの取込み操作がされたかどうかを判断する。そして、ステップS93で“YES”を判断すると、続くステップS95でスキャナ24を動作させて1枚の用紙をスキャンし、ステップS97で、取得したイメージをメモリ18のデータ記憶領域28(図2)に設定されているイメージバッファ(図示せず)に一時的に保存し、さらに読取GUI120のイメージ表示領域124に、保存したイメージを表示する。
なお、イメージ表示領域124に表示したイメージは、ユーザが拡大/縮尺ボタン(図示せず)を操作することによって、自由に拡大または縮小表示されてもよい。また、ステップS95の処理を実行するコンピュータ12は読取手段として機能する。
続いて、ステップS99で、コンピュータ12は、図22で詳細に示すQRコード認識処理を実行する。
図22の最初のステップS111およびS113を実行して、コンピュータ12は、第1QRコード94aおよび第2QRコード94bを認識する。認識できたときはステップS115に進んで、QRコードを分類する。つまり、復号されたQRコードの内容に基づいて、第1QRコード94aおよび第2QRコード94bとQRシール150のQRコード(第3QRコード)とに分類する。具体的には、第1QRコード94aおよび第2QRコード94bが復号された文字列の先頭には、基準となること示す文字(実施例では、「K」)が含まれおり、QRシール150の第3QRコードには基準となることを示す文字が含まれていない。そのため、ステップS115では、この基準となる文字に基づいて、第1QRコード94aおよび第2QRコード94bと、第3QRコードとを分類する。
続いて、ステップS117では、測地系に対応した経緯度、つまり図23に示す左上座標(Lx1,Ly1)と右下座標(Lx2,Ly2)をメモリ18のデータ記憶領域28(図2)の経緯度座標レジスタ(図示せず)に保存する。さらに、ステップS119およびS121では、左上角K1のピクセル値(px1,py1)と右下角K2のピクセル値(px2,py2)を、メモリ18のデータ記憶領域28(図2)のピクセル値レジスタ(図示せず)に保存する。なお、ステップS117の処理を実行するコンピュータ12は経緯度画像認識手段として機能し、ステップS119およびステップS121の処理を実行するコンピュータ12は特定ピクセル値取得手段として機能する。また、ピクセル値(px1,py1)およびピクセル値(px2,py2)をまとめて、特定ピクセル値と言うこともある。
続いて、コンピュータ12は、ステップS123およびS125で、たとえば図23に示すQRシール150bのピクセル値(px3,py3)を取得し、そのQRシールのQRコードから属性情報(たとえば、「20100115,0001,06-01」)を取得する。そして、コンピュータ12は、ステップS127で、メモリ18のデータ記憶領域28(図2)のシールピクセル値レジスタ(図示せず)に、ピクセル値に属性情報を関連付けて記憶する。
なお、ステップS123−S127の処理は、全てのQRシール150に対して実行される。また、ステップS123の処理を実行するコンピュータ12は属性マーク位置取得手段、第1属性マーク位置取得手段および属性マークピクセル値取得手段として機能し、ステップS125の処理を実行するコンピュータ12は属性認識手段および第1属性取得手段として機能する。さらに、ピクセル値(px3,py3)を属性マークピクセル値と言うこともある。
また、ステップS113で“NO”であれば、ステップS129で、経緯度座標レジスタおよびピクセル値レジスタに、経緯度、ピクセル値および属性情報として「null」を書き込む。
図19のステップS101に戻って、コンピュータ12は、先のステップS99において共に、エラーが無かったかどうか、つまりステップS99で「null」がレジスタに書き込まれなかったかどうか判断する。エラーが無かったと判断したら、次のステップS103で、座標変換処理を実行する。座標変換処理は、具体的には、図24で示すフロー図によって達成される。なお、ステップS103の処理を実行するコンピュータ12は変換手段として機能する。
図24の最初のステップS131において、コンピュータ12は、図22のQRコード認識処理で取得した図23に示す左上角K1のピクセル値(px1,py1)と右下角K2のピクセル値(px2,py2)とをデータ記憶領域28のピクセル値レジスタから読み出す。続いて、ステップS133では、QRコード認識処理で取得された図23に示す左上座標(Lx1,Ly1)と右下座標(Lx2,Ly2)を経緯度座標レジスタから読み出す。さらに、続いて、ステップS135では、図22に示すQRコード認識処理で取得した図23に示すQRシールのピクセル値(px3,py3)をシールピクセル値レジスタから読み出す。
ステップS137で、コンピュータ12は、左上角K1のピクセル値(px1,py1)と右下角K2のピクセル値(px2,py2)に基づいて、横軸および縦軸のピクセル数を、分割量として算出する。続いて、ステップS139では、左上座標(Lx1,Ly1)および右下座標(Lx2,Ly2)に基づいて、経緯度の差を算出する。なお、ステップS137で算出された分割量は、メモリ18のデータ記憶領域28(図2)の分割量レジスタ(図示せず)に保存される。そして、保存された分割量は、読取GUI120における分割量表示部154に表示される。なお、ステップS137の処理を実行するコンピュータ12はピクセル総数算出手段として機能する。
続いて、ステップS141で、数2に従って、ユーザによって貼り付けられたQRシール150のX軸ピクセル値px3をX座標に変換し、次のステップS143で、QRシール150のY軸ピクセル値py3をY座標に変換する。
たとえば、右下のX座標Lx2から左上のX座標Lx1を引くことによって、地図全体のX方向長さが計算でき、右下角K2のX軸ピクセル値px2から左上角K1のX軸ピクセル値px1を引くことで地図全体のX方向のピクセル数が計算できる。また、X方向長さをX方向のピクセル数で割る{(Lx2-Lx1)÷(px2-px1)}ことによって、1ピクセルのX方向長さが計算できる。さらに、QRシール150bのX軸ピクセル値px3から左上角K1のX軸ピクセル値px1を引くことで、QRシール150bの地図画像上の位置が計算できる。そして、左上のX座標Lx1に、1ピクセルのX方向長さにQRシール150bの地図画像中の位置を掛けた結果の値を加えると、QRシール150bのX方向の測地系の数値、すなわち経度が求まる。
一方、右下のY座標Ly2から左上のY座標Ly1を引くことによって、地図全体のY方向の長さが計算でき、右下角K2のY軸ピクセル値py2から左上角K1のY軸ピクセル値py1を引くことで地図全体のY方向のピクセル数が計算できる。また、Y方向の長さをY方向のピクセル数で割る{(Ly2-Ly1)÷(py2-py1)}ことによって、1ピクセルのY方向長さが計算できる。さらに、QRシール150bのY軸ピクセル値py3から左上角K1のY軸ピクセル値py1を引くことで、QRシール150bの地図画像中の位置が計算できる。そして、左上のY座標Ly1に、1ピクセルのY方向長さにQRシール150bの地図画像中の位置を掛けた結果の値を加えると、QRシール150bのY方向の測地系の数値、すなわち緯度が求まる。
[数2]
X座標(経度)=Lx1+[{(Lx2-Lx1)÷(px2-px1)}×(px3-px1)]
Y座標(緯度)=Ly1+[{(Ly2-Ly1)÷(py2-py1)}×(py3-py1)]
このようにして、ステップS145で、GISデータに対応した経緯度である(X,Y)
を確定する。なお、ここではQRシール150bについてのみ説明したが、QRシール150a,150c,150dについても同様に処理される。
図19のステップS105に戻って、コンピュータ12は、ステップS103で変換した経緯度と、ステップS99で取得した属性を関連付けて、属性関連付けテーブル264に記憶する。たとえば、属性関連付けテーブル264は、図25に示すように、「種類」、「経緯度」、および「属性」の列から構成されている。たとえば、QRシール150bに対応する経緯度が「34.6960584757912,135.514396707517」であり、属性の種類が「防犯調査(0001)」であり、属性が「盗難6−自転車1(06-01)」である。そして、QRシール150bについて関連付けテーブルに記録されると、種類の欄に「0001」が記録され、同じ行の経緯度の欄には「34.6960584757912,135.514396707517」が記録され、同じ行の属性の欄には「06-01」が記録される。
なお、ステップS105の処理は、全てのQRシール150に対して実行される。また、図19のステップS105で記録したデータを1レコードとして、属性関連付けテーブル264をCSVファイルで出力してもよい。さらに、ステップS105の処理を実行するコンピュータ12は記憶手段として機能する。
また、図19のステップS101で“NO”が判断されたとき、つまりQRシール位置およびQRコードのいずれかの認識に失敗したときは、ステップS107でQRシール位置および/またはQRコードに対してエラー値を設定する。そして、ユーザは、画像認識結果エラーと判断されたページを呼び出して、QRシール位置および/またはQRコードの訂正入力を行うことができる。
このようにして、図20に示すようにQRシール150を貼り付けた地図用紙90の画像データを読み取ることによって、QRシール150のピクセル値をGISデータに変換し、そのGISデータとQRシール150が含む属性と関連づけて記録することができる。
以上の処理によって、地図画像92aが印刷される位置は用紙毎に異なったとしても、用紙毎の地図画像92aの左角上K1のピクセル値を、オフセット値として取得することができる。また、オフセット値に基づいて、地図画像92の原点を求めることができるため、1ピクセル毎に経緯度を算出することができるようになる。つまり、QRシール150の経緯度を高精度に求めることができる。
さらに、QRコードが印刷されたシールを利用することで、そのシールに含まれる属性を経緯度の情報と同時に取得できるようになる。つまり、地図画像92を読み取る処理を単純化することができ、プログラムの処理速度を高めることができる。
なお、先述したメッシュ96および経緯度部98は、QRコードが読めない場合などにおいて、人間がシール位置に対応する経緯度を計算するために利用される。つまり、メッシュ96はシール位置を確定させるためのメモリとして印刷され、メッシュ96は地図の切り出し位置を確定させるための情報として印刷されている。
たとえば、地図票の2014個のメッシュの中の任意の1つには、事件が起きた場所を示すQRシール150が貼り付けられる。このとき、ユーザは、上記QRシール150が2014個のどのメッシュ内に有るかを判断するとともに、左上角と左下角との経緯度を経緯度部98から読み取り、メッシュ96の周囲に書かれた数字から、メッシュの縦横の数(Wz,Wy)を計算する。そして、左上角の座標を(Ax, Ay)、右下角の座標を(Bx, By)、シール位置の座標を(Rx, Ry)とした場合、ユーザは、所定の式に従って、シールが貼り付けられた場所の経緯度を求めることができる。
つまり、右下のX座標Bxから左上のX座標Axを引くことによって、地図画像全体のX方向長さが計算でき、そのX方向長さをX方向のメッシュ数Wxで割る((Bx-Ax)÷(Wx))ことによって、1つのメッシュのX方向長さが計算でき、それにシール位置Rxを掛けると、そのシール位置のメッシュのX方向の測地系の数値すなわち経度が求まる。その経度を左上の座標Axに加えることによって、シール貼り付けたメッシュの経度となる。また、同様にして、シール位置のメッシュのY方向の測地系の数値すなわち経度も求めることができる。
これにより、災害などによって地図読取装置10の故障した場合でも、人間による手計算でシール位置を経緯度に変換する事ができる。
ただし、メッシュ96の目は人間によって認識できなければならないため、メッシュ96の目は必然的に粗くなる。そのため、所定の式に従って計算された経緯度は、ピクセル値に基づく経緯度に比べて精度が低くなる。
図26の実施例では、A3サイズの用紙90に地図画像92が印刷される。この実施例でも、用紙90、地図画像92、第1QRコード94a、第2QRコード94bおよびメッシュ96は先の実施例と同じであるが、経緯度部98については印刷される位置が左上となる。また、この実施例では、ユーザは、QRシール150に代えて、色シールによって位置情報および属性を付与する。そして、この色シールは、シールの色そのものが属性を表す。
たとえば、図26を参照して、ここでは、赤色(図では斜線の網掛け)、青色(図では縦線)、黄色(図では縦横の網掛け)および緑色(図では斜線)の4色の色シールが利用される。つまり、色シール160a,160gが緑色であり、色シール160b,160d,160e,160jが黄色であり、色シール160c,160fが赤色であり、色シール160h,160iが青色である。そして、緑色の色シール160の属性は「遊びに行く場所」であり、青色の色シール160の属性は「注意している場所」であり、黄色の色シール160の属性は「習い事に行く場所」であり、赤色の色シール160の属性は「危険を感じた場所」である。
なお、メモリ18のデータ記憶領域28(図2)には、各色と属性とが対応付けられた色属性テーブル(図示せず)が記憶される。また、各色シールを識別しない場合には、色シール160と言う。
この実施例でも、以下に説明する読取処理によって、色シールが貼り付けられた地図をイメージリーダで読取り、角のQRコードおよび地図に貼り付けられた色シール160の位置を検出する。つまり、QRコードに埋め込まれた地図の左上と右下の座標である経緯度に基づいて、色シール160が貼り付けられた位置をGISデータとして利用する経緯度へ変換する。そして、色シール160が示す経緯度と属性とを関連付けてメモリ18に記憶する。
この実施例の読取処理の基本動作が図27のフロー図に示される。また、このフロー図において、図19に示すフロー図と重複するステップについては詳細な説明を省略する。図27を参照して、ステップS151では、図21に示す読取GUI120をモニタ16(図1)に表示する。ただし、読取GUI120における、QR内容表示部138、QRピクセル値表示部140およびQR位置座標表示部142は、色シールに対応する表示に変更される。つまり、QR内容表示部138は色シール属性表示部138に変更され、QRピクセル値表示部140は色シールピクセル値表示部140に変更され、QR位置座標表示部142は色シール位置座標表示部142に変更される。
続いて、図26に示す用紙90をスキャナ24にセットして、ステップS151でこのような読取GUI120を表示した後、コンピュータ12は、ステップS153において、ユーザによってイメージの取込み操作がされたかどうかを判断する。そして、ステップS153で“YES”を判断すると、続くステップS155でスキャナ24を動作させて1枚の用紙をスキャンし、ステップS157で、取得したイメージをメモリ18のデータ記憶領域28(図2)に設定されているイメージバッファ(図示せず)に一時的に保存し、さらに読取GUI120のイメージ表示領域124に保存したイメージを表示する。また、イメージ表示領域124に表示したイメージは、ユーザが拡大/縮尺ボタン(図示せず)を操作することによって、自由に拡大または縮小表示することができる。なお、ステップS155の処理を実行するコンピュータ12は読取手段として機能する。
続いて、ステップS159で、コンピュータ12は図28で詳細に示す色シール位置認識処理を実行する。
図28の最初のステップS171を実行して、コンピュータ12はイメージ表示領域124に表示されるイメージに対して指定した色を強調変換する。具体的には、読み取ったイメージに対して、左上から右下へラスタスキャンによって1ピクセル毎に、指定した色(ここでは、緑色、赤色、黄色、青色)以外は、全て黒色(または白色)に変換する。また、指定した色のRGB値も各色の最大値に変更する。
RGB値とは、(赤(R):0-255、緑(G):0-255、青(B):0-255)のように示される。そして、黒色のRGB値は(0,0,0)で示され、白色のRGB値は(255,255,255)で示される。さらに、赤色のRGB値は(255,0,0)で示され、緑色のRGB値は(0,255,0)で示され、青色のRGB値は(0,0,255)で示さ、黄色のRGB値は(255,255,0)で示される。
ここで、人間は、RGB値が上の値でなくても、赤色、緑色、青色および黄色と感じることがある。たとえば、人間は、赤色の色値が約230以上であり、他の色の数値が約50以下であれば、およそ赤色と感じることがある。しかし、このような数値では、ステップS173以降の処理に影響が出るため、ステップS171では色も強調変換を行う。そして、強調変換が行われると、たとえばRGB値の赤色の数値が230以上であり、他の色の数値が50以下であれば、赤色(255,0,0)に変換される。またRGB値の赤色と緑色との数値が230以上であり、青色の数値が50以下であれば、黄色(255,255,0)に変換される。なお、緑色および青色について赤色と同じように変換されるため、詳細な説明は省略する。また、上記閾値は一例であるため、他の実施例ではこれらの数値に限定されるものではない。
したがって、図29に示すように、ステップS171が実行されると、色シールが貼り付けられていない所のピクセルは、黒色のRGB値(0,0,0)に変換される。一方、緑色の色シール160a,160gが貼り付けられた所のピクセルは、緑色のRGB値(0,255,0)に変換される。また、黄色の色シール160b,160d,160e,160jが貼り付けられた所のピクセルは、黄色のRGB値(255,255,0)に変換される。さらに、赤色の色シール160c、160fが貼り付けられた所のピクセルにおいては、赤色のRGB値(255,0,0)に変換される。そして、青色の色シール160h,160iが貼り付けられた所のピクセルは、青色のRGB値(0,0,255)に変換される。
続いて、ステップS173で強調変換できたか否かを判断し、変換できた場合はステップS175に進んで、コンピュータ12は強調変換されたイメージに対してハフ変換処理を施す。つまり、強調変換されたイメージに含まれる、色シールの輪郭線および色シール160の重心位置を、円のハフ変換処理によって認識する。たとえば、図29に示す強調変換されたイメージに対して、ハフ変換処理が施されると、図30のように、各色シールの輪郭線と重心位置とが取得される。つまり、図31(A)に示すように、色シール160が貼り付けられた位置に対応して、色シールの輪郭線o1と重心位置G1とが認識される。さらに、図31(B)に示すように、2つの色シール160が重なっていたとしても、2つの色シール160それぞれに対して、輪郭線o2および輪郭線o3と、重心位置G2および重心位置G3とが認識される。
なお、この実施例の読取プログラム263は、Intel Corporation(登録商標)が提供する「OpneCV」をライブラリとして含んでおり、円のハフ変換による輪郭線および重心位置の認識処理に関しては、そのライブラリが利用されている。また、円のハフ変換については、広く一般的な手法であるため、ここでの詳細な説明は省略する。
続いて、ステップS177に進んで、コンピュータ12は、たとえば図32に示す色シール160jの重心位置のピクセル値(px3,py3)を、メモリ18のデータ記憶領域28(図2)のシールピクセル値レジスタ(図示せず)に保存する。さらに、コンピュータ12はステップS179で、図32に示す色シール160jのRGB値に基づいて、メモリ18のデータ記憶領域28(図2)の色属性テーブルから属性を読み出す。たとえば、色シール160jは青色であるため、「注意している場所」の属性が色属性テーブルから読み出される。なお、ステップS177の処理を実行するコンピュータ12は属性マーク位置取得手段、第2属性マーク位置取得手段および属性マークピクセル値取得手段として機能する。また、ステップS179の処理を実行するコンピュータ12は属性認識手段および第2属性取得手段として機能する。
コンピュータ12は、ステップS181で、メモリ18のデータ記憶領域28(図2)のシールピクセル値レジスタ(図示せず)と、ピクセル値に属性とを関連付けて記憶する。なお、ステップS177−S181の処理は、全ての色シール160に対して実行される。
また、ステップS173で“NO”であれば、ステップS183で、ピクセル値レジスタに、ピクセル値および属性情報として「null」を書き込む。
なお、シールのピクセル値は、地図画像92におけるピクセルの位置を表すもので、経緯度の座標位置ではない。そして、左上角K1(図26)をピクセル値を原点Poとして、縦横の何番目のピクセルかを示す数値がピクセル値(px3,py3)として記憶される。
続いて、ステップS161で、コンピュータ12は、図33で詳細に示すQRコード認識処理を実行する。
図33の最初のステップS191およびS193を実行して、コンピュータ12は、第1QRコード94aおよび第2QRコード94bを認識する。認識できたときはステップS195に進んで、測地系に対応した経緯度、つまり図32に示す左上座標(Lx1,Ly1)と右下座標(Lx2,Ly2)をメモリ18のデータ記憶領域28(図2)の経緯度座標レジスタ(図示せず)に保存する。さらに、ステップS197およびS199では、左上角K1の座標ピクセル値(px1,py1)と右下角K2のピクセル値(px2,py2)を、メモリ18のデータ記憶領域28(図2)のピクセル値レジスタ(図示せず)に保存する。なお、ステップS195の処理を実行するコンピュータ12は経緯度画像認識手段として機能する。また、ステップS197およびS199の処理を実行するコンピュータ12は特定ピクセル値取得手段として機能する。
また、ステップS193で“NO”であれば、ステップS201で、経緯度座標レジスタに、経緯度として「null」を書き込む。
図27のステップS163に戻って、コンピュータ12は、先のステップS159およびS161において共に、エラーが無かったかどうか、つまりステップS159およびS161で「null」がレジスタに書き込まれなかったかどうか判断する。エラーが無かったと判断したら、次のステップS165で、全ての色シール160に対して座標変換処理を実行する。座標変換処理は、既に説明した図24で示すフロー図によって達成される。なお、ステップS165の処理を実行するコンピュータ12は変換手段として機能する。
続いて、ステップS167に進んで、コンピュータ12は、全ての色シール160の経緯度と属性とを関連付けて、既に説明した属性関連付けテーブル264に記憶する。なお、ステップS167の処理を実行するコンピュータ12は記憶手段として機能する。
また、図27のステップS163で“NO”が判断されたとき、つまり色シール位置およびQRコードのいずれかの認識に失敗したときは、ステップS169で色シール位置および/またはQRコードに対してエラー値を設定する。そして、ユーザは、画像認識結果エラーと判断されたページを呼び出して、色シール位置および/またはQRコードの訂正入力を行うことができる。
このようにして、図26に示すように、色シール160を貼り付けた地図用紙90の画像データを読み取ることによって、色シール160のピクセル値をGISデータに変換し、そのGISデータと色シール160の色に基づく属性と関連づけて記録することができる。
この実施例では、一般的に市販されている色シールを利用することができるため、先の実施例のようにQRシールを作成する費用および手間を省くことができる。また、色シール160の方が、QRシール150よりも貼り付け面積が小さいため、1枚の地図票で多くの調査結果を得ることができる。
また、上記施例では、事件の起きた場所などを色シール160によって付与していたが、色シール160に代えて、ペンによる手書きマークによって付与されてもよい。つまり、ユーザは、手書きマークを色シール160のように描くことで、色シール160と同様の効果を得ることができる。さらに、手書きマークの形状としては、円形だけに限らず、三角形または矩形(四角形)などであってもよい。この場合、色に加えて形状でも属性が示される。たとえば、赤色が「盗難」の属性を示し、円形が「自転車」の属性を示す場合、赤色で円形の手書きマークは、自転車が盗難された場所を示すことができる。
このように、手書きマークを利用することで、手書きマークの形状と色とを組み合わせた属性を利用する事ができる。さらに、手書きマークの大きさを、色シールよりも小さくすることで、一枚の地図票に付与できる属性マークの数を増やすこともできる。
なお、手書きマークの形状および重心位置は、「OpneCV」をライブラリ利用することで認識する事ができる。そのため、この実施例においてステップS177の処理を実行するコンピュータ12は第3属性取得手段としても機能する。
以上の説明から分かるように、地図印刷/読取装置10は、地図画像92と第1QRコード94aおよび第2QRコード94bとを用紙90に印刷し、地図画像92の任意の位置に、QRシール150や色シール160が貼り付けられた用紙90を読み取る。たとえば、QRシール150が貼り付けられた用紙90が読み取られると、第1QRコード94a、第2QRコード94bおよびQRシール150の頂点A1のピクセル値を取得するとともに、QRシール150に印刷されたQRコードを復号して属性を取得する。
また、コンピュータ12は、用紙90に印刷された第1QRコード94aおよび第2QRコード94bを復号することで、地図画像の左上と右下との経緯度を取得する。さらに、コンピュータ12は、数2に従う式に基づいて、QRシール150に印刷されたQRコードのピクセル値を経緯度に変換する。そして、コンピュータ12は、変換された経緯度と、QRシール150に印刷されたQRコードから取得された属性とを関連付けて、メモリ18に保存する。
このようにして、地図画像92の任意の位置に貼り付けたQRシール150の経緯度を正確に読み取り、そのQRシール150に印刷されたQRコードの属性をと関連づけて記憶することができる。つまり、複数の属性を持つ調査結果を容易に取り込み、データベース化できる。
なお、上述の実施例では、印刷した地図画像92の対角の経緯度をQRコードで符号化して地図画像92と一緒に用紙90上に印刷した。しかしながら、地図画像92の対角の経緯度を符号化するためには、QRコードのような2次元バーコード以外に、他の符号化方法が採用されてもよいが、その符号は、ユーザがシールを貼り付けた後に地図画像92と一緒にスキャナで読み取れる必要がある。さらに、シール位置に基づいてピクセル値が取得できる必要もある。つまり、スキャナで読み取れる限り、任意の符号化方法による符号画像(経緯度画像)が利用可能である。さらに、QRコード94にかえて、地図画像の対角の経緯度の数字列を矩形の線で囲った画像などを経緯度画像としてもよい。
また、上述の実施例ではいずれも、印刷枠として矩形の印刷枠64を設定し、その印刷枠64上または印刷枠64内の特定の位置、つまり、印刷枠64に関連した特定の位置として、対角の経緯度をQRコードのような符号画像(経緯度画像)に変換するようにした。しかしながら、印刷枠64は必ずしも矩形で或る必要はなく、円またはその他の多角形を印刷枠64として指定するようにしてもよい。そして、符号画像ではそれらの印刷枠64の特定の位置、たとえば多角形の各頂角および重心点(中心)における経緯度の情報を経緯度画像に埋め込むようにすればよい。
この場合、読取装置としては、符号画像を解読してそれらの特定場所の経緯度を求め、それに基づいて計算して、ユーザが貼り付けたシール位置の経緯度を特定することができる。さらに、印刷枠が円である場合には、印刷される経緯度画像1つでよく、その経緯度画像は円の中心と一致するように印刷される。
また、第1QRコード94aおよび第2QRコード94bは、4つの頂点A1−A4のうち、1つの頂点が地図画像92の角と一致していればよいため、QRコード94が地図画像92に重複して印刷されていなくてもよい。
また、シールに印刷される属性画像は、QRコードだけに限られず、属性を示す数字列を矩形の線で囲った画像をなど属性画像としてもよい。
また、色シール160の形は、重心を求めることが可能な図形であれば、どのような形であってもよい。
また、QRシール150と色シール160とを同時に貼り付けることで、相関のある複数の調査を同時に行ってもよい。たとえば、QRシール150によって事件が起こりやすい場所の防犯調査を行い、色シール160によって子どもの行動調査を行うことで、子どもの行動範囲に潜む危険な場所を調査する事もできる。
また、経緯度画像および属性画像は、必ずしも同じ符号画像でなくてもよい。つまり、経緯度画像が2次元バーコードであり、属性画像が1次元バーコードであってもよい。
また、上述の実施例では、「QR Code Decode Library」および「OpenCV」に代えて、他のライブラリを利用したり、専用のソフトを利用したりすることで、QRコードの四隅のピクセル値を個別に取得したり、ハフ変換処理を行ってもよい。
また、読取プログラム262は、データ配信用のサーバのHDDに記憶され、無線通信を介して他のコンピュータに配信されてもよい。また、メモリカード、CD-ROM、DVD-ROMなどの記憶媒体に読取プログラム262を記憶させた状態で、その記憶媒体が販売または配布されてもよい。
そして、本明細書中で挙げた、経緯度、用紙90のサイズと余白、メッシュに関する数値、符号/復号される数値、ピクセルに関する数値およびRGB値などの具体的な数値は、いずれも単なる一例であり、製品の仕様などの必要に応じて適宜変更可能である。