説明

地域情報検索サーバ及び目標メッシュに隣接するメッシュを求める方法

【課題】多階層に階層化されたメッシュ構造において、隣接するメッシュを抽出することのできる地域情報検索サーバ及び目標メッシュに隣接するメッシュを求める方法を提供する。
【解決手段】地域情報検索サーバにおいて、全体地図を複数のメッシュに分割して、縮尺に応じて当該メッシュのサイズが異なる複数の階層毎の地図データと各階層のn(nは1以上の整数)次メッシュを一意に特定するメッシュコードを記録する地図記録部と、地図記録部から所定の階層のメッシュのメッシュコードを取得するメッシュコード取得部50と、メッシュコード取得部50が取得したメッシュコードを構成するパックコードに変換するパックコード変換部52と、パックコードをメッシュ座標に変換するメッシュ座標変換部54と、メッシュ座標をメッシュデータ記録部に記録するメッシュ座標格納部56とを具備して構成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、地域情報検索サーバ及び目標メッシュに隣接するメッシュを求める方法に関し、特に、目標メッシュに隣接するメッシュのコード(メッシュ座標)を、目標メッシュのコード(メッシュ座標)に目標メッシュから隣接メッシュまでのメッシュの個数を加減算することで算出し、隣接するメッシュを抽出することのできる地域情報検索サーバ及び目標メッシュに隣接するメッシュを求める方法に関する。
【背景技術】
【0002】
インターネットで提供される地図検索のサービスでは、ラスタ形式のデータをメッシュ状に分割して、さらに、各メッシュを階層的に分割して管理することが一般に行われている。メッシュ単位で地図を管理して、指定された位置が含まれるメッシュと隣接するメッシュを管理することで対応する地図や施設情報等の地域情報を取得することが可能となる。
【0003】
先行技術文献1には、10×10のメッシュに地図データを分割し、各メッシュに4桁のメッシュ番号を付与して、前2桁はX軸方向(東西方向)の位置を表し、後ろ2桁はY軸方向(南北方向)の位置を表し、前2桁の数値は、X軸の正方向にいくほど大きくなり、後ろ2桁の数値はY軸の正方向にいくほど大きくなっており、このメッシュ番号を用いて隣接するメッシュを抽出する方法が記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−199921号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、この10進数の4桁のメッシュ番号を用いる先行技術文献1では、10×10のメッシュに固定的に分割しており、1次メッシュの場合には対応できるが、各1次メッシュを2次メッシュに、各2次メッシュを3次メッシュ・・・と、通常、地図を複数メッシュ分割して記録する場合、複数の次数に階層化して地図データを記録するが、それには対応することができないという問題がある。
【0006】
本発明は、上記問題点に鑑みてなされたものであり、多階層に階層化されたメッシュ構造において、隣接するメッシュを抽出することのできる地域情報検索サーバ及び目標メッシュに隣接するメッシュを求める方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
請求項1に記載の発明によれば、地域情報検索サーバであって、全体地図を複数のメッシュに分割して、縮尺に応じて当該メッシュのサイズが異なる複数の階層毎の地図データと、各階層のn(nは1以上の整数)次メッシュに付与され、(i−1)(iは2次以上の整数)次メッシュの緯度方向及び経度方向について2の冪乗個のi(iは2以上の整数)次メッシュに階層的に分割され、1次〜n次メッシュに付与される10進数のメッシュ番号が次数の昇順に上位桁に並べて構成され、該n次メッシュを一意に特定するメッシュコードを記録する地図記録部と、前記地図記録部から所定の階層のメッシュの前記メッシュコードを取得するメッシュコード取得部と、前記メッシュコード取得部が取得した前記メッシュコードを構成する各次数の前記メッシュ番号を次数ごとに固定長のビット長の2進数に変換し、該各次数の2進数を次数の昇順に上位ビット側に連結して、パックコードに変換するパックコード変換部と、前記パックコードを緯度に係る緯度コードと経度に係る経度コードに分割し、前記緯度コード及び前記経度コードから成るメッシュ座標に変換するメッシュ座標変換部と、前記メッシュ座標をメッシュデータ記録部に記録するメッシュ座標格納部とを具備したことを特徴とする地域情報検索サーバが提供される。
【0008】
請求項2記載の発明によれば、地域情報検索サーバであって、全体地図を複数のメッシュに分割して、縮尺に応じて当該メッシュのサイズが異なる複数の階層の(i−1)(iは2次以上の整数)次メッシュの緯度方向及び経度方向について2の冪乗個のi(iは2以上の整数)次メッシュに分割される階層化されたメッシュ構造において、各POIを一意に特定するPOI識別子を含みPOI情報を記憶するPOI情報記録部と、前記POI情報記録部を検索して、各POIが位置する緯度経度及び前記POI識別子を取得する緯度経度取得部と、前記緯度経度取得部が取得した緯度に基づく値に第1所定値を乗算した第1値に、前記2の冪乗個のi(i=2〜n,nは2以上の整数)次メッシュの緯度方向の個数を2次〜n次まで乗算した第2値を乗算した10進整数値を2進数に変換した緯度コードを算出する緯度コード算出部と、前記緯度経度取得部が取得した経度から第2所定値減算した第3値に、前記2の冪乗個のi(i=2〜n,nは2以上の整数)次メッシュの経度方向の個数を2次〜n次まで乗算した第2値を乗算した10進整数値を2進数に変換した経度コードを算出する経度コード算出部と、前記緯度コードの各i(i=1〜n,nは2以上の整数)次メッシュの前記緯度方向の個数に対応するビット長の該当の2進数値及び前記経度コードの各i(i=1〜n,nは2以上の整数)メッシュの前記経度方向の個数に対応するビット長の該当の2進数値のいずれか一方を上位ビット側にし、次数の昇順に上位ビット側に結合して、パックコードに変換するパックコード変換部と、前記POI識別子及び前記パックコードをPOI検索テーブルに格納するパックコード格納部と、を具備したことを特徴とする地域情報検索サーバが提供される。
【0009】
請求項3記載の発明によれば、請求項1記載の発明において、位置情報に基づいて、前記メッシュデータ記録部を検索して、該位置情報が示す地点が含まれる目標メッシュの前記メッシュ座標を取得するメッシュ座標取得部と、前記メッシュ座標に対応する目標メッシュから隣接するメッシュまでの緯度方向のメッシュ数、及び経度方向のメッシュ数を緯度方向及び経度方向に応じて加減算して隣接するメッシュのメッシュ座標を算出する隣接メッシュ座標算出部を更に具備したことを特徴とする地域情報検索サーバが提供される。
【0010】
請求項4記載の発明によれば、請求項2記載の発明において、第2緯度経度を取得する第2緯度経度取得部と、前記第2緯度経度取得部が取得した第2緯度に基づく値に前記第1所定値を乗算した第1値に、前記第2値を乗算した10進整数値を2進数に変換した第2緯度コードを算出する第2緯度コード算出部と、前記第2緯度経度取得部が取得した第2経度から前記第2所定値減算した第3値に、前記第4値を乗算した10進整数値を2進数に変換した第2経度コードを算出する第2経度コード算出部と、前記第2緯度コード及び前記第2経度コードから成るメッシュ座標に、前記第2緯度経度の地点が含まれる前記メッシュ座標に対応する目標メッシュから隣接するメッシュまでの緯度方向のメッシュ数、及び経度方向のメッシュ数を緯度方向及び経度方向に応じて加減算して隣接するメッシュのメッシュ座標を算出する隣接メッシュ座標算出部を更に具備したことを特徴とする地域情報検索サーバが提供される。
【0011】
請求項5記載の発明によれば、目標メッシュに隣接するメッシュを求める方法であって、全体地図を複数のメッシュに分割して、縮尺に応じて当該メッシュのサイズが異なる複数の階層毎の地図データと、各階層のn(nは1以上の整数)次メッシュに付与され、(i−1)(iは2次以上の整数)次メッシュの緯度方向及び経度方向について2の冪乗のi(iは2以上の整数)次メッシュに階層的に分割され、1次〜n次メッシュに付与される10進数のメッシュ番号が次数の昇順に上位桁に並べて構成され、該n次メッシュを一意に特定するメッシュコードを記録する地図記録部から所定の階層のメッシュの前記メッシュコードを取得するステップと、前記ステップで取得した前記メッシュコードを構成する各次数の前記メッシュ番号を次数ごとに固定長のビット長の2進数に変換し、該各次数の2進数を次数の昇順に上位ビット側に連結して、パックコードに変換するステップと、前記パックコードを緯度に係る緯度コードと経度に係る経度コードに分割し、前記緯度コード及び前記経度コードを並べたメッシュ座標に変換するステップと、前記メッシュ座標をメッシュデータ記録部に記録するステップとを具備したことを特徴とする目標メッシュに隣接するメッシュを求める方法が提供される。
【0012】
請求項6記載の発明によれば、目標メッシュに隣接するメッシュを求める方法であって、全体地図を複数のメッシュに分割して、縮尺に応じて当該メッシュのサイズが異なる複数の階層の(i−1)(iは2次以上の整数)次メッシュの緯度方向及び経度方向について2の冪乗個のi(iは2以上の整数)次メッシュに分割される階層化されたメッシュ構造において、各POIを一意に特定するPOI識別子を含みPOI情報を記憶するPOI情報記録部を検索して、各POIが位置する緯度経度及び前記POI識別子を取得するステップと、前記ステップで取得した緯度に基づく値に第1所定値を乗算した第1値に、前記2の冪乗個のi(i=2〜n,nは2以上の整数)次メッシュの緯度方向の個数を2次〜n次まで乗算した第2値を乗算した10進整数値を2進数に変換した緯度コードを算出するステップと、前記ステップで取得した経度から第2所定値減算した第3値に、前記2の冪乗個のi(i=2〜n,nは2以上の整数)次メッシュの経度方向の個数を2次〜n次まで乗算した第2値を乗算した10進整数値を2進数に変換した経度コードを算出するステップと、前記緯度コードの各i(i=1〜n,nは2以上の整数)次メッシュの前記緯度方向の個数に対応するビット長の該当の2進数値及び前記経度コードの各i(i=1〜n,nは2以上の整数)メッシュの前記経度方向の個数に対応するビット長の該当の2進数値のいずれか一方を上位ビット側にし、次数の昇順に上位ビット側に結合して、パックコードに変換するステップと、前記POI識別子及び前記パックコードをPOI検索テーブルに格納するステップとを具備したことを特徴とする目標メッシュに隣接するメッシュを求める方法が提供される。
【0013】
請求項7記載の発明によれば、請求項5記載の発明において、位置情報に基づいて、前記メッシュデータ記録部を検索して、該位置情報が示す地点が含まれる目標メッシュのメッシュ座標を取得するステップと、前記メッシュ座標に対応する目標メッシュから隣接するメッシュまでの緯度方向のメッシュ数、及び経度方向のメッシュ数を緯度方向及び経度方向に応じて加減算して隣接するメッシュのメッシュ座標を算出するステップを更に具備したことを特徴とする目標メッシュに隣接するメッシュを求める方法が提供される。
【0014】
請求項8記載の発明によれば、請求項6記載の発明において、第2緯度経度を取得するステップと、前記ステップで取得した第2緯度に基づく値に前記第1所定値を乗算した第1値に、前記第2値を乗算した10進整数値を2進数に変換した第2緯度コードを算出するステップと、前記ステップで取得した第2経度から前記第2所定値減算した第3値に、前記第4値を乗算した10進整数値を2進数に変換した第2経度コードを算出するステップと、前記第2緯度コード及び前記第2経度コードから成るメッシュ座標に、前記メッシュ座標に対応する前記第2緯度経度の地点が含まれる目標メッシュから隣接するメッシュまでの緯度方向のメッシュ数、及び経度方向のメッシュ数を緯度方向及び経度方向に応じて加減算して隣接するメッシュのメッシュ座標を算出するステップを更に具備したことを特徴とする目標メッシュに隣接するメッシュを求める方法が提供される。
【発明の効果】
【0015】
請求項1、5記載の発明によると、多階層のメッシュ構造において、予め、地図記録部から所定の次数のメッシュコードを取得し、メッシュコードからパックコードに変換し、パックコードを緯度コード及び経度コードに分割し、緯度コード及び経度コードを並べた2次元のメッシュ座標に変換して、メッシュデータ記録部に格納しておくことにより、メッシュ座標を算出することなく、メッシュデータ記録部を検索して、メッシュ座標を取得することができる。
【0016】
請求項2、6記載の発明によると、緯度方向のi(i=2〜n)次メッシュの数をi=2〜nまで乗算した値は、各1次メッシュに関わるn次メッシュの緯度方向の数を意味し、n次メッシュと1次メッシュの縮尺を等しくして、各1次メッシュを該1次メッシュの地図範囲に含まれるn次メッシュで分割したときの緯度方向のn次メッシュの数が緯度コードであり、経度方向のi(i=2〜n)次メッシュの数をi=2〜nまで乗算した値は、各1次メッシュに関わるn次メッシュの経度方向の数を意味し、n次メッシュと1次メッシュの縮尺を等しくして、各1次メッシュを該1次メッシュの地図範囲に含まれるn次メッシュで分割したときの経度方向のn次メッシュの数が経度コードであり、n次メッシュと、緯度コード及び経度コードからなるメッシュ座標は1対1に対応することから、緯度コード及び経度コードから変換したパックコードはメッシュと1対1に対応する。
【0017】
このパックコードをPOI検索テーブルに格納しておくので、位置情報に基づいて算出式より算出した目標メッシュの緯度コード及び経度コードからなるメッシュ座標から隣接するメッシュのメッシュ座標が算出され、隣接するメッシュのメッシュ座標をパックコードに変換することにより、POI検索テーブルを検索して、隣接するメッシュに位置する地域情報を取得することができる。
【0018】
請求項3、7記載の発明によると、メッシュ座標に対応するn次メッシュから隣接するメッシュまでの緯度方向のn次メッシュ数及び経度方向のn次のメッシュ数を緯度方向及び経度方向に応じて加減算して隣接するメッシュのメッシュ座標を算出して隣接するメッシュを抽出することができ、隣接するメッシュを高速に抽出することができ、隣接するメッシュに位置する地域情報を高速に取得が可能となる。
【0019】
請求項4、8記載の発明によると、位置情報に基づいて、算出式より第2緯度コード及び第2経度コードを算出し、第2緯度コード及び第2経度コードから成るメッシュ座標の加減算により隣接するメッシュのメッシュ座標を高速に算出することができ、隣接するメッシュのメッシュ座標からパックコードに変換して、該パックコードに基づいて、POI検索テーブルを検索することにより、POI情報を高速に取得することが可能になる。
【図面の簡単な説明】
【0020】
【図1】本発明の実施形態による地域情報検索システムの概略構成図である。
【図2】図1中の地域情報検索サーバの機能ブロック図である。
【図3】図1中の地図DBの構成図である
【図4】図1中のメッシュDBの構成図である。
【図5】図2中のメッシュDB作成部の機能ブロック図である。
【図6】本発明の実施形態による多階層メッシュ構造を説明するための図である。
【図7】2次メッシュ及び2次メッシュ番号を示す図である。
【図8】n次(nは3以上の整数)メッシュ及びn次メッシュ番号を示す図である。
【図9】メッシュコードからメッシュ座標への変換方法を示すフローチャートである。
【図10】メッシュコードからパックコードへの変換方法を示すフローチャートである。
【図11】目標メッシュのメッシュ座標と隣接メッシュのメッシュ座標の関係を示す図である。
【図12】隣接メッシュのメッシュ座標の算出方法を示す図である。
【図13】図2中のPOI検索テーブル作成部の機能ブロック図である。
【図14】図1中のPOI情報テーブルの構成図である。
【図15】図1中のPOI検索テーブルの構成図である。
【図16】POI検索テーブルの作成方法を示すフローチャートである。
【発明を実施するための形態】
【0021】
図1は本発明の実施形態による地域情報検索システム1の構成図である。図1に示すように、地域情報検索システム1は、複数の情報端末装置2#i(i=1〜n)と、インターネット等の通信ネットワーク4と、地域情報検索サーバ6と、地図DB(地図記録部)8と、POI情報テーブル(POI情報記録部)9、メッシュDB(メッシュデータ記録部)10と、POI検索テーブル11と、携帯端末装置12と、無線基地局14と、基地局制御装置16を具備する。情報端末装置2#i(i=1〜n)は、インターネット等の通信ネットワーク4を通して地域情報検索サーバ6に接続され、携帯端末装置12は、無線基地局14及び基地局制御装置16等の移動体ネットワーク及び通信ネットワーク4を通して地域情報検索サーバ6に接続される。符号2#iは複数の情報端末装置の任意の一つを指すが、以下では2と省略して記す。
【0022】
情報端末装置2は、PC(Personal Computer)、カーナビゲーション装置、デジタルテレビ等、通信ネットワーク4を通して、所定の通信プロトコル、例えば、HTTP(Hyper Text Transfer Protocol)に従って、地域情報検索サーバ6に地図画像や地域情報検索のリクエストをして、地域情報の提供を受ける通信端末であり、CPU、表示装置、入力手段、ROM、メインメモリ、記憶媒体、I/Oコントローラ及び通信インタフェース部等を有する。尚、通信プロトコルは、地域情報検索サーバ6との間で通信ネットワーク4を介して通信が可能であれば、HTTP以外の他のプロトコルであっても勿論良い。
【0023】
通信ネットワーク4は、インターネット等の通信ネットワークであり、情報端末装置2とは、光ファイバ等の有線通信ケーブルによって接続される場合や、無線LANのアクセスポイントを介して無線により接続される場合がある。
【0024】
携帯端末装置12は、携帯電話、スマートフォン、PDA(Personal Digital Assistants)等の移動体端末であり、無線基地局14及び基地局制御装置16等の移動体通信ネットワーク及びインターネット等の通信ネットワーク4を通して、地域情報検索サーバ6に接続される。携帯端末装置12は、地域情報検索サーバ6と、所定の通信プロトコル、例えば、HTTPプロトコルに従って通信する。また、携帯端末装置12は、図示しないGPS(Global Positioning System)や無線基地局14より緯度経度の位置情報を取得して、緯度経度の位置情報に基づいて、地域情報検索サーバに地域情報の提供をリクエストする。
【0025】
地域情報検索サーバ6は、地図DB8、POI情報テーブル9、メッシュDB10、POI検索テーブル11及び図示しない各メッシュのラスタ化された地図画像DBを含み、以下の機能を有する。尚、図1において、地域情報検索サーバ6は情報端末装置2と携帯端末装置12とについて共用する構成としているが、別々のサーバとして構成するようにしても良い。
【0026】
(1) 地図DB8から後述する所定の次数のメッシュコードを読み出して、メッシュコードを取得する。
【0027】
(2) 本実施形態では、全体地図を複数のメッシュに分割して、縮尺に応じて当該メッシュのサイズが異なる複数の段階に階層化され、各段階のメッシュには、緯度の増加とともに1ずつ増加する緯度部分の10進数及び経度の増加とともに0〜最大値まで1ずつ増加する経度部分の10進数の第1メッシュ番号、もしくは10進数のメッシュ番号であって、該10進数値を2進数で表現したとき、緯度に対応する所定ビットのビット値が緯度の増加とともに0〜最大値まで1ずつ増加し、経度に対応する所定ビットのビット値が経度の増加とともに0〜最大値まで1ずつ増加する第2メッシュ番号が付与され、i(i=1〜n−1,nは3以上の整数)次メッシュが緯度及び経度方向にそれぞれ2の冪乗個の(i+1)次メッシュに分割される階層的な分割に係る1〜n段階の1次〜n次メッシュの第1メッシュ番号もしくは第2メッシュ番号が1次メッシュを最上位桁として次数の昇順に順次連結されて、該n次メッシュを一意に特定するメッシュコードが付与されるメッシュ構造である。メッシュ番号は、各n次メッシュに付与され、該n次メッシュの分割に係る1次〜(n−1)次メッシュのメッシュ番号は含まないものと定義する。
【0028】
例えば、1次メッシュは、8×8の2次メッシュに分割され、(i−1)(i=3〜n,nは最高次数(例えば、n=10))には、2×2のi次(i=3〜n)メッシュに分割されている。そして、1次メッシュには、それぞれ2桁の1次メッシュ番号が付与され、2次メッシュには、それぞれ1桁(0〜7)×2の2次メッシュ番号が付与され、(i−1)(i=3〜n,nは最高次数(例えば、n=10))を2×2に分割するi次メッシュには、経度部分と緯度部分を合わせて1桁(0〜3,2進数表現で0ビット目が経度部分のビット、1ビット目が緯度部分のビット)のメッシュ番号が付与された多段階のメッシュ構造の地図である。1次及び2次メッシュのように、緯度部分と経度部分にそれぞれ10進数のメッシュ番号が別々に付与されるメッシュ番号を第1メッシュ番号と呼び、3次メッシュ〜n次メッシュのように、10進数であって、緯度部分と経度部分を合わせて10進数のメッシュ番号が付与されて、その2進表現において、所定ビット(例えば、0ビット目が経度部分、1ビット目が緯度部分)が割り当てられている10進数値を第2メッシュ番号と呼ぶ。
【0029】
1次メッシュのメッシュ番号の2桁の緯度部分の10進数値から所定値(例えば、15)を減算した10進数値を6ビットの2進数値、1次メッシュのメッシュ番号の2桁の経度部分の10進数値を6ビットの2進数値、2次メッシュのメッシュ番号の1桁の緯度部分の10進数値を3ビットの2進数値、2次メッシュのメッシュ番号の1桁の経度部分の10進数値を3ビットの2進数値に変換して、1次メッシュから昇順に上位ビット側にして2進数値を結合してパックコードを生成する。パックコードは、メッシュコードを2進数化した中間的な値である。
【0030】
(3) パックコードを緯度部分と経度部分に分割して、緯度部分及び経度部分についてそれぞれ、1次メッシュから昇順に上位ビット側にして2進数値を連結して、緯度コード、経度コードを作成する。尚、後述のように、n(nは3以上の整数)次メッシュの場合は、緯度部分は2ビットの2進数値の上位1ビット、経度部分は下位1ビットである。9次メッシュの場合は、緯度コード及び経度コードは32ビット、10次メッシュの場合は、緯度コード及び経度コードは34ビットとなる。
【0031】
(4) 緯度コードと経度コードから成るメッシュ座標及び緯度経度1,2(左下隅の緯度経度、右上隅の緯度経度)をメッシュDB10に格納する。尚、メッシュ座標は緯度コード及び経度コードが並べられていれば表現形式は問わない。
【0032】
(5) n次目標メッシュに隣接するメッシュ(隣接メッシュ)について、目標メッシュから隣接メッシュまでの緯度方向のn次メッシュの数を、緯度が大きくなる方向か緯度が小さくなる方向に隣接メッシュが位置するかに応じて、目標メッシュのメッシュ座標の緯度コードに加減算して、隣接メッシュの緯度コードを求める。また、目標メッシュから隣接メッシュまでの経度方向のn次メッシュの数を、経度が大きくなる方向か経度が小さくなる方向に隣接メッシュが位置するかに応じて、目標メッシュのメッシュ座標の経度コードに加減算して、隣接メッシュの経度コードを求める。緯度コード及び経度コードから成るメッシュ座標(緯度コード,経度コード)が得られる。このように、目標メッシュのメッシュ座標に加減算することにより隣接メッシュのメッシュ座標が正しく求められる理由は後で詳細に説明する。
【0033】
(6) POI検索テーブル11を作成する。即ち、POI情報テーブル9から各POI識別子(POIID)及び該POIIDを有するPOIが位置する緯度経度を取得し、緯度経度から後述する式(1),(2)に従って、緯度経度の地点が位置する所定次数n(例えば、最高次数)のメッシュ(例えば、10次メッシュ)の緯度コード及び経度コードから成るメッシュ座標を算出し、このメッシュ座標を所定次数nの後述のパックコードに変換し、パックコード及びPOIIDをPOI検索テーブル14に格納する。
【0034】
地域情報検索サーバ6のハードウェア構成は、情報端末装置2と同様に、CPU、表示装置、入力手段、ROM、メインメモリ、記憶媒体、I/Oコントローラ及び通信インタフェース部等を有する。
【0035】
図2は、図1中の地域情報検索サーバ6の機能ブロック図であり、メッシュDB作成部20及びPOI検索テーブル作成部22を有する。メッシュDB作成部20は、地図DB8より所定以上の次数のメッシュのメッシュコード及び緯度経度1,2を読み出し、後述するように、メッシュコードからパックコードに変換し、パックコードを緯度コード及び経度コードに分割して、緯度コード及び経度コードから成るメッシュ座標に変換し、メッシュ座標を緯度経度1,2とともにメッシュDB10格納する。尚、パックコード及び緯度経度1,2は、メッシュコード等が地図DB8に登録された時点で登録するようにしても良い。
【0036】
POI検索テーブル作成部22は、POI情報テーブル9より各POIの緯度経度及びPOIIDを順次読み出し、緯度経度から後述する式(1),(2)より、緯度コード及び経度コードから成るメッシュ座標を算出し、メッシュ座標をパックコードに変換して、パックコード及びPOIIDをPOI検索テーブル11に格納する。
【0037】
図3は、図1中の地図DB8の一部構成図である。地図DB8は、全体地図を複数のメッシュに分割して、縮尺に応じて当該メッシュのサイズが異なる複数の階層毎に図示しない地図データと全体地図を分割する各メッシュを管理するための情報を記録するデータベースである。各メッシュを管理するための情報は、階層ID、メッシュコード、緯度経度1及び緯度経度2等を含む。階層IDはメッシュの次数である。メッシュコードは各メッシュを一意に識別するためのコードである。緯度経度1,緯度経度2は、メッシュの左下隅,右上隅の緯度経度である。図4は、メッシュDB10の構成図である。メッシュDB10は、メッシュ座標を格納するデータベースであり、緯度・経度1、緯度・経度2及びメッシュ座標を含む。
【0038】
図5は、図2中のメッシュDB作成部20の機能ブロック図であり、メッシュコード取得部50、パックコード変換部52、緯度・経度コード変換部54、メッシュ座標格納部56及び隣接メッシュ座標算出部58などから構成され、記憶装置に格納された該当プログラムがメインメモリにローディングされて、CPUによるプログラムの実行により実現される。
【0039】
メッシュコード取得部50は、地図DB8から後述する所定次数n(nは3以上の整数)のメッシュコードを読み出し、パックコード変換部52に出力する。所定次数nは、最高次数のみであってもいいし、一定以上の複数の次数であっても良い。
【0040】
図6は、メッシュ構造を示す図である。図7は、2次メッシュ番号を示す図である。図8は、3次〜n(nは3以上の整数)次メッシュのメッシュ番号を示す図である。図6に示すように、全体地図を複数のメッシュに分割して、縮尺に応じて当該メッシュのサイズが異なる複数の段階に階層化されている。例えば、1次メッシュが8×8の2次メッシュに分割されて、2次メッシュが2×2の3次メッシュに分割され、3次メッシュが2×2の4次メッシュ、4次メッシュが2×2の5次メッシュ、・・と階層的に分割されている。
【0041】
1次メッシュは、1次メッシュに含まれる任意の地点の緯度をlat、経度をlonとすると、1次メッシュ番号の2桁の緯度部分の10進数値(整数)はlat×1.5の整数値となり、1次メッシュ番号の2桁の経度部分の10進数値(整数)は(lon−100)の整数値となる。
【0042】
図7に示すように,2次メッシュのメッシュ番号は、2桁が付与されて、上位1桁の緯度部分には、緯度が大きくなるとともに値が大きくなるように0〜7までの数が割り当てられている。例えば、2次メッシュの一番南には0、一番北には7が付与されている。下位1桁の経度部分には、経度が大きくなるとともに値が大きくなるように0〜7までの数が付与されている。例えば、2次メッシュの一番西には0、一番東には7が割り当てられている。
【0043】
図8に示すように、n次(nは3以上)メッシュは2×2に分割されて、左下隅に0、右下隅に1、左上隅に2、右上隅に3が割り当てられている。これにより、0〜3までの10進数値を2ビットの2進数値に変換したとき、上位1ビットが緯度部分となり、下2つのメッシュのメッシュ番号は0(2進数値)、上2つのメッシュのメッシュ番号は1(2進数値)となり、緯度が大きいメッシュのメッシュ番号の値は大きくなる。下位1ビットは経度部分となり、左2つのメッシュのメッシュ番号は0(2進数値)、右2つのメッシュのメッシュ番号は1(2進数値)となり、経度が大きいメッシュの値は大きくなる。
【0044】
1次メッシュ及び2次メッシュは総務省で定められたメッシュであり、3次以上は、拡張メッシュである。
【0045】
例えば、1次メッシュのメッシュ番号の緯度部分を53、1次メッシュのメッシュ番号の経度部分を39、2次メッシュのメッシュ番号の緯度部分を4、2次メッシュのメッシュ番号の経度部分を6、3次メッシュのメッシュ番号を0、4次メッシュのメッシュ番号を0、5次メッシュのメッシュ番号を3、6次メッシュのメッシュ番号を0、7次メッシュのメッシュ番号を0、8次メッシュのメッシュ番号を1、9次メッシュのメッシュ番号を3、10次メッシュのメッシュ番号を1とすると、メッシュコードは、53394600300131である。
【0046】
パックコード変換部52は、2桁の1次メッシュの緯度部分−15を6ビットの2進数値に変換し、2桁の1次メッシュのメッシュ番号の経度部分を6ビットの2進数値に変換し、1桁の2次メッシュのメッシュ番号の緯度部分を3ビットの2進数値に変換し、1桁の2次メッシュのメッシュ番号の経度部分を3ビットの2進数値に変換し、3次〜n次メッシュについては、1桁の10進数値を2ビットの2進数値に変換して、これら変換した2進数値を1次メッシュから昇順、且つ上位ビット側に結合して、パックコードを生成する。n次メッシュのパックコードは、((n+7)×2)ビットとなり、例えば、9次メッシュの場合は、32ビットとなる。
【0047】
メッシュコードが53394600300131の場合、パックコードP1aP1bP2aP2bP3P4P5P6P7P8P9P10とすると、P1a=100110(2進)=38(10進)、P1b=100111(2進)=39(10進)、P2a=100(2進)=4(10進)、P2b=110(2進)=6(10進)、P3=00(2進)=0(10進)、P4=00(2進)=0(10進)、P5=11(2進)=3(10進)、P6=10(2進)=00(10進)、P7-=00(2進)=0(10進)、P8=01(2進)=1(10進)、P9=11(2進)=3(10進)、P10=01(2進)=1となる。
【0048】
ここで、経度部分から15を引くのは、6ビットで択捉島まで含まれるようにするためであり、こうすることにより、1次メッシュの緯度部分P1a、経度部分P1bがそれぞれ6ビットであれば日本の東西南北端点である南鳥島、沖ノ島、与那国島、択捉島の各緯度経度をパックコードとして格納することができる。
【0049】
10進数値の最大値に応じたビット長の2進数値に変換するのは、メッシュコードから変換したパックコードが所定の範囲の緯度経度について2進数値として連続するよう構成するためである。2桁の緯度部分のメッシュ番号−15の10進数値の範囲及び2桁の経度部分のメッシュ番号の10進数値の範囲は6ビット、0〜7の10進数値は3ビット、0〜3の10進数値は2ビットで表現される。
【0050】
緯度・経度コード(メッシュ座標)変換部54は、パックコードを緯度部分と経度部分に分割し、緯度部分及び経度部分についてそれぞれ、1次メッシュから昇順に上位ビット側にして2進数値に連結して、緯度コード及び経度コードに変換し、緯度コード及び経度コードから成るメッシュ座標に変換する。
【0051】
パックコードP1aP1bP2aP2bP3・・・P10とすると、緯度コードCa及び経度コードCbは以下のようになる。
【0052】
Ca=P1aP2aP3a・・・P10a
Cb=P1bP2bP3b・・・P10b
但し、P3=P3aP3b,・・・,P10=P10aP10bである。
【0053】
例えば、パックコードを(P1a)(P1b)(P2a)(P2b)(P3)(P4)・・(P9)(P10)=100100-100111-100-110-00-00-11-00-00-01-11・01
とすると、
緯度コードCa=10011010000100010となり、
経度コードCb=10011111000100111となる。
【0054】
メッシュ座標は緯度コードCa及び経度コードCbから成る(Ca,Cb)である。
【0055】
このように、パックコードを緯度コードと経度コードに分割することにより、メッシュコードから変換した緯度コード及び経度コードがそれぞれ2進数値として連続するとともに、緯度及び経度がそれぞれ大きくなるに従って、緯度コード及び経度コードがそれぞれ2進数値として大きくなり、後述するように、緯度コード及び経度コードに、n次目標メッシュから隣接メッシュまでの緯度方向及び経度方向のそれぞれのn次メッシュのメッシュ数を緯度方向及び経度方向に応じて加減算することにより、隣接メッシュの緯度コード及び経度コードを求めることができる。
【0056】
メッシュ座標格納部56は、緯度コード及び経度コードから成るメッシュ座標を緯度経度1,2とともにメッシュDB10に格納する。尚、メッシュ座標、緯度経度1,2に加えて、メッシュ座標の次数をメッシュDB10に格納するようにしても良い。隣接メッシュ座標算出部58は、n次目標メッシュに隣接する隣接メッシュについて、目標メッシュから隣接メッシュまでの緯度方向のn次メッシュの数を緯度が大きくなる方向、緯度が小さくなる方向に隣接メッシュが位置するかに応じて、目標メッシュのメッシュ座標の緯度コードに加減算して隣接メッシュの緯度コードを求める。また、目標メッシュから隣接メッシュのまでの経度方向のn次メッシュの数を経度が大きくなる方向か経度が小さくなる方向に隣接メッシュが位置するかに応じて、目標メッシュのメッシュ座標の経度コードに加減算して隣接メッシュの経度コードを求める。そして、隣接メッシュの緯度コード及び経度コードから成る隣接メッシュのメッシュ座標を求める。
【0057】
尚、情報端末装置2や携帯端末装置12より受信した位置情報(緯度経度)からメッシュDB10を検索し、緯度経度が含まれる(例えば、位置情報の地点が位置する(緯度経度1,2の範囲内に位置する))目標メッシュのメッシュ座標を取得する。また、メッシュDB10に緯度経度に代わりにメッシュコードを格納しておき、位置情報に基づいて、地図DB8を検索して、地図DB8から位置情報が示す地点が位置する目標メッシュのメッシュコードを取得し、メッシュコードに基づいて、メッシュDB10を検索して、メッシュ座標を算出するようにしても良い。更に、地図DB8を検索して、地図DB8から位置情報が示す地点が位置する目標メッシュのメッシュコードを取得し、メッシュコードからパックコードに変換し、パックコードからメッシュ座標に変換するようにしても良い。
【0058】
図9は、メッシュ座標変換に係るフローチャートである。ステップS2で、所定の次数のメッシュコード、緯度経度1,2を地図DB8から順次読み出す。ステップS4で、メッシュコードが有るか否かを判定する。肯定判定ならば、ステップ6に進む。否定判定ならば、所定の次数の全てのメッシュコードからメッシュ座標への変換が終了したので、処理を終了する。
【0059】
ステップS6で、図10に示すパックコードへの変換処理を行う。図10中のステップS20で、(1次メッシュ番号の緯度部分の2桁の10進値−15)を6ビットの2進数値に変換する。ステップS22で、1次メッシュ番号の経度部分の2桁を6ビットの2進数値に変換し、緯度部分の1次メッシュ番号についての2進数値の最下位ビットに結合する。
【0060】
ステップS24で、2次メッシュ番号の緯度部分の1桁を3ビットの2進数値に変換し、結合した経度部分の1次メッシュ番号の2進数値の最下位ビットに結合する。ステップS26で、2次メッシュ番号の経度部分の1桁を3ビットの2進数値に変換し、結合した2次メッシュ番号の緯度部分の2進数値の最下位ビットに結合する。ステップS28で、次の次数の1桁を2ビットの2進数値に変換し、結合した2次メッシュの経度部分の2進数値の最下位ビット、又は結合した2ビットの2進数値の最下位ビットに結合する。ステップS30で、最高次数のメッシュ番号の2進数値への変換が終了したか否かを判定する。肯定判定ならば、図8中のステップS8に戻る。
【0061】
図9中のステップS8で、パックコードを最高次数又は1次から降順又は昇順に、次数に該当する緯度経度部分の上位に緯度部分を1次が最上位ビットとなるように、緯度コードの該当部分に、下位の経度部分を経度コードの該当部分に設定する。ステップS10で、次の次数が有るか否かを判定する。肯定判定ならば、ステップS8に戻り、否定判定ならば、緯度コード、経度コードのメッシュ座標が作成されたので、ステップS12に進む。ステップS12で、緯度コード及び経度コードから成るメッシュ座標を緯度経度1,2とともにメッシュDB10に格納し、ステップS2に戻る。
【0062】
図11及び図12は隣接するメッシュのメッシュ座標を算出する方法を示す図である。以下、これらの図面を参照して、隣接するメッシュのメッシュ座標を算出する方法を説明する。本例では、10次メッシュの場合を示している。目標メッシュM33のメッシュコードを53394600003021(以下、M003021,M=53394600と記載する)とすると、
パックコードP1aP1bP2aP2bP3P4P5P6P7P8P9P10は,P1a=100110、P1b=100111、P2a=100、P2b=110、P3=00,P4=00、P5=00、P6=00、P7=11、P8-=00、P9=10、P10=01となる。
【0063】
緯度コードは、10011010000001010(Ca001010と記載する)
経度コードは、10011111000001001(Cb001001と記載する)
メッシュ座標は、(Ca001010,Cb001001)となる。
【0064】
目標メッシュM33から北に1個離れた隣接メッシュM41,M42,M43,M44,M45の経度コードはメッシュM33の緯度コードCa001010に2進数として1加えたCa001011となり、隣接メッシュM41,M42,M43,M44,M45のメッシュコードから変換した緯度コードに等しい。目標のメッシュM33から南に1個離れた隣接メッシュM21,M22,M23,M24,M25の緯度コードはメッシュM33の緯度コードCa001010に2進数として1減算したCa001001となり、隣接メッシュM21,M22,M23,M24,M25のメッシュコードから変換した緯度コードに等しい。
【0065】
目標メッシュM33から北に2個離れた隣接メッシュM51,M52,M53,M54,M55の経度コードはメッシュM33の緯度コードCa001010に2進数として2加えたCa001100となり、隣接メッシュM51,M52,M53,M54,M55のメッシュコードから変換した緯度コードに等しい。目標のメッシュM33から南に2個離れた隣接メッシュM11,M12,M13,M14,M15の経度コードはメッシュM33の緯度コードCa001010に2進数として2減算したCa001000となり、隣接メッシュM11,M12,M13,M14,M15のメッシュコードから変換した緯度コードに等しい。
【0066】
目標メッシュM33から東に1個離れた隣接メッシュM14,M24,M34,M44,M54の経度コードはメッシュM33の経度コードCb001001に2進数として1加えたCb001010となり、隣接メッシュM14,M24,M34,M44,M54のメッシュコードから変換した経度コードに等しい。目標のメッシュM33から西に1個離れた隣接メッシュM12,M22,M32,M42,M52の経度コードはメッシュM33の経度コードCb001001に2進数として1減算したCb001000となり、隣接メッシュM12,M22,M32,M42,M52のメッシュコードから変換した経度コードに等しい。
【0067】
目標メッシュM33から東に2個離れた隣接メッシュM15,M25,M35,M45,M55の経度コードはメッシュM33の経度コードCb001001に2進数として10(2進数)加えたCb001011となり、隣接メッシュM15,M25,M35,M45,M55のメッシュコードから変換した経度コードに等しい。目標のメッシュM33から西に2個離れた隣接メッシュM11,M21,M31,M41,M51の経度コードはメッシュM33の経度コードCb001001に2進数として2減算したCb000111となり、隣接メッシュM11,M21,M31,M41,M51のメッシュコードから変換した経度コードに等しい。
【0068】
また、メッシュM53やM34等のメッシュは、目標メッシュM33が位置する9次メッシュとは異なる9次メッシュに位置するが、このようなメッシュのメッシュ座標についても目標メッシュの緯度コード及び経度コードに加減算することにより、求めることができる。例えば、メッシM53の緯度コードは目標メッシュの緯度コードに10(2進数値の2)を加算することにより求まる。また、メッシM34の経度コードは目標メッシュの経度コードに01(2進数値の1)を加算することにより求まる。
【0069】
従って、図12に示すように、目標のメッシュM33をn次メッシュとすると、目標メッシュM33から離間するn次メッシュの個数分だけ離間する方向に応じて、目標メッシュの緯度コードに加減算する。例えば、東に1個離間する場合は、経度コードに1加算し、東に2個離間する場合は、経度コードに2加算し、西に1個離間する場合は、経度コードに1減算し、西に2個離間する場合は、経度コードに2減算し、北に1個離間する場合は、緯度コードに1加算し、北に2個離間する場合は、緯度コードに2加算し、南に1個離間する場合は、緯度コードに1減算し、南に2個離間する場合は、緯度コードに2減算すれば良い。
【0070】
このように、目標メッシュの隣接メッシュのメッシュ座標は、目標メッシュのメッシュ座標の緯度コード及び経度コードに、目標メッシュから隣接メッシュまでの緯度方向及び経度方向のn次メッシュ数を、その緯度方向及び経度方向に応じて、緯度コード及び経度コードにそれぞれ加減算することにより、該当する隣接メッシュのメッシュコードから変換した緯度コード及び経度コードに一致する正しいメッシュ座標を算出することができる。
【0071】
図13は、図2中のPOI検索テーブル作成部22の機能ブロック図である。POI検索テーブル作成部22は、緯度・経度取得部100、緯度コード算出部102、経度コード算出部104、パックコード変換部106及びパックコード格納部108を有する。
【0072】
図14は、POI情報テーブル9の構成図である。図14に示すように、POI情報テーブル9は、各POI情報を格納するテーブルであり、各POIを一意に識別するためのPOIID、POIが位置する緯度経度、POIの名称、ジャンル及び電話番号等が格納されている。
【0073】
図15は、POI検索テーブル11の構成図である。図15に示すように、POI検索テーブル11は各POIのPOIIDとパックコードとを紐付けるためのテーブルであり、各POIのPOIID及びパックコードが格納されている。
【0074】
緯度・経度取得部100は、POI情報テーブル9より各POIの緯度経度及びPOIIDを読み出し、緯度コード算出部102及び経度コード算出部104に出力する。
【0075】
緯度コード算出部102は、緯度・経度取得部100が取得した緯度から次式(1)よりn(nは3以上)次メッシュの緯度コードCaを求める。緯度をlatとする。ここで、緯度が度・分・秒で指定されている場合は、分・秒を度に変換する。
【0076】
・秒で指定されている場合は、分・秒を度に変換する。
【0077】
Ca=FLOOR(((lat−10)×3)÷2)×(緯度方向のi(i=2〜n)次メッシュの数をi=2〜nまで乗算した値) ・・・ (1)
FLOOR()は小数点以下を切り捨てる関数である。
【0078】
ここで、緯度方向のi(i=2〜n)次メッシュの数をi=2〜nまで乗算した値は、各1次メッシュに関わるn次メッシュの緯度方向の数を意味し、n次メッシュと1次メッシュの縮尺を等しくして、各1次メッシュを該1次メッシュの地図範囲に含まれるn次メッシュで分割したときの緯度方向のn次メッシュの数に等しい。
【0079】
3/2(第1所定値)を乗算するのは、緯度部分のメッシュ番号に合わせるためである。latから10を引くのは、緯度コードの1次メッシュに該当する緯度部分を6ビットで択捉島まで含まれるようにするためであり、こうすることにより、1次メッシュの緯度部分P1a、経度部分P1bがそれぞれ6ビットであれば日本の東西南北端点である南鳥島、沖ノ島、与那国島、択捉島の各緯度の緯度部分を格納することができる。
【0080】
このとき、(lat−10)×3/2=lat×3/2−15であり、1次メッシュの緯度部分のメッシュ番号から15減算した値となり、緯度10°の緯度コードは0であり、緯度10°の緯度部分のメッシュ番号が15と整数であり、緯度10°のメッシュの2次からn次メッシュの緯度部分のメッシュ番号は、0もしくは緯度部分の該当ビット値が0となる。
2次メッシュが1次メッシュを8×8に分割し、i(i=3〜n)次メッシュが(i−1)(i=3〜n)次メッシュを2×2に分割する場合、緯度方向の2次メッシュの数=23個、i(i=3〜n)次メッシュの緯度方向の数が2個であることから、i(i=2〜n)次メッシュの緯度方向の数をi=2〜nまで乗算した値は、23×2(n-2)=2の(n+1)乗)となり、
Ca=FLOOR((((lat−10)×3)÷2)×(2の(n+1)乗))
となる。
【0081】
Caは、北緯10度の地点が含まれる地点から1次メッシュを北に隙間なく並べ、該1次メッシュと縮尺を等しくしたn次メッシュで各1次メッシュを分割したとき、東経がlonの地点が含まれるn次メッシュまでの緯度方向のn次メッシュの個数−1である。
【0082】
経度コード算出部104は、経度から次式(2)よりn(nは3以上)次メッシュの経度コードCbを求める。経度をlonとする。ここで、経度が度・分・秒で指定されている場合は、分・秒を度に変換する。
【0083】
Cb=FLOOR((lon−100)×経度方向のi(i=2〜n)次メッシュの数をi=2〜nまで乗算した値) ・・・ (2)
FLOOR()は小数点以下を切り捨てる関数である。
【0084】
ここで、lonから100を引くのは、東経100度の経度コードを経度部分のメッシュ番号と同じ0とするためである。
【0085】
例えば、2次メッシュが1次メッシュを8×8に分割して、i(i=1〜n)次メッシュが(i−1)(i=1〜n)次メッシュを2×2に分割するとする。この場合、経度方向の2次メッシュの数=23、経度方向のi(i=3〜n)次メッシュの経度方向の数が2であることから、経度方向のi(i=2〜n)次メッシュの数をi=2〜nまで乗算した値は、23×2(n-2)=2の(n+1)乗)となり、
Cb=FLOOR((lon−100)×(2の(n+1)乗))
となる。
【0086】
Cbは、東経100度の地点が含まれる地点から1次メッシュを東に隙間なく並べ、該1次メッシュと縮尺を等しくしたn次メッシュで各1次メッシュを分割したとき、東経がlonの地点が含まれるn次メッシュまでの経度方向のn次メッシュの個数−1である。
【0087】
東経139度46分09.527秒、北緯35度40分41秒の10次の場合について説明する。
【0088】
上記を度で表すと、
lat=35+(40÷60)+(41÷3600)=35.678055
lon=139+(46÷60)+(09.527÷3600)=139.769313
となる。
【0089】
Ca=FLOOR(((lat−10)×3)÷2)×(2の11乗))
=FLOOR(((25.678055)×3)×1024)
=FLOOR(78882.98496)
=78882(10進)
=10011010000100010(2進)
Cb=FLOOR((lon−100)×(2の11乗))
=FLOOR(39.769313×2048)
=FLOOR(81447.553024)
=81447(10進)
=10011111000100111(2進)
本実施形態では、緯度コードの1次の緯度部分は6ビット、2次の緯度部分は3ビット、i(i=3〜n)次の緯度部分は1ビットであり、経度コードの1次の経度部分は6ビット、2次の経度部分は3ビット、i(i=3〜n)次の経度部分は1ビットである。
【0090】
緯度コードCa=C1aC2aC3a・・・C7aC8aC9aC10aとすると、
1次の緯度部分C1a=100100,2次の緯度部分C2a=100,3次の緯度部分C3a=0,4次の緯度部分C4a=0,5次の緯度部分C5a=1,6次の緯度部分Ca=0,7次の緯度部分C7a=0,8次の緯度部分C8a=0,9次の緯度部分C9a=1,10次の緯度部分C10a=0となる。
【0091】
経度コードCb=C1bC2bC3b・・・C7bC8bC9bC10bとすると、
1次の経度部分C1b=100101,2次の経度部分C2b=110,3次の経度部分C3b=0,4次の経度部分C4b=0,5次の経度部分C5b=1,6次の経度部分C6b=0,7次の経度部分C7b=0,8次の経度部分C8b=1,9次の経度部分C9b=1,10次の経度部分C10b=1となる。
【0092】
パックコード変換部106は、前述の式(1),(2)より算出された緯度コードCa及び経度コードCbのメッシュ座標から各次数i(i=1〜n)の緯度部分Cia及び経度部分Cibについて緯度部分Piaを経度部分Pibの上位ビット側にし、1次を最上位側にして、次数の昇順に結合して、パックコードに変換する。
【0093】
即ち、緯度コードCa=C1aC2aC3a・・・Cna、経度コードCb=C1bC2bC3b・・・Cnbとすると、パックコードP1aP1bP2aP2bP3・・・Pnは、C1aC1bC2aC2bC3aC3b・・・CnaCnbとなる。
P1a=C1a=100110(2進)=38(10進)
P1b=C1b=100111(2進)=39(10進)
P2a=C2a=100(2進)=4(10進)
P2b=C2b=110(2進)=6(10進)
P3=C3aC3b=00(2進)
P4=C4aC4b=00(2進)
P5=C5aC5b=11(2進)
P6=C6aC6b=00(2進)
P7=C7aC7b=00(2進)
P8=C8aC8b=01(2進)
P9=C9aC9b=11(2進)
P10=C10aC10b=01(2進)
尚、メッシュコードについては、
M1a=P1a+15
M1b=P1b
M2a=P2a=4
M2b=P2b=6
M3=P3=0
M4=P4=0
M5=P5=3
M6=P6=0
M7=P7=0
M8=P8=1
M9=P9=3
M10=P10=1
即ち、メッシュコードは(M1a)(M1b)(M2a)(M2b)(M3)(M4)(M5)(M6)(M7)(M8)(M9)(M10)
=53394600300131
となる。
【0094】
このとき、北緯10度の地点の緯度部分のメッシュ番号は15、整数であり、北緯10度の地点の2次メッシュ〜n次メッシュのメッシュ番号は0となることから、メッシュ座標から算出されるメッシュコードは、メッシュ構造に基づいてn次メッシュに付与されるメッシュコードに一致する。
【0095】
パックコード格納部108は、パックコード及びPOIIDをPOI検索テーブル11に格納する。尚、POIのメッシュ座標やパックコードの次数は、最高次数のみであっても良いし、所定以上の各次数について、緯度経度からメッシュ座標、メッシュ座標からパックコードに変換して、次数と共にパックコードをPOI検索テーブル14に書き込むようにしても良い。最高次数のパックコードであれば、それよりも低い次数のパックコードは、最高次数のパックコードの1次〜上記低い次数までの2進数値である。
【0096】
また、POI情報テーブル9に各POIが登録された時点で該POIについてパックコードをPOI検索テーブル11に登録するようにしても良い。更に、POI情報テーブル9中のPOIの緯度経度が変更になった場合、既に、POI検索テーブル11中の当該POIについてのパックコードを変更後の緯度経度からパックコードを算出して、POI検索テーブル11に登録する。
【0097】
また、パックコード変換部106の代わりに、メッシュ座標変換部を設け、緯度コード及び経度コードからパックコードに変換するのではなく、緯度コード及び経度コードから成るメッシュ座標に変換し、メッシュ座標及びPOIIDをPOI検索テーブル11に格納するようにしても良い。
【0098】
目標メッシュのメッシュ座標から該目標メッシュに隣接するメッシュのメッシュ座標を算出し、パックコードに変換し、隣接メッシュのパックコードのリストを作成し、パックコードのリストをキーにしてPOI検索テーブル11による絞り込みとPOI情報テーブル9とのテーブル結合を行って、地域情報としてのPOIのリストを作成する。尚、POI検索テーブル11にパックコードではなくメッシュコードを格納する場合は、隣接するメッシュの緯度コード及び経度コードから成るメッシュ座標に変換し、隣接するメッシュのメッシュ座標のリストをキーにしてPOI検索テーブル11による絞り込みとPOI情報テーブル9とのテーブル結合を行って、地域情報としてのPOIのリストを作成する。
【0099】
図16はPOI検索テーブル11の作成方法を示す図である。以下、図16を参照して、POI検索テーブル11の作成方法の説明をする。ステップS100で、POI情報テーブル9よりPOIID及び緯度経度を取得する。ステップS102で、次のPOIIDが有るか否かを判定する。肯定判定ならば、ステップS104に進み、否定判定ならば、POI検索テーブル11の作成方法の処理を終了する。ステップS104で、取得した緯度から上述の式(1)に従って、緯度コードを算出する。
【0100】
ステップS106で、取得した経度から上述の式(2)に従って、経度コードを算出する。ステップS108で緯度コード及び経度コードから上述したパックコードに変換する。ステップS110で、POIID及びパックコードをPOI検索テーブル11に書き込み、ステップS100に戻る。ステップS100〜S110を繰り返して、POI情報テーブル11に格納されている全てのPOIIDについて、POIの緯度経度からパックコードに変換して、POI検索テーブル11に書き込む。
【0101】
また、目標メッシュのメッシュ座標は、情報端末装置2や携帯端末装置12より受信した緯度経度から、緯度経度の地点が位置するn次目標メッシュのメッシュ座標を前述の式(1),(2)に従って、算出するようにしてもよい。このとき、目標メッシュの次数は、最高次数のみであっても良いし、複数の所定次数であっても良い。
【0102】
目標メッシュの隣接メッシュのメッシュ座標は、目標メッシュのメッシュ座標の緯度コード及び経度コードに、目標メッシュから隣接メッシュまでの緯度方向及び経度方向のn次メッシュ数を、その緯度方向及び経度方向に応じて、緯度コード及び経度コードにそれぞれ加減算することにより、該当する隣接メッシュのメッシュコードから変換した緯度コード及び経度コードに一致する正しいメッシュ座標を算出することができる。
【0103】
何故なら、前述の式(1),(2)により、緯度コードは、北緯10度の地点が含まれる地点から1次メッシュを北に隙間なく並べ、該1次メッシュと縮尺を等しくしたn次メッシュで各1次メッシュを分割したとき、北緯がlatの地点が含まれるn次メッシュまでの緯度方向のn次メッシュの個数−1であり、経度コードは、東経100度の地点が含まれる地点から1次メッシュを東に隙間なく並べ、該1次メッシュと縮尺を等しくしたn次メッシュで各1次メッシュを分割したとき、東経がlonの地点が含まれるn次メッシュまでの経度方向のn次メッシュの個数−1であることから、メッシュコードMij(i=1〜5,j=1〜5)の緯度コード及び経度コードは、図11に示す通りとなり、図12に示すように、隣接メッシュのメッシュ座標を算出できるからである。
【0104】
以上説明したように、本実施形態によれば、パックコードを緯度コードと経度コードに分割してメッシュコードを管理することで、緯度コード及び経度コードの加減算のみにて隣接するメッシュのメッシュ座標により隣接するメッシュを抽出できる。メッシュの次元と緯度コード及び経度コードの位置が対応しているため、階層構造で管理されたメッシュ構造においても容易に隣接するメッシュを求めることができる。
【0105】
また、POIの緯度経度から前述の式(1),(2)により、緯度コード及び経度コードを算出し、緯度コード及び経度コードからパックコードに変換し、パックコードをPOI検索テーブルに格納しておき、前述の式(1),(2)により算出した目標メッシュのメッシュ座標から隣接メッシュの緯度コード及び経度コードから成るメッシュ座標を算出し、隣接メッシュの緯度コード及び経度コードからパックコードに変換して、隣接メッシュのパックコードのリストを作成し、パックコードのリストをキーにしてPOI検索テーブルによる絞り込みとPOI情報テーブルとのテーブル結合を行って、地域情報としてのPOIのリストを高速に作成することができる。
【0106】
また、POI検索テーブルにメッシュ座標を格納する場合は、前述の式(1),(2)により算出した目標メッシュのメッシュ座標から隣接メッシュのメッシュ座標を算出し、隣接メッシュのメッシュ座標のリストを作成し、メッシュ座標のリストをキーにしてPOI検索テーブルによる絞り込みとPOI情報テーブルとのテーブル結合を行って、地域情報としてのPOIのリストを高速に作成することができる。
【0107】
本実施形態では、1次メッシュを8×8の64個の2次メッシュに分割し、2次メッシュ〜(n−1)次メッシュ(nは4以上の整数)を2×2の3次〜n次メッシュに分割するメッシュ構造としたが、経度方向及び緯度方向にそれぞれ2の冪乗個のメッシュに分割するメッシュ構造の場合に適用可能である。
【符号の説明】
【0108】
2 情報端末装置
4 通信ネットワーク
6 地域情報検索サーバ
8 地図DB
10 メッシュDB
12 携帯端末装置
14 無線基地局
16 基地局制御装置
50 メッシュコード取得部
52 パックコード変換部
54 メッシュ座標変換部
56 メッシュ座標格納部
58 隣接メッシュ座標算出部
100 緯度・経度取得部
102 緯度コード算出部
104 経度コード算出部
106 パックコード変換部
108 パックコード格納部

【特許請求の範囲】
【請求項1】
地域情報検索サーバであって、
全体地図を複数のメッシュに分割して、縮尺に応じて当該メッシュのサイズが異なる複数の階層毎の地図データと、各階層のn(nは1以上の整数)次メッシュに付与され、(i−1)(iは2次以上の整数)次メッシュの緯度方向及び経度方向について2の冪乗個のi(iは2以上の整数)次メッシュに階層的に分割され、1次〜n次メッシュに付与される10進数のメッシュ番号が次数の昇順に上位桁に並べて構成され、該n次メッシュを一意に特定するメッシュコードを記録する地図記録部と、
前記地図記録部から所定の階層のメッシュの前記メッシュコードを取得するメッシュコード取得部と、
前記メッシュコード取得部が取得した前記メッシュコードを構成する各次数の前記メッシュ番号を次数ごとに固定長のビット長の2進数に変換し、該各次数の2進数を次数の昇順に上位ビット側に連結して、パックコードに変換するパックコード変換部と、
前記パックコードを緯度に係る緯度コードと経度に係る経度コードに分割し、前記緯度コード及び前記経度コードから成るメッシュ座標に変換するメッシュ座標変換部と、
前記メッシュ座標をメッシュデータ記録部に記録するメッシュ座標格納部と、
を具備したことを特徴とする地域情報検索サーバ。
【請求項2】
地域情報検索サーバであって、
全体地図を複数のメッシュに分割して、縮尺に応じて当該メッシュのサイズが異なる複数の階層の(i−1)(iは2次以上の整数)次メッシュの緯度方向及び経度方向について2の冪乗個のi(iは2以上の整数)次メッシュに分割される階層化されたメッシュ構造において、
各POIを一意に特定するPOI識別子を含みPOI情報を記憶するPOI情報記録部と、
前記POI情報記録部を検索して、各POIが位置する緯度経度及び前記POI識別子を取得する緯度経度取得部と、
前記緯度経度取得部が取得した緯度に基づく値に第1所定値を乗算した第1値に、前記2の冪乗個のi(i=2〜n,nは2以上の整数)次メッシュの緯度方向の個数を2次〜n次まで乗算した第2値を乗算した10進整数値を2進数に変換した緯度コードを算出する緯度コード算出部と、
前記緯度経度取得部が取得した経度から第2所定値減算した第3値に、前記2の冪乗個のi(i=2〜n,nは2以上の整数)次メッシュの経度方向の個数を2次〜n次まで乗算した第2値を乗算した10進整数値を2進数に変換した経度コードを算出する経度コード算出部と、
前記緯度コードの各i(i=1〜n,nは2以上の整数)次メッシュの前記緯度方向の個数に対応するビット長の該当の2進数値及び前記経度コードの各i(i=1〜n,nは2以上の整数)メッシュの前記経度方向の個数に対応するビット長の該当の2進数値のいずれか一方を上位ビット側にし、次数の昇順に上位ビット側に結合して、パックコードに変換するパックコード変換部と、
前記POI識別子及び前記パックコードをPOI検索テーブルに格納するパックコード格納部と、
を具備したことを特徴とする地域情報検索サーバ。
【請求項3】
位置情報に基づいて、前記メッシュデータ記録部を検索して、該位置情報が示す地点が含まれる目標メッシュの前記メッシュ座標を取得するメッシュ座標取得部と、前記メッシュ座標に対応する目標メッシュから隣接するメッシュまでの緯度方向のメッシュ数、及び経度方向のメッシュ数を緯度方向及び経度方向に応じて加減算して隣接するメッシュのメッシュ座標を算出する隣接メッシュ座標算出部を更に具備したことを特徴とする請求項1に記載の地域情報検索サーバ。
【請求項4】
第2緯度経度を取得する第2緯度経度取得部と、前記第2緯度経度取得部が取得した第2緯度に基づく値に前記第1所定値を乗算した第1値に、前記第2値を乗算した10進整数値を2進数に変換した第2緯度コードを算出する第2緯度コード算出部と、前記第2緯度経度取得部が取得した第2経度から前記第2所定値減算した第3値に、前記第4値を乗算した10進整数値を2進数に変換した第2経度コードを算出する第2経度コード算出部と、前記第2緯度コード及び前記第2経度コードから成るメッシュ座標に、前記第2緯度経度の地点が含まれる前記メッシュ座標に対応する目標メッシュから隣接するメッシュまでの緯度方向のメッシュ数、及び経度方向のメッシュ数を緯度方向及び経度方向に応じて加減算して隣接するメッシュのメッシュ座標を算出する隣接メッシュ座標算出部を更に具備したことを特徴とする請求項2に記載の地域情報検索サーバ。
【請求項5】
目標メッシュに隣接するメッシュを求める方法であって、
全体地図を複数のメッシュに分割して、縮尺に応じて当該メッシュのサイズが異なる複数の階層毎の地図データと、各階層のn(nは1以上の整数)次メッシュに付与され、(i−1)(iは2次以上の整数)次メッシュの緯度方向及び経度方向について2の冪乗のi(iは2以上の整数)次メッシュに階層的に分割され、1次〜n次メッシュに付与される10進数のメッシュ番号が次数の昇順に上位桁に並べて構成され、該n次メッシュを一意に特定するメッシュコードを記録する地図記録部から所定の階層のメッシュの前記メッシュコードを取得するステップと、
前記ステップで取得した前記メッシュコードを構成する各次数の前記メッシュ番号を次数ごとに固定長のビット長の2進数に変換し、該各次数の2進数を次数の昇順に上位ビット側に連結して、パックコードに変換するステップと、
前記パックコードを緯度に係る緯度コードと経度に係る経度コードに分割し、前記緯度コード及び前記経度コードを並べたメッシュ座標に変換するステップと、
前記メッシュ座標をメッシュデータ記録部に記録するステップと、
を具備したことを特徴とする目標メッシュに隣接するメッシュを求める方法。
【請求項6】
目標メッシュに隣接するメッシュを求める方法であって、
全体地図を複数のメッシュに分割して、縮尺に応じて当該メッシュのサイズが異なる複数の階層の(i−1)(iは2次以上の整数)次メッシュの緯度方向及び経度方向について2の冪乗個のi(iは2以上の整数)次メッシュに分割される階層化されたメッシュ構造において、
各POIを一意に特定するPOI識別子を含みPOI情報を記憶するPOI情報記録部を検索して、各POIが位置する緯度経度及び前記POI識別子を取得するステップと、
前記ステップで取得した緯度に基づく値に第1所定値を乗算した第1値に、前記2の冪乗個のi(i=2〜n,nは2以上の整数)次メッシュの緯度方向の個数を2次〜n次まで乗算した第2値を乗算した10進整数値を2進数に変換した緯度コードを算出するステップと、
前記ステップで取得した経度から第2所定値減算した第3値に、前記2の冪乗個のi(i=2〜n,nは2以上の整数)次メッシュの経度方向の個数を2次〜n次まで乗算した第2値を乗算した10進整数値を2進数に変換した経度コードを算出するステップと、
前記緯度コードの各i(i=1〜n,nは2以上の整数)次メッシュの前記緯度方向の個数に対応するビット長の該当の2進数値及び前記経度コードの各i(i=1〜n,nは2以上の整数)メッシュの前記経度方向の個数に対応するビット長の該当の2進数値のいずれか一方を上位ビット側にし、次数の昇順に上位ビット側に結合して、パックコードに変換するステップと、
前記POI識別子及び前記パックコードをPOI検索テーブルに格納するステップと、
を具備したことを特徴とする目標メッシュに隣接するメッシュを求める方法。
【請求項7】
位置情報に基づいて、前記メッシュデータ記録部を検索して、該位置情報が示す地点が含まれる目標メッシュのメッシュ座標を取得するステップと、前記メッシュ座標に対応する目標メッシュから隣接するメッシュまでの緯度方向のメッシュ数、及び経度方向のメッシュ数を緯度方向及び経度方向に応じて加減算して隣接するメッシュのメッシュ座標を算出するステップを更に具備したことを特徴とする請求項5に記載の目標メッシュに隣接するメッシュを求める方法。
【請求項8】
第2緯度経度を取得するステップと、前記ステップで取得した第2緯度に基づく値に前記第1所定値を乗算した第1値に、前記第2値を乗算した10進整数値を2進数に変換した第2緯度コードを算出するステップと、前記ステップで取得した第2経度から前記第2所定値減算した第3値に、前記第4値を乗算した10進整数値を2進数に変換した第2経度コードを算出するステップと、前記第2緯度コード及び前記第2経度コードから成るメッシュ座標に、前記メッシュ座標に対応する前記第2緯度経度の地点が含まれる目標メッシュから隣接するメッシュまでの緯度方向のメッシュ数、及び経度方向のメッシュ数を緯度方向及び経度方向に応じて加減算して隣接するメッシュのメッシュ座標を算出するステップを更に具備したことを特徴とする請求項6記載の目標メッシュに隣接するメッシュを求める方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate