JP5712825B2 - 座標コード化装置、座標コード化方法、距離算出装置、距離算出方法、プログラム - Google Patents

座標コード化装置、座標コード化方法、距離算出装置、距離算出方法、プログラム Download PDF

Info

Publication number
JP5712825B2
JP5712825B2 JP2011151172A JP2011151172A JP5712825B2 JP 5712825 B2 JP5712825 B2 JP 5712825B2 JP 2011151172 A JP2011151172 A JP 2011151172A JP 2011151172 A JP2011151172 A JP 2011151172A JP 5712825 B2 JP5712825 B2 JP 5712825B2
Authority
JP
Japan
Prior art keywords
data
coordinate
bit length
bit string
additional data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011151172A
Other languages
English (en)
Other versions
JP2013020309A (ja
Inventor
稲越 宏弥
宏弥 稲越
達哉 浅井
達哉 浅井
裕章 森川
裕章 森川
多湖 真一郎
真一郎 多湖
湯上 伸弘
伸弘 湯上
岡本 青史
青史 岡本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011151172A priority Critical patent/JP5712825B2/ja
Priority to US13/541,376 priority patent/US9175965B2/en
Publication of JP2013020309A publication Critical patent/JP2013020309A/ja
Application granted granted Critical
Publication of JP5712825B2 publication Critical patent/JP5712825B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/20Instruments for performing navigational calculations

Landscapes

  • Engineering & Computer Science (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Automation & Control Theory (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Instructional Devices (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本発明は、座標データをテキストデータで表現されるコードに変換する座標コード化装置及び方法並びにプログラム、二点の座標データを取得して二点間の距離を算出する距離算出装置及び方法並びにプログラムに関する。
従来、座標データをコード(テキストデータ)に変換する技術として、ジオ・ハッシュと称される技術が知られている。ジオ・ハッシュでは、まず、緯度と経度を入力値とし、それぞれに対応するビット列を求め、経度に対応するビット列と緯度に対応するビット列から交互に1ビットずつ取り出して並べた合成ビット列を求める。そして、合成ビット列に所定の対応表を適用してコードを導出する。ジオ・ハッシュ技術は、地点にコードを割り振ってコンピュータ処理に用いたり、データベース等に地点情報を格納するのに好適に用いられる。
以下、ジオ・ハッシュにおける各段階の処理について説明する。前提として、緯度は[−90〜90]の値をとり得る入力値であり、経度は[−180〜180)の値をとり得る入力値であるものとする。緯度と経度からビット列を求めるには、次のような手法が用いられる。
ここで、丸括弧“(”及び“)”は開区間(その数値を含まない)を意味し、角括弧“[”及び“]”は閉区間(その数値を含む)を意味する。上記の[−180〜180)の場合、−180は含むが、180は含まない。以降、区間分割した時の中央値をどちらか一方の区間にしか含まないように確定させるため、上側を開区間とする。
まず、入力された緯度が、区間[−90〜90]の中央値0よりも右側(区間[0〜90])に在るときは1を、左側(区間[−90〜0))に在るときは0を最上位のビット値として記憶装置に格納する。右側に在る場合、更に、該当する右側の区間[0〜90]の中央値45よりも右側(区間[45〜90])に在るときは1を、左側(区間[0〜45))に在るときは0を上位から2番目のビット値としてメモリ等に格納する。こうした処理を、十分な精度が得られるまで繰り返し行う。
図1は、ジオ・ハッシュ技術において、緯度に関するビット列(以下、緯度ビット列と称する)を生成する様子を示す図である。ここでは、入力された緯度が42.6であるものとする。図示するように、一回目の判定では、入力値が区間[−90〜90]の中央値0よりも右側に在るために1が、二回目の判定では、入力値が区間[0〜90]の中央値45よりも左側に在るために0が格納される。同様に、三回目の判定では、入力値が区間[0〜45)の中央値22.5よりも右側に在るために1が格納され、四回目の判定では、入力値が区間[22.5〜45)の中央値33.75よりも右側に在るために1が格納される。そして、五回目の判定では、入力値が区間[33.75〜45)の中央値39.38よりも右側に在るために1が格納される。このように区間を再帰的に分割することによって、経度ビット列「10111」が得られる。
更に、入力された経度が−5.6であるものとすると、同様の処理により、経度に関するビット列(以下、経度ビット列と称する)「01111」が得られる。
緯度ビット列及び経度ビット列が得られると、これを交互に並べて合成ビット列を生成する。上記の例では、経度ビット列の最上位ビット「0」、緯度ビット列の最上位ビット値「1」、経度ビット列の上位から2番目のビット「1」、緯度ビット列の上位から2番目のビット「0」、経度ビット列の上位から3番目のビット「1」、…の順に格納される。この結果、合成ビット列は「01101111111」となる。図2は、緯度ビット列と経度ビット列から合成ビット列を得る様子を示す図である。
合成ビット列を得ると、更に、base32等の変換手法を用いて、合成ビット列をテキストデータ(コード)に変換する。図3は、base32に係る対応表である。図示するように、base32では、5ビット分のビット値が数字又はアルファベットに対応付けられている。上記合成ビット列「01101111111」は、「01101」が「e」に対応し、「11111」が「z」に対応するため、「ez」というコードに変換される。ジオ・ハッシュのコードは、任意の精度で表現でき、コード長が長いほど精度が高くなり、コードの末尾を削っていくと徐々に精度が落ちるという性質を有している。
具体例を挙げると、{緯度57.64911、経度10.40744}という座標からは、「u4pruydqqvj」というコードが導出される。なお、現在インターネット上では、「http://geohash.org/」の次にコードを連結したURLにアクセスすると、該当する地点の地図が表示されるというサービスが実施されている。このように、緯度及び経度座標をコード化することにより、データを短縮することができるため、情報の送受信や格納を簡便に行うことができる。
コードから座標を得るには、例えば上記「ez」を逆変換して「0110111111」というデータを取得し、これを1ビットおきに読み込んだ「01111」と「10111」を経度ビット列、緯度ビット列と認識して図1と逆の処理を行えばよい。
なお、座標をコード化する技術については、ジオ・ハッシュの他にも開示がなされている(例えば、特許文献1参照)。
米国特許出願公開第2005/0023524号明細書
しかしながら、ジオ・ハッシュ技術は、コードや合成ビット列と座標とが一対一で対応している(唯一性を満たす)ものの、距離保存性を満たさないという問題を孕んでいる。「距離保存性を満たさない」とは、二点に付与されたコードや合成ビット列に関するいかなる距離の定義も、二点間の距離を保存しないことを意味する。ここで、ブロック距離とは、コードの精度に応じて対象領域をブロックに分割し、座標がいずれのブロックに該当するかで地図及び座標を表現する場合において、二点が何ブロック離れているかを示す値である。すなわち、ブロックとは、この種のコード化技術において座標そのものと同一視できる概念である。
図4は、ジオ・ハッシュにおけるブロック距離BDと、ジオ・ハッシュに距離保存性が無いことを説明するための説明図である。本図では、経度が3ビット、緯度が2ビットの精度でコードが付与されている。また、前述の逆変換の都合から、合成ビット列を、上段部分を経度に割り当て、下段部分を緯度に割り当てた二段のデータとして表現している。図示するように、二ブロックにそれぞれ付与された合成ビット列において、対応するビット値が異なる数(図中、ハミング距離HDと表記した)は、必ずしも二ブロック間のブロック距離と一致しない。また、この結果、二ブロック間におけるコードの擬似的な距離(例えばrとsなら1、rとuなら3)も、ブロック距離BDを表すものとならない。特に地球面にジオ・ハッシュを適用した場合、赤道や子午線、日付変更線付近等でハミング距離HDとブロック距離BDの関係が大きく変化してしまうことが知られている。
距離保存性が無いと、二点の(二ブロック分の)コードないし合成ビット列を与えられたとしても、即座にブロック距離を導出できないことになる。この結果、コードないし合成ビット列から座標を逆算した上で、別途演算式を立てて距離を演算する必要が生じ、処理負担増や処理遅延を招くおそれがある。
本発明はこのような課題を解決するためのものであり、距離保存性を満たすデータを生成することが可能な座標コード化装置等を提供することを、主たる目的とする。
上記目的を達成するための第1の態様は、
処理対象領域を所定ビット長に応じたブロックに分割認識し、入力された座標データが示す位置が基準位置から離れるのに応じて基準データと比較したビット値の相違数が徐々に増加する傾向で、前記座標データに対応する所定ビット長の付加データを生成する付加データ生成手段と、
前記生成された付加データを、記憶手段に格納された所定ビット長のデータに連結して前記所定ビット長の2倍のビット長のデータを生成し、該生成したデータを前記記憶手段に格納する連結処理手段と、
前記連結処理手段により前記記憶手段に格納されたデータのビット長を前記所定ビット長に指定して前記付加データ生成手段に付加データを生成させ、次いで前記連結処理手段にデータを連結して記憶手段に格納させることを繰り返し行う制御手段と、
を備える座標コード化装置である。
本発明によれば、距離保存性を満たすデータを生成することが可能な座標コード化装置等を提供することができる。
ジオ・ハッシュ技術において、緯度に関するビット列を生成する様子を示す図である。 緯度ビット列と経度ビット列から合成ビット列を得る様子を示す図である。 base32に係る対応表である。 ジオ・ハッシュにおけるブロック距離BDと、ジオ・ハッシュに距離保存性が無いことを説明するための説明図である。 本発明の第1実施例に係る距離算出装置1のハードウエア構成例である。 本発明の第1実施例に係る距離算出装置1の機能構成例である。 ビット長が2、4の場合に、唯一性と距離保存性を満たす合成ビット列の配置(合成ビット列マップ36#2、36#4)を示す図である。 ビット長が8の場合に、唯一性と距離保存性を満たす合成ビット列マップ36#8を示す図である。 合成ビット列マップ36を生成するための処理の流れを示すフローチャートである。 ビット長=2の初期グリッドと、各ブロックの左上隅のブロックからのハミング距離を示す図である。 図10の初期グリッドから生成される、ビット長=4のプレイス・ホルダグリッド37#4を例示した図である。 2倍の大きさに拡張されたビット長=4のプレイス・ホルダグリッド37#4!を例示した図である。 ビット長=4のマスクデータ38#4を例示した図である。 プレイス・ホルダグリッド37#4とマスクデータ38#4から合成ビット列マップ36#4が生成される様子を示す図である。 ビット長=4の合成ビット列マップ36#4からビット長=8のプレイス・ホルダグリッド37#8が生成される様子を示す図である。 ビット長=8のプレイス・ホルダグリッド37#8とビット長=8のマスクデータ38#8から、ビット長=8の合成ビット列マップ36#8が生成される様子を示す図である。 本発明の第2実施例に係る座標コード化装置2の機能構成例である。 平面を処理対象とする場合に、座標コード化装置2によって実行される処理の概要を示すフローチャートである。 ビット列sとsから合成ビット列sを生成する様子を示す図である。 球面を処理対象とする場合に、座標コード化装置2によって実行される処理の概要を示すフローチャートである。 座標コード化装置2により実行される、座標x又はvをビット列に変換する処理の流れを示すサブフローである。 座標コード化装置2により実行される、座標y又はwをビット列に変換する処理の流れを示すサブフローである。 合成ビット列sが決定される様子を、合成ビット列マップ36に則して模式的に示す図である。 第1実施例に係る距離算出装置1や第2実施例に係る座標コード化装置の適用例である。
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
<第1実施例>
以下、図面を参照し、本発明の第1実施例に係る距離算出装置1、距離算出方法、及びプログラムについて説明する。
[ハードウエア構成]
図5は、本発明の第1実施例に係る距離算出装置1のハードウエア構成例である。距離算出装置1は、例えば、CPU(Central Processing Unit)10と、ドライブ装置12と、補助記憶装置16と、メモリ装置18と、インタフェース装置20と、入力装置22と、ディスプレイ装置24と、を備える情報処理装置である。これらの構成要素は、バスやシリアル回線等を介して接続されている。
CPU10は、例えば、プログラムカウンタや命令デコーダ、各種演算器、LSU(Load Store Unit)、汎用レジスタ等を有するプロセッサである。
ドライブ装置12は、記憶媒体14からプログラムやデータを読み込み可能な装置である。プログラムを記録した記録媒体14がドライブ装置12に装着されると、プログラムが記録媒体14からドライブ装置12を介して補助記憶装置16にインストールされる。記録媒体14は、例えば、CD−ROM、DVDディスク、USBメモリ等の可搬型の記録媒体である。また、補助記憶装置16は、例えば、HDD(Hard Disk Drive)やフラッシュメモリである。
プログラムのインストールは、上記のように記憶媒体14を用いる他、インタフェース装置20がネットワークを介して他のコンピュータよりダウンロードし、補助記憶装置16にインストールすることによって行うこともできる。ネットワークは、インターネット、LAN(Local Area Network)、携帯電話の電波網等である。また、プログラムは、情報処理装置の出荷時に、予め補助記憶装置16やROM(Read Only Memory)等に格納されていてもよい。
このようにしてインストール又は予め格納されたプログラムをCPU10が実行することにより、図1に示す態様の情報処理装置が、本実施例の距離算出装置1として機能することができる。
メモリ装置18は、例えば、RAM(Random Access Memory)やEEPROM(Electrically Erasable and Programmable Read Only Memory)である。インタフェース装置20は、上記ネットワークとの接続等を制御する。
入力装置22は、例えば、キーボードやマウス、タッチパッド、タッチパネル、マイク等である。また、ディスプレイ装置24は、例えば、LCD(Liquid Crystal Display)やCRT(Cathode Ray Tube)等の表示装置である。距離算出装置1は、ディスプレイ装置24の他、プリンタ、スピーカ等の他の種類の出力装置を備えてもよい。
[機能構成]
図6は、本発明の第1実施例に係る距離算出装置1の機能構成例である。距離算出装置1は、合成ビット列マップ生成部30と、データ検索処理部32と、距離算出部34と、を備える。これらの機能ブロックは、補助記憶装置16等に格納されたプログラム・ソフトウエアをCPU10が実行することにより機能する。なお、これらの機能ブロックが明確に分離したプログラムによって実現される必要はなく、サブルーチンや関数として他のプログラムによって呼び出されるものであってもよい。また、機能ブロックの一部が、IC(Integrated Circuit)やFPGA(Field Programmable Gate Array)等のハードウエア手段であっても構わない。
合成ビット列マップ生成部30は、後述するように、所望のビット長の合成ビット列マップ36を生成して補助記憶装置16やメモリ装置18に格納する。
データ検索処理部32は、補助記憶装置16やメモリ装置18、ROM等に格納された合成ビット列マップ36を用いて、入力装置22により入力された二点の座標データに対応する合成ビット列を出力する。入力されるデータには、上記座標データの他、精度を表す指標となる座標精度Nが含まれる。
座標データは、例えば処理対象が平面である場合は、x軸とy軸が直交する座標系におけるx座標とy座標の組み合わせで表され、処理対象が球面である場合は、経度v及び緯度wで表される。本発明は、平面と球面のいずれに対しても適用可能であり、双方に対して適用される原理は基本的に同じである。
図7は、ビット長が2、4と与えられた場合に、唯一性と距離保存性を満たす合成ビット列の配置(合成ビット列マップ36#2、36#4)を示す図である。また、図8は、ビット長が8と与えられた場合に、唯一性と距離保存性を満たす合成ビット列マップ36#8を示す図である。本実施例においても、合成ビット列を、上段部分を経度に割り当て、下段部分を緯度に割り当てた二段のデータとして表現する。なお、本図及び以下の説明では、合成ビット列の各ビット値は0か1の二値をとり得るものとする。
図中、直線で区画される矩形領域が、平面に対して適用可能な領域Apであり、破線で区画される矩形領域が、球面に対して適用可能な領域Asである。領域Apは、基準位置である「00000000」が左上、左下、右上、右下のうちいずれかの隅に位置し、領域Asは、基準位置である「00000000」が上端又は下端(左右は不問)に位置するように、合成ビット列マップ36から切り出される。なお、これとは逆に、基準位置が、「11111111」で表されるものとしてもよい。更に、基準位置が「01101101」で表されると共に、最も遠いブロックが「10010010」で表されてもよく、基準位置には任意のビット列を割り当ててよい。
図7、8に示すように、領域Apにおいて、合成ビット列は全て異なっており(唯一性を満たす)、任意の二ブロック間でブロック距離BDとハミング距離HDは一致している(距離保存性を満たす)。ハミング距離HDとは、前述のように、二ブロックにそれぞれ付与された合成ビット列において、対応するビット値が異なる数、すなわち反転ビット数である。また、領域Asにおいても唯一性と距離保存性を満たすのであるが、日付変更線(=左右の端部)をまたがって繋がるブロック間でもブロック距離BDとハミング距離HDが一致する点が領域Apと異なる。
[合成ビット列マップ36の生成]
以下、図7、8で示した合成ビット列マップ36の生成方法について説明する。図9は、合成ビット列マップ36を生成するための処理の流れを示すフローチャートである。本フローは、合成ビット列マップ生成部30により実行される。
まず、合成ビット列マップ生成部30は、最短ビット長であるビット長=2の初期データを生成してメモリ装置18等に格納する(S100)。以下、図7、8で示したように領域が分割され、それぞれにビット列が割り当てられたデータ構造を、グリッドと称する。図10は、ビット長=2の初期グリッドと、各ブロックの左上隅のブロックからのハミング距離を示す図である。図10から明らかなように、初期グリッドにおいて、ブロック距離BDとハミング距離HDは一致している。
次に、合成ビット列マップ生成部30は、入力グリッド内のビット列を2倍にしたデータ領域を確保すると共に、元々のデータをデータ領域内に埋め込み、それ以外の部分をブランクデータとしたデータ構造を生成してメモリ装置18等に格納する(S102)。以下、このようなグリッドデータを、プレイス・ホルダグリッド37と称する。なお、始めて本ステップを実行する場合は、入力グリッド=初期グリッドとなる。
図11は、図10の初期グリッドから生成される、ビット長=4のプレイス・ホルダグリッド37#4を例示した図である。図中、ブランクデータを「*」で表現した。プレイス・ホルダグリッド37におけるブランクデータの配置は、図示するように「上段部分と下段部分のそれぞれの後半部分(下位ビット)」と定めてもよいし、上段部分と下段部分における他の部分(前半部分、中央部分等)と定めてもよい。なお、合成ビット列における上段部分は経度を表し、下段部分は緯度を表すのであるから、上段部分と下段部分に配分されるブランクデータは同数であることが望ましい(経度と緯度で精度が異なる場合はこの限りでない)。
合成ビット列が上段部分と下段部分を分けない場合、合成ビット列の末尾等の任意の位置に追加してもよい。例えば、合成ビット列「0*1*」の*部分をブランクデータとしてもよいし、「*01*」の*部分をブランクデータとしてもよいし、「01**」の*部分をブランクデータとしてもよい。
次に、合成ビット列マップ生成部30は、プレイス・ホルダグリッド37を、同一の合成ビット列が2×2の行列をなすように、縦横がそれぞれ2倍の大きさに拡張してメモリ装置18等に格納する(S104)。図12は、2倍の大きさに拡張されたビット長=4のプレイス・ホルダグリッド37#4!を例示した図である。
次に、合成ビット列マップ生成部30は、プレイス・ホルダグリッド37のビット長に対応するマスクデータ38を生成してメモリ装置18等に格納する(S106)。マスクデータ38は、例えば、グリッドの中央部分に0が多く配置され、周辺部分に1が多く配置されるような一定の規則で生成される。逆に、グリッドの中央部分に1が多く配置され、周辺部分に0が多く配置されるようにしてもよい。また、前述のように、中央部分に任意のデータが配置され、周辺部分に当該任意のデータからの反転ビット数が多くなるようなデータが配置されてもよい。
この結果、あるブロックと基準位置(例えば中央付近のブロック)との間のブロック距離が大きくなるほど、当該基準位置のブロックに格納された合成ビット列と比較して、ビット値の相違数(反転ビット数)が増加する傾向を示すことになる。図13は、このような規則によって生成されるビット長=4のマスクデータ38#4を例示した図である。
合成ビット列マップ生成部30は、マスクデータ38を生成すると、これをプレイス・ホルダグリッド37のブランクデータ部分に代入して合成ビット列マップ36を生成し、メモリ装置18等に格納する(S108)。図14は、プレイス・ホルダグリッド37#4!とマスクデータ38#4から合成ビット列マップ36#4が生成される様子を示す図である。図示するように、生成された合成ビット列マップ36#4から切り出された領域Ap、Asは、唯一性と距離保存性を満たしている。
次に、合成ビット列マップ生成部30は、生成した合成ビット列マップのビット長nが2以上であるか否かを判定する(S110)。座標精度Nは、(H−L)/2以上離れている2地点を区別することを保証するという意味を有する指標値である。また、座標精度Nは、S102〜S108の領域分割処理を何回行うかを指定する値でもある。
ビット長nが2未満であれば、直近に生成した合成ビット列マップ36を入力グリッドに指定してS102に戻る。合成ビット列マップ生成部30は、このような処理を、ビット長nが2以上となるまで繰り返し実行する。
図15は、ビット長=4の合成ビット列マップ36#4からビット長=8のプレイス・ホルダグリッド37#8が生成される様子を示す図である。そして、図16は、ビット長=8のプレイス・ホルダグリッド37#8とビット長=8のマスクデータ38#8から、ビット長=8の合成ビット列マップ36#8が生成される様子を示す図である。
このような処理によって、唯一性と距離保存性を満たす、所望のビット長の合成ビット列マップ36を生成することができる。合成ビット列マップ36は、例えば、座標データ、すなわち地理的な座標に対応付けられて格納される。合成ビット列マップ36が地理的な座標に対応付けられた様子については、後述する第2実施例の図23を援用する。図中、縦横の[−300〜500]が地理的な座標を示している。
データ検索処理部32は、入力装置22により入力された二点の座標データに対応するブロックを合成ビット列マップ36上で検索し、当該二つのブロックに格納された合成ビット列を出力する。
距離算出部34は、データ検索処理部32が出力した二つの合成ビット列間の反転ビット数をカウントし、反転ビット数に応じたブロック距離を二点間の距離として出力する。合成ビット列マップ36が唯一性と距離保存性を満たすことにより、「反転ビット数をカウントする」という簡易な処理によって二点間の距離を算出することができる。
なお、合成ビット列マップ36は、予め補助記憶装置16やROM等に格納されているものを用いてもよい。この場合、合成ビット列マップ生成部30は必須の構成でない。
[まとめ]
以上説明した本実施例の距離算出装置1によれば、唯一性と距離保存性を満たす合成ビット列マップ36を用いて複数の座標に対応する合成ビット列を抽出し、反転ビット数をカウントすることによって、複数の座標間の距離を簡易に算出することができる。
<第2実施例>
以下、図面を参照し、本発明の第2実施例に係る座標コード化装置2、座標コード化方法、及びプログラムについて説明する。
[ハードウエア構成]については、第1実施例と共通するため、図5を参照すると共に同一の符号を援用し、各構成要素についての説明を省略する。
[機能構成]
図17は、本発明の第2実施例に係る座標コード化装置2の機能構成例である。座標コード化装置2は、マスター制御部40と、付加データ生成部42と、連結処理部44と、変換処理部46と、を備える。これらの機能ブロックは、補助記憶装置16等に格納されたプログラム・ソフトウエアをCPU10が実行することにより機能する。なお、これらの機能ブロックが明確に分離したプログラムによって実現される必要はなく、サブルーチンや関数として他のプログラムによって呼び出されるものであってもよい。また、機能ブロックの一部が、ICやFPGA等のハードウエア手段であっても構わない。
マスター制御部40は、入力装置22により入力された座標データに対応する合成ビット列を出力するように、付加データ生成部42及び連結処理部44を制御する。入力されるデータには、上記座標データの他、精度を表す指標となる座標精度Nが含まれる。
座標データは、第1実施例と同様、例えば処理対象が平面である場合は、x軸とy軸が直交する座標系におけるx座標とy座標の組み合わせで表され、処理対象が球面である場合は、経度v及び緯度wで表される。本発明は、平面と球面のいずれに対しても適用可能であり、双方に対して適用される原理は基本的に同じである。
[座標データから合成ビット列を導出する処理]
付加データ生成部42は、第1実施例で説明したマスクデータ38を生成する処理に準じた処理を行う。また、連結処理部44は、第1実施例で説明したプレイス・ホルダグリッド37を用意してマスクデータ38を格納し、合成ビット列マップ36を生成する処理に準じた処理を行う。但し、いずれの機能ブロックも、具体的に第1実施例のようなマップデータ(グリッド)を生成せずに、以下に説明するアルゴリズムによって座標データをビット列に変換する。これらの機能ブロックの具体的な処理については、図21、22のフローに則して説明する。
図18は、平面を処理対象とする場合に、座標コード化装置2によって実行される処理の概要を示すフローチャートである。ここでは、入力される座標データを(x,y)、出力される合成ビット列をs、x座標の下限値をL,上限値をH、y座標の下限値をL,上限値をH、座標精度をNとする。
ここで、x座標の下限値Lや上限値Hは、第1実施例で説明した領域Apの外縁と一致するか、それよりも内側となるように、予め定めておく。同様に、y座標の下限値Lや上限値Hは、第1実施例で説明した領域Apの外縁と一致するか、それよりも内側となるように、予め定めておく。
まず、座標コード化装置2は、下限値Lと上限値Hの間の座標xをビット列に変換し、sを出力する(S200)。
次に、座標コード化装置2は、下限値Lと上限値Hの間の座標yをビット列に変換し、sを出力する(S202)。
ここで、座標(x,y)のいずれかが下限値と上限値の間から逸脱している場合は、エラー出力等を行うものとする。
次に、座標コード化装置2は、sを偶数ビットとし、sを奇数ビットとする合成ビット列sを生成して出力する(S204)。図19は、ビット列sとsから合成ビット列sを生成する様子を示す図である。なお、合成ビット列の生成規則については、これに限らず、第1実施例で説明したように種々の規則を採用してよい。
また、図20は、球面を処理対象とする場合に、座標コード化装置2によって実行される処理の概要を示すフローチャートである。ここでは、入力される座標データを(v,w)、出力される合成ビット列をs、経度vの下限値を−180,上限値を180、緯度wの下限値を−90,上限値を90、座標精度をNとする。
ここで、x座標の下限値Lや上限値Hは、第1実施例で説明した領域Asの外縁と一致するか、それよりも内側となるように、予め定めておく。同様に、y座標の下限値Lや上限値Hは、第1実施例で説明した領域Asの外縁と一致するか、それよりも内側となるように、予め定めておく。
まず、座標コード化装置2は、下限値−180と上限値180の間の座標vをビット列に変換し、sを出力する(S300)。
次に、座標コード化装置2は、下限値−90と上限値90の間の座標wをビット列に変換し、sを出力する(S302)。
ここで、座標(v,w)のいずれかが下限値と上限値の間から逸脱している場合は、エラー出力等を行うものとする。
次に、座標コード化装置2は、sを偶数ビットとし、sを奇数ビットとする合成ビット列sを生成して出力する(S304)。合成ビットの生成については、図19を参照することとし、説明を省略する。
(詳細説明)
以下、図18のS200及びS202、並びに図20のS300及びS302における座標をビット列に変換する処理について、より詳細に説明する。
まず、横方向の座標x又はvをビット列に変換する処理について説明する。図21は、座標コード化装置2により実行される、座標x又はvをビット列に変換する処理の流れを示すサブフローである。図18のS200、並びに図20のS300では、本図で示す処理に準じた処理が行われる。ここでは、座標xをビット列sに変換する処理についてのみ説明するが、座標vをビット列sに変換する処理についても同様である。
まず、マスター制御部40は、合成ビット列sの初期ビット長nを2と定義し(S400)、座標xが区間[L*,M)に含まれるかどうかを判定する(S402)。ここで、L*やH*は、領域ApやAsを切り出す前の合成ビット列マップ36の外縁(唯一性を満たす領域の外縁)を示しており、Mは、L*とH*の中間点{(L*+H*)/2}である。
座標xが区間[L*,M)に含まれる場合は、ビット列sの初期値を0とする(S404)。一方、座標xが区間[M,H*]に含まれる場合は、ビット列sの初期値を1とする(S406)。
次に、マスター制御部40は、ビット長nが2以上であるか否かを判定する(S408)。座標精度Nは、(H−L)/2以上離れている2地点を区別することを保証するという意味を有する指標値である。また、座標精度Nは、S410〜S416のループ処理を何回行うかを指定する値でもある。
ビット長nが2未満である場合は、付加データ生成部42が、ビット長nを2倍し(S410)、区間[L*,H*]をn等分した区間群のうち、座標xが属する区間の番号をiと定義する(S412)。ここで、iは、1≦i≦nを満たし、例えば左側の区間から順に1、2、3、…、nとカウントされる。
そして、次式(1)で表される付加データbe,iを算出する(S414)。なお、付加データbe,iの添え字「e」は、「even」すなわち偶数ビット(=二段の合成ビット列の内、上段のビット列)を表している。式中、「〜」はnot演算子(反転)であり、「<<」は左方向への論理シフト演算子であり、「floor」は切り捨てを意味する関数である。
e,i=〜{(2n/4−1)<<floor(i/2−n/4)} …(1)
ここで、付加データbe,iを算出する処理は、第1実施例で説明したビット長nのマスクデータ38から、横方向の位置がiで表されるブロックに格納されたビット列の上段部分を取り出す処理と等価である。第1実施例では全体のマスクデータ38を生成した後に該当箇所のビット列を取り出すものとして説明したが、第2実施例では該当箇所のビット列を直接的に算出することができる。
付加データbe,iが算出されると、連結処理部44が、付加データbe,iをビット列sに連結して新たなビット列sとしてメモリ装置18等に格納する(S416)。そして、再度S408の判定を行う。
マスター制御部40は、S408においてビット長nが2以上であると判定した場合は、その時点でメモリ装置18等に格納されているビット列sを出力して(S418)本フローを終了する。
次に、縦方向の座標y又はwをビット列に変換する処理について説明する。図22は、座標コード化装置2により実行される、座標y又はwをビット列に変換する処理の流れを示すサブフローである。図18のS202、並びに図20のS302では、本図で示す処理に準じた処理が行われる。ここでは、座標yをビット列sに変換する処理についてのみ説明するが、座標wをビット列sに変換する処理についても同様である。
まず、マスター制御部40は、合成ビット列sの初期ビット長nを2と定義し(S500)、座標yが区間[L*,M)に含まれるかどうかを判定する(S502)。ここで、Mは、L*とH*の中間点{(L*+H*)/2}である。なお、L*やH*は、領域ApやAsを切り出す前の合成ビット列マップ36の外縁を示している。
座標yが区間[L*,M)に含まれる場合は、ビット列sの初期値を0とする(S504)。一方、座標yが区間[M,H*]に含まれる場合は、ビット列sの初期値を1とする(S506)。
次に、マスター制御部40は、ビット長nが2以上であるか否かを判定する(S508)。座標精度Nは、(H−L)/2以上離れている2地点を区別することを保証するという意味を有する指標値である。また、座標精度Nは、S510〜S516のループ処理を何回行うかを指定する値でもある。
ビット長nが2未満である場合は、付加データ生成部42が、ビット長nを2倍し(S510)、区間[L*,H*]をn等分した区間群のうち、座標yが属する区間の番号をiと定義する(S512)。ここで、iは、1≦i≦nを満たし、例えば下側の区間から順に1、2、3、…、nとカウントされる。
そして、次式(2)で表される付加データbo,iを算出する(S514)。なお、付加データbo,iの添え字「o」は、「odd」すなわち奇数ビット(=二段の合成ビット列の内、下段のビット列)を表している。式中、「〜」はnot演算子(反転)であり、「<<」は論理シフト演算子である。
o,i=〜{(2n/4−1)<<floor(j/2−n/4)} …(2)
ここで、付加データbo,iを算出する処理は、第1実施例で説明したビット長nのマスクデータ38から、縦方向の位置がjで表されるブロックに格納されたビット列の下段部分を取り出す処理と等価である。第1実施例では全体のマスクデータ38を生成した後に該当箇所のビット列を取り出す処理として説明したが、第2実施例では該当箇所のビット列を直接的に算出することができる。
付加データbo,iが算出されると、連結処理部44が、付加データbo,iをビット列sに連結して新たなビット列sとしてメモリ装置18等に格納する(S516)。
マスター制御部40は、S508においてビット長nが2以上であると判定した場合は、その時点でメモリ装置18等に格納されているビット列sを出力して(S518)本フローを終了する。
ここで、付加データ生成部42により算出される付加データの性質について補足する。付加データは、第1実施例におけるマスクデータ38と同じ性質を有しており(図13、16を参照)、マスクデータ38は、上式(1)、(2)を用いて生成することができる。換言すると、付加データ生成部42が付加データを生成する処理は、マスクデータ38を生成した上で所望のブロックからマスクデータを取り出す処理と同じ意義を有している。
付加データbe,i、bo,iのビット長は、それぞれビット長nの1/4となり、これらを合成して二段とした合成付加データのビット長は、ビット長nの1/2となる。
また、例えば、付加データbe,i(上段)は、水平方向に関して中央の2列分のブロックはすべてのビットが0となり、中央より右のブロックでは、一ブロックおきに、下位ビットから順に0から1に置き換えられ、右端ですべてのビットが1となる。中央より左のブロックでは、一ブロックおきに、上位ビットから0から1に置き換えられ、右端ですべてのビットが1となる。
また、付加データbo,i(下段)は、垂直方向に関して中央の2列分のブロックはすべてのビットが0となり、中央より下のブロックでは、一ブロックおきに、下位ビットから順に0から1に置き換えられ、下端ですべてのビットが1となる。中央より上のブロックでは、一ブロックおきに、上位ビットから0から1に置き換えられ、上端ですべてのビットが1となる。
なお、前述したように、付加データにおける0と1の関係は、逆でも構わないし、必ずしも中央付近のブロックに0又は1を偏在させる必要は無い。
また、連結処理部44がデータを連結する処理は、拡大後のプレイス・ホルダグリッド37にマスクデータ38を代入する処理と同じ意義を有している。一見すると、第2実施例ではプレイス・ホルダグリッド37の拡大処理に相当する処理は行っていないように見えるが、実際には、付加データの算出時に前回のビット列と比較して精度を2倍にしている関係で、拡大処理と代入処理がまとめて行われている。
これらより、付加データが変化しないブロック間では連結対象のビット列s又はsのビット値が変化し、付加データが変化するブロック間では連結対象のビット列s又はsが変化しないという関係が得られる。これらの結果、1ブロック毎にビット値が変化する傾向で合成ビット列sが決定されることになる。このような関係については、第1実施例で示した図14を参照することにより、理解することができる。図14における(a)で示すブロック間では、マスクデータ38#4の内容は変化しないが、プレイス・ホルダグリッド37#4!の内容は変化する。逆に、図14における(b)で示すブロック間では、マスクデータ38#4の内容は変化するが、プレイス・ホルダグリッド37#4!の内容は変化しない。マスクデータ38と同様の性質を有する付加データは、プレイス・ホルダグリッド37と同様の性質を有する連結対象のビット列との間で、同様の関係が成立している。従って、1ブロック毎にビット値が変化する傾向で合成ビット列sを決定することができる。
こうしてビット列s、sが生成されると、これを合成して合成ビット列sを得ることになる(図18のS204、並びに図20のS304)。このように得られた合成ビット列sをそのままコードとして出力してもよいし、変換処理部46がbase32等を用いてテキストデータに変換して出力してもよい。いずれの場合も、唯一性と距離保存性を満たすコードを出力することができる。従って、二点の座標データに基づき出力されたコードを利用して、第1実施例と同様に距離を簡易に算出することができる。
なお、合成ビット列sをアルゴリズムによって算出することを説明したが、予め合成ビット列マップ36を作成又はインストールして補助記憶装置16等に格納しておき、これを入力された座標データに適用して合成ビット列sを出力してもよい。
更に付言すると、第1実施例で説明した合成ビット列マップ36を生成する処理は、幾何的な領域分割に限らず、第2実施例に係るフローを領域内に存在し得る全ての座標データについて網羅的に行い、結果を格納することによっても行うことができる。
前述したように、公知のジオ・ハッシュ等のように距離保存性が無いマップを用いた場合、二点のコードないし合成ビット列を与えられたとしても、即座にブロック距離を導出できない。この結果、コードないし合成ビット列から座標を逆算して距離を演算する必要が生じ、処理負担増や処理遅延を招くおそれがある。
これに対し、座標コード化装置2では、唯一性と距離保存性を満たす合成ビット列を生成するため、これを用いて、簡易な処理によって二点間の距離を算出することができる。
[動作例]
以下、本実施例の座標コード化装置2の動作例を示す。図23は、合成ビット列sが決定される様子を、合成ビット列マップ36に則して模式的に示す図である。本図は、対象領域が平面であるものとする、また、領域Apの左上隅のブロックの座標を(0,0)、右下隅の座標を(500,500)とする(単位は[m]等、任意に決定される。このとき、座標データ(350,150)に対応する合成ビット列sを、座標精度N=3で取得する。ここで、合成ビット列マップ36の唯一性を満たす領域は、x:[−300,500]、y:[−300,500]で表されるため、L*=−300、H*=500、L*=−300、H*=500である。
まず、x=350から図21のフローに基づき偶数ビット列sを生成する。S400において合成ビット列の初期ビット長nが2と定義され、座標x=350が区間[100,500]に含まれるため、ビット列sの初期値が1となる(S402〜S406)。
S408においては、n=2<2であるためS410に進む。S410においてnが2倍されて4となり、S412においてx=350は区間[−300,500]を4等分した区間群の左から4番目に当たるため、i=4と定義される。この結果、S414において付加データbe,4は、次式(3)で示すように、1となる(1を1ビット論理シフトすると0、これの反転は1である)。
e,4=〜{(24/4−1)<<floor(4/2−4/4)}
=〜(1<<1)=1 …(3)
そして、S416において、付加データbe,4=1をビット列s=1に連結して新たなビット列s=11が生成され、S408に戻る。
S408においては、n=4<2であるためS410に進む。S410においてnが2倍されて8となり、S412においてx=350は区間[−300,500]を8等分した区間群の左から7番目に当たるため、i=7と定義される。この結果、S414において付加データbe,7は、次式(4)で示すように、01となる(3すなわち11を1ビット論理シフトすると10、これの反転は01である)。
e,7=〜{(28/4−1)<<floor(7/2−8/4)}
=〜(3<<1)=01 …(4)
そして、S416において、付加データbe,7=01をビット列s=11に連結して新たなビット列s=1101が生成され、S408に戻る。
S408においては、n=8≧2であるため、S418に進み、ビット列s=1101が出力される。
次に、y=150から図22のフローに基づき奇数ビット列sを生成する。S500において合成ビット列の初期ビット長nが2と定義され、座標y=150が区間[100,500]に含まれるため、ビット列sの初期値が1となる(S502〜S506)。
S508においては、n=2<2であるためS510に進む。S510においてnが2倍されて4となり、S512においてy=150は区間[−300,500]を4等分した区間群の上から3番目に当たるため、j=3と定義される。この結果、S514において付加データbo,3は、次式(5)で示すように、0となる。
o,3=〜{(24/4−1)<<floor(3/2−4/4)}
=〜(1<<0)=0 …(5)
そして、S516において、付加データbo,3=0をビット列s=1に連結して新たなビット列s=10が生成され、S508に戻る。
S508においては、n=4<2であるためS510に進む。S510においてnが2倍されて8となり、S512においてy=150は区間[−300,500]を8等分した区間群の上から5番目に当たるため、j=5と定義される。この結果、S514において付加データbo,5は、次式(6)で示すように、00となる。
o,5=〜{(28/4−1)<<floor(5/2−8/4)}
=〜(3<<0)=00 …(6)
そして、S516において、付加データbo,5=00をビット列s=10に連結して新たなビット列s=1000が生成され、S508に戻る。
S508においては、n=8≧2であるため、S518に進み、ビット列s=1000が出力される。
この結果、ビット列sとビット列sから交互に1ビットずつ上位ビットから読み出した合成ビット列s=11100010(二段で表すとすれば、上段1101、下段1000)が座標データ(350,150)について得られる。
また、同様の処理を座標データ(50,50)に対して行うと、合成ビット列s=00000000(二段で表すとすれば、上段0000、下段0000)となる。また、座標データ(250,250)に対して行うと、合成ビット列s=11000011(二段で表すとすれば、上段1001、下段1001)となる。
以下、座標データ(350,150)を座標A、座標データ(50,50)を座標B、座標データ(250,250)を座標Cとする。これらについて得られた合成ビット列sは、座標精度N=3であるため、合成ビット列マップ36の外縁{500−(−300)}を2で除算した結果の「100」以上離れた点を区別可能な精度を有する。
座標Aと座標Bの間のブロック距離BDは、図23を参照すると4ブロック(1ブロックの距離に相当する100を乗算すれば400)となる。ブロック距離BDは、座標同士の差分の絶対和としても算出できる(|350−50|+|150−50|=400;ブロック数でいうと4)。一方、座標Aに対応する合成ビット列s=11100010、座標Bに対応する合成ビット列s=00000000であるため、ハミング距離(反転ビット数)は4である。
また、座標Aと座標Cの間のブロック距離BDは、図23を参照すると2ブロック(1ブロックの距離に相当する100を乗算すれば200)となる。また、座標Aに対応する合成ビット列s=11100010、座標Cに対応する合成ビット列s=11000011であるため、ハミング距離(反転ビット数)は2である。
このように、本実施例の座標コード化装置2の処理結果において、ブロック距離BDとハミング距離HDは一致する(又は保存される)ことが確かめられた。
[まとめ]
以上説明した本実施例の座標コード化装置2によれば、入力された座標データを、唯一性と距離保存性を満たすコードに変換して出力することができる。この結果、コードから距離を導出する処理等を迅速且つ簡易に行わせることができる。
<変形等>
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
例えば、ハードウエアの面において、なお、距離算出装置1や座標コード化装置2は、入力から出力まで独立して動作するものに限らず、図24に示すようにネットワーク60に接続されたサーバ装置であってもよい。図24は、第1実施例に係る距離算出装置1や第2実施例に係る座標コード化装置の適用例である。この場合、クライアントコンピュータ50の入力装置50_1に入力された座標データが座標コード化装置2に送信され、座標コード化装置2がクライアントコンピュータ50にコードを返す処理を行う。また、あるいはクライアントコンピュータ50の入力装置50_1に入力されたコードが距離算出装置1に送信され、距離算出装置1がクライアントコンピュータ50に距離を返す処理を行う。
以上の説明に関し、さらに以下の項を開示する。
(付記1)
処理対象領域を所定ビット長に応じたブロックに分割認識し、入力された座標データが示す位置が基準位置から離れるのに応じて基準データと比較したビット値の相違数が徐々に増加する傾向で、前記座標データに対応する所定ビット長の付加データを生成する付加データ生成手段と、
前記生成された付加データを、記憶手段に格納された所定ビット長のデータに連結して前記所定ビット長の2倍のビット長のデータを生成し、該生成したデータを前記記憶手段に格納する連結処理手段と、
前記連結処理手段により前記記憶手段に格納されたデータのビット長を前記所定ビット長に指定して前記付加データ生成手段に付加データを生成させ、次いで前記連結処理手段にデータを連結して記憶手段に格納させることを繰り返し行う制御手段と、
を備える座標コード化装置。
(付記2)
付記1に記載の座標コード化装置であって、
前記付加データ生成手段は、前記ブロックに関して一つおきにビット値の相違数が増加するように、前記付加データを生成する手段である、
座標コード化装置。
(付記3)
付記2に記載の座標コード化装置であって、
前記付加データ生成手段は、次式に基づいて付加データを生成する手段であり、
付加データ=〜{(2n/4−1)<<floor(k/2−n/4)}、
式中、nは前記所定ビット長であり、〜はnot演算子(反転)であり、<<は左方向への論理シフト演算子であり、floorは切り捨てを意味する関数であり、kは処理対象領域を所定ビット長に応じたブロックに分割認識した際に、入力された座標データがどのブロックに属するかを示す値である、
座標コード化装置。
(付記4)
処理対象領域を所定ビット長に応じたブロックに分割認識し、入力された座標データが示す位置が基準位置から離れるのに応じて基準データと比較したビット値の相違数が徐々に増加する傾向で、前記座標データに対応する所定ビット長の付加データを生成する処理と、
前記生成された付加データを、記憶手段に格納された所定ビット長のデータに連結して前記所定ビット長の2倍のビット長のデータを生成し、該生成したデータを前記記憶手段に格納する処理と、
前記連結処理手段により前記記憶手段に格納されたデータのビット長を前記所定ビット長に指定して前記付加データ生成手段に付加データを生成させ、次いで前記連結処理手段にデータを連結して記憶手段に格納させることを繰り返し行う処理と、
をコンピュータが実行する座標コード化方法。
(付記5)
処理対象領域を所定ビット長に応じたブロックに分割認識し、入力された座標データが示す位置が基準位置から離れるのに応じて基準データと比較したビット値の相違数が徐々に増加する傾向で、前記座標データに対応する所定ビット長の付加データを生成する処理と、
前記生成された付加データを、記憶手段に格納された所定ビット長のデータに連結して前記所定ビット長の2倍のビット長のデータを生成し、該生成したデータを前記記憶手段に格納する処理と、
前記連結処理手段により前記記憶手段に格納されたデータのビット長を前記所定ビット長に指定して前記付加データ生成手段に付加データを生成させ、次いで前記連結処理手段にデータを連結して記憶手段に格納させることを繰り返し行う処理と、
をコンピュータに実行させるプログラム。
(付記6)
地理的な座標と距離保存性を満たすコードとが対応付けられたマップデータを格納した記憶手段と、
入力された複数の座標データを検索キーとして前記マップデータを検索し、該複数の座標データに対応する複数のコードを取得するデータ検索手段と、
該データ検索手段により取得された複数のコードを比較して前記複数の座標データ間の距離を算出する距離算出手段と、
を備える距離算出装置。
(付記7)
入力された複数の座標データを検索キーとして、地理的な座標と距離保存性を満たすコードとが対応付けられたマップデータを検索し、該複数の座標データに対応する複数のコードを取得する処理と、
該取得された複数のコードを比較して前記複数の座標データ間の距離を算出する処理と、
をコンピュータが実行する距離算出方法。
(付記8)
入力された複数の座標データを検索キーとして、地理的な座標と距離保存性を満たすコードとが対応付けられたマップデータを検索し、該複数の座標データに対応する複数のコードを取得する処理と、
該取得された複数のコードを比較して前記複数の座標データ間の距離を算出する処理と、
をコンピュータに実行させるプログラム。
(付記9)
入力されたマップデータに格納されたデータに、それぞれブランクデータを連結した第1のマップデータを生成し、該第1のマップデータを連結したデータを縦横2倍に拡張する第1のマップデータ生成手段と、
基準位置から離れるのに応じて基準データと比較したビット値の相違数が徐々に増加する傾向のデータが格納された第2のマップデータを生成する第2のマップデータ生成手段と、を備え、
前記第1のマップデータ生成手段により拡張された第1のマップデータのブランクデータ部分に前記第2のマップデータに格納されたデータを代入して距離保存性を満たすマップデータを生成することを繰り返し行うことを特徴とする、
コードマップ作成装置。
(付記10)
入力されたマップデータに格納されたデータに、それぞれブランクデータを連結した第1のマップデータを生成し、該第1のマップデータを連結したデータを縦横2倍に拡張する処理と、
基準位置から離れるのに応じて基準データと比較したビット値の相違数が徐々に増加する傾向のデータが格納された第2のマップデータを生成する処理と、
前記第1のマップデータ生成手段により拡張された第1のマップデータのブランクデータ部分に前記第2のマップデータに格納されたデータを代入して距離保存性を満たすマップデータを生成することを繰り返し行う処理と、
をコンピュータが実行するコードマップ作成方法。
(付記11)
入力されたマップデータに格納されたデータに、それぞれブランクデータを連結した第1のマップデータを生成し、該第1のマップデータを連結したデータを縦横2倍に拡張する処理と、
基準位置から離れるのに応じて基準データと比較したビット値の相違数が徐々に増加する傾向のデータが格納された第2のマップデータを生成する処理と、
前記第1のマップデータ生成手段により拡張された第1のマップデータのブランクデータ部分に前記第2のマップデータに格納されたデータを代入して距離保存性を満たすマップデータを生成することを繰り返し行う処理と、
をコンピュータに実行させるプログラム。
(付記12)
距離保存性を満たすマップデータが格納された記憶手段と、
入力された座標データを検索キーとして前記マップデータを検索し、該座標データに対応するコードを取得して出力するデータ検索手段と、
を備える座標コード化装置。
(付記13)
地理的な座標と距離保存性を満たす複数のコードが入力されると、該入力された複数のコードを比較して距離を算出する距離算出装置。
1 距離算出装置
2 座標コード化装置
30 合成ビット列マップ生成部
32 データ検索処理部
34 距離算出部34
36 合成ビット列マップ
37 プレイス・ホルダグリッド
38 マスクデータ
40 マスター制御部
42 付加データ生成部
44 連結処理部
46 変換処理部

Claims (8)

  1. 処理対象領域を所定ビット長に応じたブロックに分割認識し、入力された座標データが示す位置が基準位置から離れるのに応じて基準データと比較したビット値の相違数が徐々に増加する傾向で、前記座標データに対応する所定ビット長の付加データを生成する付加データ生成手段と、
    前記生成された付加データを、記憶手段に格納された所定ビット長のデータに連結して前記所定ビット長の2倍のビット長のデータを生成し、該生成したデータを前記記憶手段に格納する連結処理手段と、
    前記連結処理手段により前記記憶手段に格納されたデータのビット長を前記所定ビット長に指定して前記付加データ生成手段に付加データを生成させ、次いで前記連結処理手段にデータを連結して記憶手段に格納させることを繰り返し行う制御手段と、
    を備える座標コード化装置。
  2. 請求項1に記載の座標コード化装置であって、
    前記付加データ生成手段は、前記ブロックに関して一つおきにビット値の相違数が増加するように、前記付加データを生成する手段である、
    座標コード化装置。
  3. 請求項2に記載の座標コード化装置であって、
    前記付加データ生成手段は、次式に基づいて付加データを生成する手段であり、
    付加データ=〜{(2n/4−1)<<floor(k/2−n/4)}、
    式中、nは前記所定ビット長であり、〜はnot演算子(反転)であり、<<は左方向への論理シフト演算子であり、floorは切り捨てを意味する関数であり、kは処理対象領域を所定ビット長に応じたブロックに分割認識した際に、入力された座標データがどのブロックに属するかを示す値である、
    座標コード化装置。
  4. 処理対象領域を所定ビット長に応じたブロックに分割認識し、入力された座標データが示す位置が基準位置から離れるのに応じて基準データと比較したビット値の相違数が徐々に増加する傾向で、前記座標データに対応する所定ビット長の付加データを生成する付加データ生成処理と、
    前記生成された付加データを、記憶手段に格納された所定ビット長のデータに連結して前記所定ビット長の2倍のビット長のデータを生成し、該生成したデータを前記記憶手段に格納する連結処理と、
    前記連結処理により前記記憶手段に格納されたデータのビット長を前記所定ビット長に指定して前記付加データ生成処理に付加データを生成させ、次いで前記連結処理にデータを連結して記憶手段に格納させることを繰り返し行う制御処理と、
    をコンピュータが実行する座標コード化方法。
  5. 処理対象領域を所定ビット長に応じたブロックに分割認識し、入力された座標データが示す位置が基準位置から離れるのに応じて基準データと比較したビット値の相違数が徐々に増加する傾向で、前記座標データに対応する所定ビット長の付加データを生成する付加データ生成処理と、
    前記生成された付加データを、記憶手段に格納された所定ビット長のデータに連結して前記所定ビット長の2倍のビット長のデータを生成し、該生成したデータを前記記憶手段に格納する連結処理と、
    前記連結処理により前記記憶手段に格納されたデータのビット長を前記所定ビット長に指定して前記付加データ生成処理に付加データを生成させ、次いで前記連結処理にデータを連結して記憶手段に格納させることを繰り返し行う制御処理と、
    をコンピュータに実行させるプログラム。
  6. 地理的な座標と距離保存性を満たすコードとが対応付けられ、請求項1乃至3のいずれか1項記載の座標コード化装置で生成されたマップデータを格納したマップデータ記憶手段と、
    入力された複数の座標データを検索キーとして前記マップデータを検索し、該複数の座標データに対応する複数のコードを取得するデータ検索手段と、
    該データ検索手段により取得された複数のコードを比較して前記複数の座標データ間の距離を算出する距離算出手段と、
    を備える距離算出装置。
  7. 入力された複数の座標データを検索キーとして、地理的な座標と距離保存性を満たすコードとが対応付けられ、請求項4記載の座標コード化方法で生成されたマップデータを検索し、該複数の座標データに対応する複数のコードを取得するコード取得処理と、
    該取得された複数のコードを比較して前記複数の座標データ間の距離を算出する距離算出処理と、
    をコンピュータが実行する距離算出方法。
  8. 入力された複数の座標データを検索キーとして、地理的な座標と距離保存性を満たすコードとが対応付けられ、請求項5記載のプログラムで生成されたマップデータを検索し、該複数の座標データに対応する複数のコードを取得するコード取得処理と、
    該取得された複数のコードを比較して前記複数の座標データ間の距離を算出する距離算出処理と、
    をコンピュータに実行させるプログラム。
JP2011151172A 2011-07-07 2011-07-07 座標コード化装置、座標コード化方法、距離算出装置、距離算出方法、プログラム Expired - Fee Related JP5712825B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011151172A JP5712825B2 (ja) 2011-07-07 2011-07-07 座標コード化装置、座標コード化方法、距離算出装置、距離算出方法、プログラム
US13/541,376 US9175965B2 (en) 2011-07-07 2012-07-03 Apparatus and method for coordinate coding, and method and apparatus for distance calculation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011151172A JP5712825B2 (ja) 2011-07-07 2011-07-07 座標コード化装置、座標コード化方法、距離算出装置、距離算出方法、プログラム

Publications (2)

Publication Number Publication Date
JP2013020309A JP2013020309A (ja) 2013-01-31
JP5712825B2 true JP5712825B2 (ja) 2015-05-07

Family

ID=47439309

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011151172A Expired - Fee Related JP5712825B2 (ja) 2011-07-07 2011-07-07 座標コード化装置、座標コード化方法、距離算出装置、距離算出方法、プログラム

Country Status (2)

Country Link
US (1) US9175965B2 (ja)
JP (1) JP5712825B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5712825B2 (ja) * 2011-07-07 2015-05-07 富士通株式会社 座標コード化装置、座標コード化方法、距離算出装置、距離算出方法、プログラム
US9719790B2 (en) * 2013-03-15 2017-08-01 International Business Machines Corporation Mapping uncertain geometries to graticules
US9602129B2 (en) * 2013-03-15 2017-03-21 International Business Machines Corporation Compactly storing geodetic points
FR3011888B1 (fr) * 2013-10-11 2018-04-20 Snecma Piece de turbomachine a surface non-axisymetrique
CN106104414B (zh) * 2013-11-13 2019-05-21 Twc专利信托公司 存储设备以及存储和提供数据的方法
US11586680B2 (en) 2014-03-31 2023-02-21 International Business Machines Corporation Fast and accurate geomapping
CN106156195B (zh) 2015-04-20 2019-06-18 阿里巴巴集团控股有限公司 基于位置信息的搜索方法及其系统
US10346131B2 (en) * 2016-03-25 2019-07-09 International Business Machines Corporation Spatial predicates evaluation on geohash-encoded geographical regions
US10915339B2 (en) * 2018-03-26 2021-02-09 Bank Of America Corporation Computer architecture for emulating a correlithm object processing system that places portions of a mapping table in a distributed node network
US10915338B2 (en) * 2018-03-26 2021-02-09 Bank Of America Corporation Computer architecture for emulating a correlithm object processing system that places portions of correlithm objects in a distributed node network
US10915340B2 (en) * 2018-03-26 2021-02-09 Bank Of America Corporation Computer architecture for emulating a correlithm object processing system that places multiple correlithm objects in a distributed node network
US10915341B2 (en) * 2018-03-28 2021-02-09 Bank Of America Corporation Computer architecture for processing correlithm objects using a selective context input

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3415270B2 (ja) * 1994-06-03 2003-06-09 ソニー株式会社 画像信号符号化方法及び復号方法
JPH08265160A (ja) * 1995-03-23 1996-10-11 Toshiba Corp 伝送方式及び送信受信装置
DE10105897A1 (de) * 2001-02-09 2002-08-14 Bosch Gmbh Robert Verfahren zum Austauschen von Navigationsinformationen
JP2003203243A (ja) * 2001-10-26 2003-07-18 Matsushita Electric Ind Co Ltd 地図データの蓄積及び送信方法とそれを実施する装置
US7302343B2 (en) 2003-07-31 2007-11-27 Microsoft Corporation Compact text encoding of latitude/longitude coordinates
JP3885157B2 (ja) 2005-08-02 2007-02-21 直生 上田 地理的座標変換方法、装置、プログラム、ならびに地理的座標コードを記した情報担持体および地図
JP2007104543A (ja) * 2005-10-07 2007-04-19 Matsushita Electric Ind Co Ltd 緯度経度データ列の圧縮装置及び圧縮方法
US8631053B2 (en) * 2009-08-31 2014-01-14 Mitsubishi Electric Research Laboratories, Inc. Method for securely determining Manhattan distances
US9392301B2 (en) * 2011-07-01 2016-07-12 Qualcomm Incorporated Context adaptive entropy coding for non-square blocks in video coding
JP5712825B2 (ja) * 2011-07-07 2015-05-07 富士通株式会社 座標コード化装置、座標コード化方法、距離算出装置、距離算出方法、プログラム
US9014508B2 (en) * 2012-04-24 2015-04-21 Stmicroelectronics S.R.L. Multiplierless coprocessor for difference of Gaussian (DoG) calculation

Also Published As

Publication number Publication date
US20130013661A1 (en) 2013-01-10
JP2013020309A (ja) 2013-01-31
US9175965B2 (en) 2015-11-03

Similar Documents

Publication Publication Date Title
JP5712825B2 (ja) 座標コード化装置、座標コード化方法、距離算出装置、距離算出方法、プログラム
JP6116185B2 (ja) 圧縮ナビゲーション地図データ
CN103098094B (zh) 用于基于图块的3d计算机图形系统的可随机访问的无损参数数据压缩
KR101797325B1 (ko) 건물 객체에 대한 다축척 모델 기반의 지도 처리 방법
CN105580003A (zh) 数据清理和标准化以及地理编码方法
JP2008191075A (ja) デフォルメ地図の位置特定方法、デフォルメ地図の位置特定システム、計測地図の位置特定方法、及び計測地図の位置特定システム
JP5849146B1 (ja) 住所/緯度経度変換装置およびこれを用いた地理情報システム
US20070216676A1 (en) Point-based rendering apparatus, method and medium
JP6227658B2 (ja) 地図情報処理装置、データ生成方法
JP2010218479A (ja) 画像検索装置
JP4837634B2 (ja) 3次元アドレスマッピングを用いたメモリアクセス方法
US8325188B1 (en) Method and system for implementing a waveform viewer
CN103150749B (zh) 用于多层体积光线投射的方法、系统和装置
JP5409402B2 (ja) 地域情報検索サーバ及び処理方法
CN116863089A (zh) 地图网格划分方法及基于该方法的地图要素显示方法
Kim et al. Preparing and evaluating geospatial data models using X3D encodings for web 3D geovisualization services
JP2009055308A (ja) ベクトルデータ伸張装置、及びベクトルデータ圧縮装置
US10876852B2 (en) Information processing device, information processing system, navigation system, information processing method, and program
JP2000035843A (ja) ハイパーテキスト表示装置及びシステム
JP4968275B2 (ja) 地図データ編集装置及び地図データ編集装置用サーバ
JP2007264952A (ja) 地盤解析用メッシュ生成方法及び地盤解析用メッシュ生成プログラム
CN105117733A (zh) 一种确定聚类样本差异的方法及装置
JP5007430B2 (ja) 交流成分予測システムおよび交流成分予測プログラム
JP2021093673A (ja) 世帯代表点算出装置、電界強度算出装置及びプログラム
JP2015094658A (ja) 地図情報および地図情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150113

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150223

R150 Certificate of patent or registration of utility model

Ref document number: 5712825

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees