(57)【要約】【課題】小さなメモリを用いるだけで、要求された情報を即座にソート・表示するためのデータソート方法およびＰＯＩ情報表示方法および装置を提供する。【解決手段】Ｎ個のエントリデータを属性値（例えば距離）に基づいてソートするソート方法である。Ｎ個の順序を最上位より順番にＡ個（Ａ＝２）づつのブロックＢ１〜Ｂ５に分割し、着目ブロックを構成するＡ個の順位のエントリデータを属性値に基づいて正順もしくは逆順でソートし、該着目ブロックのソート結果を出力する。着目ブロックのソート結果だけでは不十分になったとき、該着目ブロックの上位または下位のブロックにおけるＡ個の順位のエントリデータを正順もしくは逆順でソートし、該ソート結果を出力する。【選択図】　　図３
2004078919.tif 000002
【特許請求の範囲】
【請求項１】
Ｎ個のエントリデータを該データの属性に基づいて所定の順序でソートするデータソート方法において、
前記Ｎ個の順序を最上位より順番にＡ個づつのブロックに分割し、上位のブロックより順番に各ブロックを構成するＡ個の順位のエントリデータを決定してソートするに際して、
（ａ）　Ａ個のエントリ位置を有するソート済バッファ部と所定数のエントリ位置を有する作業用バッファ部とで構成されるバッファを用意し、
（ｂ）　前ブロックにおけるソート結果をソート順に前記ソート済バッファ部に保存し、該ソート結果における最下位エントリデータの属性値を前回最大値として保存すると共に、ソート処理過程において該ソート済バッファ部の最後のエントリ位置に格納されるエントリデータを基準エントリとし、
（ｃ）　前記の前回最大値よりも大きく、かつ、前記基準エントリの属性値よりも小さいエントリデータを検索し、該検索されたエントリデータを前記ソート済バッファ部にロードし、
（ｄ）　該ソート済バッファ部がエントリデータでフルになったとき、該ソート済バッファ部のエントリデータを正順でソートし、
（ｅ）　前記の前回最大値よりも大きく、かつ、新たな基準エントリの属性値よりも小さいエントリデータを検索し、該検索されたエントリデータを前記作業バッファ部にロードし、
（ｆ）　前記バッファがフルになったとき、該バッファのエントリデータを正順でソートし、
（ｇ）　以後、ステップ（ｅ）のエントリデータを検索できなくなるまで上記ステップ（ｅ）〜（ｆ）を繰り返し、着目ブロックにおけるＡ個の順位のエントリデータを正順に前記ソート済バッファ部に生成する、
ことを特徴とするデータソート方法。
【請求項２】
全てのブロックのソートが完了したかどうかを判定し、完了していない場合、完了するまで前記ステップ（ｂ）〜（ｇ）の処理を繰り返すステップ、
を備えたことを特徴とする請求項１記載のデータソート方法。
【請求項３】
前記新たな基準エントリは、ステップ（ｄ）もしくはステップ（ｆ）後の前記ソート済バッファ部における最後のエントリ位置のエントリデータである、
ことを特徴とする請求項１記載のデータソート方法。
【請求項４】
ステップ（ｂ）における前記基準エントリの初期値を、Ｎ個の入力エントリデータにおけるいずれのエントリデータの属性値よりも大きな値とした、
ことを特徴とする請求項１記載のデータソート方法。
【請求項５】
Ｎ個のエントリデータを該データの属性に基づいて所定の順序でソートするデータソート方法において、
前記Ｎ個の順序を最上位より順番にＡ個づつのブロックに分割し、上位のブロックより順番に各ブロックを構成するＡ個の順位のデータを決定してソートするに際して、
（ａ）　Ａ個のエントリ位置を有するソート済バッファ部と所定数のエントリ位置を有する作業用バッファ部とで構成されるバッファを用意し、
（ｂ）　前ブロックにおけるソート結果をソート順に前記ソート済バッファ部に保存し、該ソート結果における最下位エントリデータの属性値を前回最小値として保存すると共に、ソート処理過程において該ソート済バッファ部の最後のエントリ位置に格納されるエントリデータを基準エントリとし、
（ｃ）　前記の前回最小値よりも小さく、かつ、前記基準エントリの属性値よりも大きいエントリデータを検索し、該検索されたエントリデータを前記ソート済バッファ部にロードし、
（ｄ）　該ソート済バッファ部がエントリデータでフルになったとき、該ソート済バッファ部のエントリデータを逆順でソートし、
（ｅ）　前記の前回最小値よりも小さく、かつ、新たな基準エントリの属性値よりも大きいエントリデータを検索し、該検索されたエントリデータを前記作業バッファ部にロードし、
（ｆ）　前記バッファがフルになったとき、該バッファのエントリデータを逆順でソートし、
（ｇ）　以後、前記ステップ（ｅ）のエントリデータを検索できなくなるまで上記ステップ（ｅ）〜（ｆ）を繰り返し、着目ブロックにおけるＡ個の順位のエントリデータを逆順に前記ソート済バッファ部に生成する、
ことを特徴とするデータソート方法。
【請求項６】
全てのブロックのソートが完了したかどうかを判定し、完了していない場合、完了するまで前記ステップ（ｂ）〜（ｇ）の処理を繰り返すステップ、
を備えたことを特徴とする請求項５記載のデータソート方法。
【請求項７】
前記新たな基準エントリは、ステップ（ｄ）もしくはステップ（ｆ）後の前記ソート済バッファ部における最後のエントリ位置のエントリデータである、
ことを特徴とする請求項５記載のデータソート方法。
【請求項８】
前記ステップ（ｂ）における前記基準エントリの初期値を、Ｎ個の入力エントリデータにおけるいずれのエントリデータの属性値よりも大きな値とした、
ことを特徴とする請求項５記載のデータソート方法。
【請求項９】
到達点を選定するためにＮ個のポントオブインタレスト（ＰＯＩ）の情報を所定の順序で表示するナビゲーションにおけるＰＯＩ情報表示方法において、
ＰＯＩの名称、位置、分類、住所を保存するＰＯＩ情報記憶手段を設け、
特定のＰＯＩリストを表示するためにＰＯＩの分類を特定し、
該分類のＮ個のＰＯＩを前記ＰＯＩ情報記憶手段より収集し、
Ｎ個の順序を最上位より順番にＡ個づつのブロックに分割し、着目ブロックを構成するＡ個の順位のＰＯＩを所定位置からの距離に応じて正順もしくは逆順でソートし、
該ソートされたＰＯＩのリストをソート順に表示し、
スクロール要求により表示画面上でＰＯＩリストをスクロールし、
スクロール要求に対して前記着目ブロックのＰＯＩリストでは不十分になったとき、該着目ブロックの上位または下位のブロックにおけるＡ個の順位のＰＯＩを所定位置からの距離により正順もしくは逆順でソートし、該ソートされたＰＯＩのリストをスクロール可能に表示する、
ことを特徴とするナビゲーションにおけるＰＯＩ情報表示方法。
【請求項１０】
前記正順でＰＯＩをソートするステップは、
（ａ）　Ａ個のエントリ位置を有するソート済バッファ部と所定数のエントリ位置を有する作業用バッファ部とで構成されるバッファを用意し、
（ｂ）　前ブロックにおけるソート結果を正順に前記ソート済バッファ部に保存し、該ソート結果における最下位エントリであるＰＯＩまでの距離を前回最大値として保存すると共に、ソート処理過程において該ソート済バッファ部の最後のエントリ位置に格納されるＰＯＩを基準エントリとし、
（ｃ）　前記の前回最大値よりも大きく、かつ、前記基準エントリのＰＯＩまでの距離よりも小さいＰＯＩを検索し、該検索されたＰＯＩを前記ソート済バッファ部にロードし、
（ｄ）　該ソート済バッファ部がＰＯＩでフルになったとき、該ソート済バッファ部のＰＯＩをＰＯＩまでの距離により正順でソートし、
（ｅ）　前記の前回最大値よりも大きく、かつ、新たな基準エントリとなったＰＯＩまでの距離よりも小さいＰＯＩを検索し、該検索されたＰＯＩを前記作業バッファ部にロードし、
（ｆ）　前記バッファがＰＯＩでフルになったとき、該バッファのＰＯＩを正順でソートし、
（ｇ）　以後、前記ステップ（ｅ）のＰＯＩを検索できなくなるまで上記ステップ（ｅ）〜（ｆ）を繰り返し、着目ブロックにおけるＡ個の順位のＰＯＩを正順に前記ソート済バッファ部に生成する、
ことを特徴とする請求項９記載のナビゲーションにおけるＰＯＩ情報表示方法。
【請求項１１】
全てのブロックのソートが完了したかどうかを判定し、完了していない場合、完了するまで前記ステップ（ｂ）〜（ｇ）の処理を繰り返すステップ、
を備えたことを特徴とする請求項１０記載のＰＯＩ情報表示方法。
【請求項１２】
前記新たな基準エントリは、ステップ（ｄ）もしくはステップ（ｆ）後の前記ソート済バッファ部における最後のエントリ位置のＰＯＩである、
ことを特徴とする請求項９記載のＰＯＩ情報表示方法。
【請求項１３】
前記ステップ（ｂ）における前記基準エントリの初期値を、Ｎ個のＰＯＩのうち、いずれのＰＯＩまでの距離よりも大きな値とした、
ことを特徴とする請求項９記載のＰＯＩ情報表示方法。
【請求項１４】
前記逆順でＰＯＩをソートするステップは、
（ａ）　Ａ個のエントリ位置を有するソート済バッファ部と所定数のエントリ位置を有する作業用バッファ部とで構成されるバッファを用意し、
（ｂ）　前ブロックにおけるソート結果を逆順に前記ソート済バッファ部に保存し、該ソート結果における最下位エントリであるＰＯＩまでの距離を前回最小値として保存すると共に、ソート処理過程において該ソート済バッファ部の最後のエントリ位置に格納されるＰＯＩを基準エントリとし、
（ｃ）　前記の前回最小値よりも小さく、かつ、前記基準エントリのＰＯＩまでの距離よりも大きいＰＯＩを検索し、検索されたＰＯＩを前記ソート済バッファ部にロードし、
（ｄ）　該ソート済バッファ部がＰＯＩでフルになったとき、該ソート済バッファ部のＰＯＩを逆順でソートし、
（ｅ）　前記の前回最小値よりも小さく、かつ、新たな基準エントリのＰＯＩまでの距離よりも大きいＰＯＩを検索し、検索されたＰＯＩを前記作業バッファ部にロードし、
（ｆ）　前記バッファがＰＯＩでフルになったとき、該バッファのＰＯＩを逆順でソートし、
（ｇ）　以後、前記ステップ（ｅ）のＰＯＩを検索できなくなるまで上記ステップ（ｅ）〜（ｆ）を繰り返し、着目ブロックにおけるＡ個の順位のＰＯＩを逆順に前記ソート済バッファ部に生成する、
ことを特徴とするナビゲーションのＰＯＩ情報表示方法。
【請求項１５】
全てのブロックのソートが完了したかどうかを判定し、完了していない場合、完了するまで前記ステップ（ｂ）〜（ｇ）の処理を繰り返すステップ、
を備えたことを特徴とする請求項１４記載のＰＯＩ情報表示方法。
【請求項１６】
前記新たな基準エントリは、ステップ（ｄ）もしくはステップ（ｆ）後の前記ソート済バッファ部における最後のエントリ位置のＰＯＩである、
ことを特徴とする請求項１４記載のＰＯＩ情報表示方法。
【請求項１７】
前記ステップ（ｂ）における前記基準エントリの初期値を、Ｎ個のＰＯＩのうち、いずれのＰＯＩまでの距離よりも小さな値とした、
ことを特徴とする請求項１４記載のＰＯＩ情報表示方法。
【請求項１８】
到達点を選定するためにＮ個のポントオブインタレスト（ＰＯＩ）の情報を所定の順序で表示するナビゲーションにおけるＰＯＩ表示装置において、
ＰＯＩの名称、位置、分類、住所を保存するＰＯＩ情報記憶手段、
特定のＰＯＩリストを表示するためにＰＯＩの分類を特定する手段、
該分類のＮ個のＰＯＩを前記ＰＯＩ情報記憶手段より収集する手段、
Ｎ個の順序を最上位より順番にＡ個づつのブロックに分割し、着目ブロックを構成するＡ個の順位のＰＯＩを所定位置からの距離に応じて正順もしくは逆順でソートする手段、
該着目ブロックの距離に応じてソートされたＰＯＩのリストをスクロール可能に表示する手段、
を備え、スクロール要求に対して前記着目ブロックのＰＯＩリストでは不十分になったとき、前記ソート手段は、該着目ブロックの上位または下位のブロックにおけるＡ個の順位のＰＯＩを所定位置からの距離に応じて正順もしくは逆順でソートし、前記表示手段は該ソートされたＰＯＩのリストをスクロール可能に表示する、
ことを特徴とするナビゲーションのＰＯＩ情報表示装置。
【請求項１９】
前記正順でＰＯＩをソートする手段は、
Ａ個のエントリ位置を有するソート済バッファ部と所定数のエントリ位置を有する作業用バッファ部とで構成されるバッファ、
前ブロックにおけるソート結果を正順に前記ソート済バッファ部に保存し、該ソート結果における最下位エントリであるＰＯＩまでの距離を前回最大値として保存すると共に、ソート処理過程において該ソート済バッファ部の最後のエントリ位置に格納されるＰＯＩを基準エントリとする手段、
前記の前回最大値よりも大きく、かつ、前記基準エントリのＰＯＩまでの距離よりも小さいＰＯＩを検索し、該検索されたＰＯＩを前記ソート済バッファ部にロードする手段、
該ソート済バッファ部がＰＯＩでフルになったとき、該ソート済バッファ部のＰＯＩを正順でソートする手段、
前記の前回最大値よりも大きく、かつ、新たな基準エントリとなったＰＯＩまでの距離よりも小さいＰＯＩを検索し、該検索されたＰＯＩを前記作業バッファ部にロードする手段、
前記バッファがＰＯＩでフルになったとき、該バッファのＰＯＩを正順でソートする手段、
を備え、以後、前記の前回最大値よりも大きく、かつ、新たな基準エントリとなったＰＯＩまでの距離よりも小さいＰＯＩが検索できなくなるまで上記検索、検索されたＰＯＩの前記作業バッファ部へのロード、バッファにおけるＰＯＩのソート処理を繰返し、着目ブロックにおけるＡ個の順位のＰＯＩを正順に前記ソート済バッファ部に生成する、
ことを特徴とする請求項１８記載のナビゲーションのＰＯＩ情報表示装置。
【請求項２０】
前記逆順でＰＯＩをソートする手段は、
Ａ個のエントリ位置を有するソート済バッファ部と所定数のエントリ位置を有する作業用バッファ部とで構成されるバッファ、
前ブロックにおけるソート結果を逆順に前記ソート済バッファ部に保存し、該ソート結果における最下位エントリであるＰＯＩまでの距離を前回最小値として保存すると共に、ソート処理過程において該ソート済バッファ部の最後のエントリ位置に格納されるＰＯＩを基準エントリとする手段、
前記の前回最小値よりも小さく、かつ、前記基準エントリのＰＯＩまでの距離よりも大きいＰＯＩを検索し、検索されたＰＯＩを前記ソート済バッファ部にロードする手段、
該ソート済バッファ部がＰＯＩでフルになったとき、該ソート済バッファ部のＰＯＩを逆順でソートする手段、
前記の前回最小値よりも小さく、かつ、新たな基準エントリのＰＯＩまでの距離よりも大きいＰＯＩを検索し、検索されたＰＯＩを前記作業バッファ部にロードする手段、
前記バッファがＰＯＩでフルになったとき、該バッファのＰＯＩを逆順でソートする手段、
を備え、以後、前記の前回最小値よりも小さく、かつ、新たな基準エントリとなったＰＯＩまでの距離よりも大きいＰＯＩが検索できなくなるまで上記検索、該検索されたＰＯＩの前記作業バッファ部へのロード、バッファにおけるＰＯＩのソート処理を繰返し、着目ブロックにおけるＡ個の順位のＰＯＩを逆順に前記ソート済バッファ部に生成する、
ことを特徴とする請求項１８記載のナビゲーションのＰＯＩ情報表示装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データソート方法およびＰＯＩ情報表示方法および装置に係わり、特に、小さなメモリを用いるだけで、要求された情報を即座にソート・表示するためのデータソート方法およびＰＯＩ情報表示方法および装置に関する。
【０００２】
【従来の技術】
データソートは重要であり、パソコン、ファックス、車両ナビゲーションシステム等の消費者電子製品と同様に、データ処理システムにおいてよく用いられている。ナビゲーションシステムにおいては、例えば、ＤＶＤ（デジタル多用途ディスク）といったマップデータ記憶装置が、所定グループにより分類された多数の場所を示すポイントオブインタレスト（ＰＯＩ）データを含むマップデータを記憶する。ＰＯＩ分類（ＰＯＩカテゴリー）の例としては、ＡＴＭ、銀行、レストラン、ガソリンスタンド、スーパーマーケット等がある。
【０００３】
使用者がレストランといった特定のタイプのＰＯＩを見ることを要求した場合、ナビゲーションシステムは所定位置、たとえば現使用者（車両）位置からの距離に応じてソートされたレストランのリストを表示する。かかる場合１，０００個程度の多数のＰＯＩを同時に距離順にソートしなければならないため、ナビゲーションシステムでは、結果を表示するまで数秒から１０秒以上といった比較的長い時間がかかる。
【０００４】
データソートは図１に示すようなコンピュータシステムにより行う。この例では、コンピュータは、データおよびアドレスを転送するバス１１、プログラムを記憶する主メモリ１２、プログラムを実行するプロセッサ１３、キーボード１５のような入力機器、データを一時記憶するバッファメモリ１７、ディスプレイ１８で構成される。本発明のソート方法はこのようなコンピュータシステムで実施される。
【０００５】
ソート手順としては多くのものが知られている。一般的に、多数のエントリをもつデータアレイをソートする場合、ソート手順に対して、このような多数のエントリに対応した大容量のバッファメモリが必要とされる。さらに、短時間にデータソートを完了するためには、プロセッサは高速度操作が可能なものでなければならない。
【０００６】
図２Ａ〜２Ｃは、入力データアレイ、ソート手順に用いられるバッファメモリ、ソートされたデータアレイをそれぞれ示す概略図である。この例は、多数のエントリをもつ入力データが同時にソートされる、すなわち全ソート結果が同時に作成されなければならないようなケースを示す。図２Ａにおける入力データアレイは１０個のエントリをもち、それぞれのエントリの属性値（たとえば距離、重量、長さなどの物理量）が数字とともに示されている。
【０００７】
こういったエントリがナビゲーションシステムで用いられるＰＯＩ（ポイントオブインタレスト）データであるようなケースでは、各エントリの属性値は、例えば、現車両位置といった特定位置から各ＰＯＩまでの距離を示す。図２Ｃのデータアレイは、図２Ａのデータアレイにおける要素が最小数（例えば、最短距離）から最大数（例えば、最大距離）までソートされたソートプロセスの結果である。
【０００８】
図２Ａの入力データをソートするためには、入力データを図２Ｂのバッファメモリでソートし、ソート手順の間に多くの回数のデータ比較を繰り返さなければならない。バッファメモリは、入力データアレイを記憶するための十分な容量を全体としてもたなければならない。例えば、ナビゲーションシステムに関するＰＯＩ情報をソートする場合、ＰＯＩ数が１，０００程度であれば、少なくとも１，０００個の記憶位置の記憶容量をもつバッファメモリを用いなければならない。さらに、多数の比較を行うことによりこのような大きなサイズのデータを処理するためには、ソートプロセスに長時間かかる。
【０００９】
入力データのエントリ数がＮであり、最もよく用いられているソート方法であるクイックソート法により入力データがソートされた場合、以下に示す数のデータ比較が必要なことが証明されている：
比較数（平均）＝Ｎｌｎ（Ｎ）
比較数（最悪ケース）＝Ｎ（Ｎ−１）／２
ここでｌｎは自然対数である。
【００１０】
【発明が解決しようとする課題】
したがって、Ｎが１，０００であった場合、比較の数は平均ケースにおいて約６，９００である。最悪ケースの場合（入力リストがソートの最終結果の逆順の場合）、比較の数は約５００，０００である。このように、従来のソート方法では処理時間が長くかかり、大きなメモリ容量のバッファメモリが必要になる。したがって、大きなサイズのバッファメモリおよび／または高速度プロセッサを必要とせずにデータのソートをすばやく行うことのできる新たなデータソート方法が要望されている。
【００１１】
したがって、本発明の目的は、小さなメモリを使用しながら高速度で入力データアレイのデータをソートすることの可能なデータソート方法を提供することである。
【００１２】
本発明の他の目的は、所定の順番でソートされたデータエントリをそれぞれがもつ一連のブロックを作成することの可能なデータソート方法を提供することである。
【００１３】
さらに本発明の他の目的は、小さなメモリを使用しながら高速度でＰＯＩ（ポイントオブインタレスト）データをソートする、本発明のソート方法を具体化するナビゲーション方法およびシステムを提供することである。
【００１４】
さらに本発明の他の目的は、現行の表示サイズおよび即座の表示スクロールに対して適当な量のＰＯＩデータをすばやくかつ正確に検索・ソートするナビゲーション方法およびシステムを提供することである。
【００１５】
【課題を解決するための手段】
本発明の第１は、複数ブロックに対して特定の順番で入力データアレイをソートするためのデータソート方法である。このソート方法は、前記Ｎ個の順序を最上位より順番にＡ個づつのブロックに分割し、上位のブロックより順番に各ブロックを構成する順位のデータを決定してソートするに際して、（ａ）　Ａ個のエントリ位置を有するソート済バッファ部と所定数のエントリ位置を有する作業用バッファ部とで構成されるバッファを用意し、（ｂ）　前ブロックにおけるソート結果を正順に前記ソート済バッファ部に保存し、該ソート結果における最下位エントリの属性値を前回最大値として保存すると共に、ソート処理過程において該ソート済バッファ部の最後のエントリ位置に格納されるエントリデータを基準エントリとし、（ｃ）　前記の前回最大値よりも大きく、かつ、前記基準エントリの属性値よりも小さいエントリデータを検索し、検索されたエントリデータを前記ソート済バッファ部にロードし、（ｄ）　該ソート済バッファ部がエントリデータでフルになったとき、該ソート済バッファ部のエントリデータを正順でソートし、（ｅ）　前記の前回最大値よりも大きく、かつ、新たな基準エントリの属性値よりも小さいエントリデータを検索し、検索されたエントリデータを前記作業バッファ部にロードし、（ｆ）　前記バッファがフルになったとき、該バッファのエントリデータを正順でソートし、（ｇ）　以後、ステップ（ｅ）のエントリデータを検索できなくなるまで上記ステップ（ｅ）〜（ｆ）を繰り返し、着目ブロックにおけるＡ個の順位のエントリデータを正順に前記ソート済バッファ部に生成する。なお、上記正順でのソートと逆の条件を用いることで、逆順でのソートも可能である。
【００１６】
第１の発明のソート方法によれば、ソート時間と、入力データをソートするためのメモリサイズを大幅に縮小することができる。すなわち、第１の発明のソート方法によれば、小さなメモリを使用しながら高速度で入力データアレイのデータをソートすることが可能となる。
【００１７】
本発明の第２は、到達点を選定するためにＮ個のポントオブインタレスト（ＰＯＩ）の情報を所定の順序で表示するナビゲーションにおけるＰＯＩ情報表示方法である。このＰＯＩ情報表示方法においては、ＰＯＩの名称、位置、分類、住所を保存するＰＯＩ情報記憶手段を設け、特定のＰＯＩリストを表示するためにＰＯＩの分類を特定し、該分類のＮ個のＰＯＩを前記ＰＯＩ情報記憶手段より収集し、Ｎ個の順序を最上位より順番にＡ個づつのブロックに分割し、着目ブロックを構成するＡ個の順位のＰＯＩを所定位置からの距離に応じて正順もしくは逆順でソートし、該着目ブロックの距離に応じてソートされたＰＯＩのリストを表示し、スクロール要求に応じて表示画面上でＰＯＩリストをスクロールし、スクロール要求に対して前記着目ブロックのＰＯＩリストでは不十分になったとき、該着目ブロックの上位または下位のブロックにおけるＡ個の順位のＰＯＩを所定位置からの距離に応じて正順もしくは逆順でソートし、該ソートされたＰＯＩのリストをスクロール可能に表示する。なお、正順或いは逆順にＰＯＩをソートするには、前述のソート方法により行う。
【００１８】
第２の発明のＰＯＩ情報表示方法によれば、第１の発明のソート方法を用いることにより、即座に必要な数のソート結果を作成して表示することが可能になる。また、第２の発明のＰＯＩ情報表示方法によれば、大きなメモリあるいは高性能のコンピュータを必要とすることなく、ＰＯＩ情報を即座にソート・表示することが可能になる。
【００１９】
また、所定数づつの順位のデータをユーザが必要する都度、最上位より順番に高速に決定して表示するものであるため、ユーザに何等の不満足さを感じさせることはない。
【００２０】
【発明の実施の形態】
ここで本発明のデータソート方法を、添付の図面を参照しながら、より詳細に説明する。さらに、本発明のデータソート方法を用いたナビゲーションシステムについても、添付の図面を参照しながら詳細に説明する。
【００２１】
本発明は車両ナビゲーションシステムに関して記述されるが、本発明はこの特定の応用例だけに限定されるのではないということに注意が必要である。例えば、本発明は携帯（可搬式）ナビゲーションシステム、個人情報管理ツール（ＰＤＡ）といった携帯式データ端末、ナビゲーション機能付ラップトップコンピュータ等にも応用が可能である。
【００２２】
本発明のデータソート方法において、入力データは、一連の小さなブロックのシリーズにソートされる。なお、各ブロックはソートされた全結果の一部分を示す。１つのブロックに対するデータソートプロセスは前のブロックのソート結果を用いて実施される。
【００２３】
図３Ａ〜３Ｅは本発明のデータソート方法の基本的概念を示す説明図であり、図３ＡはＮ個の入力エントリデータ（入力データアレイ）を示し、図３Ｂはソート手順に対して用いられるバッファメモリの構造を示し、図３ＣはＮ（＝１０）個の順序を最上位より順番にＡ（＝２）個づつのブロックに分割したときの各ブロックのソート後の状態を示し、図３Ｄは最終のソート結果を示し、図３Ｅは図３Ｄのソート結果を逆順でソートした最終結果を示す。
【００２４】
データソートの実際の応用において、同時に完全な全てのソート結果を必ずしも必要とせず、ソート結果の一部が高速度で得られるのであれば、ソート結果の一部だけでも十分である場合がある。本発明のデータソート方法はこういった応用例においてとりわけ有用である。
【００２５】
例えば、ナビゲーションシステムにおいて、ナビゲーションシステムの表示画面が数個から１０個程度のＰＯＩだけの情報表示に限られているため、距離に応じてソートされた数百から１，０００個程度のＰＯＩといった多数のエントリを一時に準備する必要はないということを本発明者は見出した。
【００２６】
そのため、ソート作業を高速度で行うことができるのであれば、実際の使用に対して所定ブロックに属する順位のＰＯＩであって、距離に応じてソートされた一部ＰＯＩ（例えば、数十個のＰＯＩ）が得られれば十分である。そして、使用者が画面を連続的にスクロールして追加のＰＯＩが必要になった場合、ナビゲーションシステムは、着目ブロックのＰＯＩがなくなる前に次のブロックに属する順位のＰＯＩをソート・作成する。
【００２７】
図３Ａ〜３Ｅの例に関して、本発明のソート方法は以下に示すように実行される。入力データが１０個のエントリをもつ場合、図３Ｃに示すように１０個の順序（第１位〜第１０位）を最上位より順番に２個づつの５ブロックＢ１〜Ｂ５に分割し、上位のブロックより順番に各ブロックを構成する順位のデータを決定してソートする。
図３Ａに示す入力データアレイは図２Ａと同じものである。図３Ｄ（正順でのソート）もしくは図３Ｅ（逆順でのソート）のソート結果を出力するように、各エントリデータの属性を示す数字（例えば、距離）の順番で入力データをソートする。このソート方法ではまず図３Ｂに示すバッファを作成する。
【００２８】
この場合、図３Ｂのバッファは、Ａ（＝２）個のエントリに対するスペース（エントリ位置）をもつソート済バッファ（ｓｏｒｔｅｄ　ｂｕｆｆｅｒ）５０１と、２個のエントリに対するスペースをもつ作業バッファ（ｗｏｒｋｉｎｇ　ｂｕｆｆｅｒ）５０２で構成されている。
なお、各ブロックが３個の順位を持つのが望ましいのであれば、ソート済バッファ５０１と作業バッファ５０２のそれぞれは３個のエントリに対するスペース（エントリ位置）をもたなければならない。つまり、ソート済バッファおよび作業バッファそれぞれのエントリ数は各ブロックＢ１〜Ｂ５におけるエントリ数（順位の数）と等しくなるよう設定する。
【００２９】
正順でのソートにおいては、まず順番［０，１］を示す本発明のソートプロセスで図３ＣのブロックＢ１を作成する。次に、ブロックＢ１のソート結果を用いて本発明のソートプロセスにより、順番［２，３］を示す図３Ｃの次のブロックＢ２を作成する。さらに、ブロックＢ２の結果を用いて本発明のソートプロセスにより、順番［４，５］を示す図３Ｃの次のブロックＢ３を作成する。このプロセスを繰り返すことにより、図３Ｄに示す全ソート結果を形成する一連のブロックＢ１〜Ｂ５を作成する。ソートを逆順で行った場合、図３Ｅに示す全ソート結果が得られる。
【００３０】
上記のナビゲーションシステムにおけるＰＯＩのソート応用例において、ナビゲーションシステムは、ブロックＢ１が作成されるとすぐにソート結果を用いる。次のソート結果が必要な場合、ブロックＢ１の結果を用いながらナビゲーションシステムがブロックＢ２を作成する。各ブロックには少数のエントリしかないため、各ブロックのソートプロセスは高速度で行われ、使用者は、ナビゲーションシステムにおいてソート操作が非連続で行われていることに気づかない。
【００３１】
本発明におけるソート方法において、入力データにおけるエントリ数がＮと仮定すると、各ブロックのエントリ数（順位数）をＸ／２とすると、ブロック総数は２Ｎ／Ｘとなる。ソートアルゴリズムは合計エントリ数がＸのバッファ（ソート済バッファと作業バッファ）を用い、ここで初めのＸ／２はソート済バッファ５０１のエントリ数を示し、後のＸ／２は作業バッファ５０２のエントリ数を示す。この配置において、クイックソート法を用いてバッファ中のエントリをソートすると、次の数のデータ比較が必要になる：
比較（平均）＝Ｘｌｎ（Ｘ）
比較（最悪ケース）＝Ｘ（Ｘ−１）／２
ここでｌｎは自然対数である。
【００３２】
したがって、Ｘが６０の場合、比較の数は平均ケースの場合、約２４６になる。最悪ケースの場合、比較の数は約１，８００になる。
【００３３】
入力データがＮ個のエントリをもち、上記のように一時にＸエントリをソートするためにはソート操作をＮ／Ｘ回繰り返す必要がある。したがって、Ｎエントリのソートを行うために必要なデータ比較数は：
比較（平均）＝Ｎ／Ｘ・Ｘｌｎ（Ｘ）＝Ｎｌｎ（Ｘ）
比較（最悪ケース）＝Ｎ／Ｘ・｛Ｘ（Ｘ−１）／２｝＝Ｎ（Ｘ−１）／２
ここでｌｎは自然対数である。
【００３４】
ここでＮが１，０００でＸが６０の場合、比較の数は平均ケースで約４，１００になる。最悪ケースでは比較の数は約３０，０００になる。
【００３５】
前の説明の通り、従来技術においては、Ｎが１，０００の場合、平均ケースで６，９００の比較が必要であり、最悪ケースで５００，０００の比較が必要である。本発明においては、各ブロックのソート結果は２４６の比較で作成することができ、全ソート結果は、従来技術での６，９００に比較して、平均で４，１００の比較で作成が可能である。このように本発明のソートアルゴリズムは比較の数が少なくてすむ。特に、小さなブロックのソート結果が有用な応用例の場合、本発明は非常に少ない比較数（例えば２４６）のみですみ、小さなバッファメモリしか必要としないため、非常に効果的である。
【００３６】
上記の説明においては、ソート済バッファのエントリ数をＸ／２、作業バッファのエントリ数をＸ／２、すなわちソート済バッファと作業バッファのサイズは同じであると仮定している。しかしながら、本発明においては、各バッファのエントリ数は異なっていてもよい。したがって、ソート済バッファのエントリ数をＡ、作業バッファのエントリ数をＢとすると、全バッファのエントリはＸ＝Ａ＋Ｂになる。
【００３７】
図４Ａ〜４Ｉは、図３Ｃに示す２個のエントリ（順位）をもつソートされたブロックＢ１を作成するための、本発明におけるデータソートプロセスを示す。まず、２個のエントリに対するソート済バッファ５０１と２個のエントリに対する作業バッファ５０２、すなわち合計４個のエントリによりコンフィギュレーションされたバッファ５００を図４Ａのように作成する。ソート済バッファ５０１の影部分は、基準エントリを記憶する部分で、基準エントリよりも小さい（正順ソートの場合）あるいは大きい（逆順ソートの場合）のエントリを検索するための基準エントリを置くためのものである。
【００３８】
始め、図４Ｂに示すとおり、「９９」といった予想されたエントリのいずれよりも大きな最大数（例えば、最大距離）が、ソート済バッファ５０１の影部分（第２スペースもしくは最終エントリ位置）に初期値として割り当てられる。図４Ｃのプロセスにおいて、「前回最大」値よりも大きく、基準エントリ（影部分のエントリ）よりも小さなデータエントリが、ソート済バッファ内にロードされる。「前回最大」値とは前のソート結果における最大のエントリを意味する。前のソートがないため、「前回最大」値は「−１」に設定される。入力データ（図３Ａ）の最初のデータ「５」は「−１」よりも大きく、「９９」よりも小さいため、これは上記の条件を満たす。したがってデータエントリ「５」は、ソート済バッファの第１スペースにロードされる。次のデータ「３」も上記の条件を満たすため、データエントリ「３」は、ソート済バッファの第２スペースにロードされる。
【００３９】
次のプロセスにおいて、ソート済バッファ５０１がフルであるため、ソート済バッファのエントリを図４Ｄに示すとおりソートする。したがって基準エントリ（影部分の数）はここで「５」に変わる。その後、図４Ｅにおいて、作業バッファ５０２に対しても図４Ｃのプロセスと同様のプロセスが実施される。すなわち、「前回最大」値よりも大きく、基準エントリ「５」よりも小さなデータエントリが作業バッファにロードされる。入力データ（図３Ａ）の次のエントリ「９」は基準エントリ「５」よりも小さくないため、これは上記の条件を満たさない。データ「２」は「−１」（前回最大）よりも大きく、基準エントリ「５」よりも小さいため、データエントリ「２」は条件を満たし、作業バッファの第１スペースにロードされる。データエントリ「８」は条件を満たさない。しかしデータエントリ「１」は条件を満たし、作業バッファの第２スペースにロードされる。
【００４０】
バッファ（ソート済バッファ５０１と作業バッファ５０２）がフルの場合、図４Ｆに示すとおり全エントリをソートする。このように、ここで基準エントリ（影部分における数）が「２」に変わる。その後、図４Ｇにおいて、作業バッファに対して図４Ｅのプロセスと同様のプロセスが行われる。すなわち、「−１」（前回最大）よりも大きく、基準エントリ「２」よりも小さいデータエントリが作業バッファにロードされる。「０」だけが条件を満たすことができるため、データエントリ「０」が作業バッファの第１スペースにロードされる。他のエントリは条件を満たさないため、データエントリプロセスは終了になる。その後、全エントリが図４Ｈのようにソートされる。ソート済バッファ中の図４Ｉのデータ［０，１］が戻され、図３ＣのブロックＢ１のソートが完了する。なお、前回最大値は１になる。
【００４１】
図５Ａ〜５Ｉは、図３Ｃに示すソートされたブロックＢ２を作成するための、本発明におけるデータソートプロセスを示す。まず、２個のエントリに対するソート済バッファ５０１と２個のエントリに対する作業バッファ５０２、すなわち合計４個のエントリによりコンフィギュレーションされたバッファを図５Ａのように作成する。ソート済バッファの影部分は、基準エントリを記憶する部分で、基準エントリよりも小さい（正順ソートの場合）あるいは大きい（逆順ソートの場合）他のエントリを検索するためのものである。
【００４２】
始め、図５Ｂに示すとおり、「９９」といった最大数（例えば、最大距離）が、ソート済バッファの影部分（第２スペース）に割り当てられる。図５Ｃのプロセスにおいて、「前回最大」値よりも大きく、基準エントリ（影部分のエントリ）よりも小さなデータエントリが、ソート済バッファ内にロードされる。図４Ａ〜４Ｉに示す前のソートプロセスの結果に示すとおり、このケースでの「前回最大」は「１」であり、前のソート結果において最大のエントリになる。したがって、エントリ「０」と「１」は条件を満たさない。
【００４３】
データエントリプロセスは図５Ｃに示すとおり、上記例と同様の方式で開始される。入力データ（図３Ａ）における第１のデータ「５」は「１」（前回最大）よりも大きく、「９９」よりも小さいため、上記条件を満たす。したがって、データエントリ「５」は、ソート済バッファの第１スペースにロードされる。次のデータ「３」も上記条件を満たすため、データエントリ「３」は、ソート済バッファの第２スペースにロードされる。
【００４４】
次のプロセスにおいて、ソート済バッファ５０１がフルであるため、ソート済バッファ中のエントリが図５Ｄに示すとおりソートされる。したがって、ここで基準エントリ（影部分の番号）が「５」に変わる。その後、図５Ｅにおいて、図５Ｃのプロセスと同様のプロセスが作業バッファ５０２に対して実施される。すなわち、「前回最大」値よりも大きく、基準エントリ「５」よりも小さいデータエントリが作業バッファにロードされる。入力データ（図３Ａ）の次のエントリ「９」は基準エントリ「５」よりも小さくないため、これは上記条件を満たさない。データ「２」は「１」（前回最大）よりも大きく、基準エントリ「５」よりも小さいため、データエントリ「２」は条件を満たし、作業バッファの第１スペースにロードされる。データエントリ「８」と「６」は条件を満たさない。しかし、データエントリ「４」は条件を満たし、作業バッファの第２スペースにロードされる。
【００４５】
バッファがフルの場合、全エントリは図５Ｆに示すとおりソートされる。したがって、ここで基準エントリ（影部分の番号）が「３」に変わる。その後、図５Ｇにおいて、図５Ｅのプロセスと同様のプロセスが作業バッファに対して実施される。すなわち、「１」（前回最大）よりも大きく、基準エントリ「３」よりも小さいデータエントリは作業バッファに対してロードされる。条件を満たすエントリがないため、データエントリプロセスは終了になる。その後、全エントリが図５Ｈのようにソートされる。ソータされたバッファ中の図５Ｉのデータ［２，３］が戻され、図３ＣのブロックＢ２のソートが完了する。なお、前回最大値は３になる。
【００４６】
図６Ａ〜６Ｉは、図３Ｃに示すソートされたブロックＢ３を作成するための、本発明におけるデータソートプロセスを示す。まず、２個のエントリに対するソート済バッファ５０１と２個のエントリに対する作業バッファ５０２、すなわち合計４個のエントリによりコンフィギュレーションされたバッファ５００を図６Ａのように作成する。ソート済バッファ５０１の影部分は、基準エントリを記憶する部分で、基準エントリよりも小さい（正順ソートの場合）あるいは大きい（逆順ソートの場合）他のエントリを検索するためのものである。
【００４７】
始め、図６Ｂに示すとおり、「９９」といった最大数（例えば、最大距離）が、ソート済バッファ５０１の影部分（第２スペース）に初期値として割り当てられる。図６Ｃのプロセスにおいて、「前回最大」値よりも大きく、基準エントリ（影部分のエントリ）よりも小さなデータエントリが、ソート済バッファ内にロードされる。図５Ａ〜５Ｉに示す前のソートプロセスの結果に示すとおり、このケースでの「前回最大」は「３」であり、前のソート結果において最大のエントリになる。したがって、エントリ「０」、「１」、「２」、「３」は条件を満たさない。
【００４８】
データエントリプロセスは図６Ｃに示すとおり、上記例と同様の方式で開始される。入力データ（図３Ａ）における第１のデータ「５」は「３」（前回最大）よりも大きく、「９９」よりも小さいため、上記条件を満たす。したがって、データエントリ「５」は、ソート済バッファの第１スペースにロードされる。次のデータ「９」も上記条件を満たすため、データエントリ「９」は、ソート済バッファの第２スペースにロードされる。
【００４９】
次のプロセスにおいて、ソート済バッファのエントリ５０１が図６Ｄに示すとおりソートされる。したがって、ここで基準エントリ（影部分の番号）が「９」に変わる。その後、図６Ｅにおいて、図６Ｃのプロセスと同様のプロセスが作業バッファ５０２に対して実施される。すなわち、「３」（前回最大）よりも大きく、基準エントリ「９」よりも小さいデータエントリが作業バッファにロードされる。入力データ（図３Ａ）の次のエントリ「８」は「３」（前回最大）よりも大きく、基準エントリ「９」よりも小さいため、これは上記条件を満たす。データ「６」は「３」（前回最大）よりも大きく、基準エントリ「９」よりも小さいため、データエントリ「６」も作業バッファにロードされる。
【００５０】
バッファがフルの場合、全エントリは図６Ｆに示すとおりソートされる。したがって、ここで基準エントリ（影部分の番号）が「６」に変わる。その後、図６Ｇにおいて、図６Ｅのプロセスと同様のプロセスが作業バッファ５０２に対して実施される。すなわち、「３」（前回最大）よりも大きく、基準エントリ「６」よりも小さいデータエントリは作業バッファに対してロードされる。「４」は条件を満たすため、データエントリ「４」は作業バッファの第１スペースにロードされる。他のエントリが条件を満たさないため、データエントリプロセスは終了となる。その後、全エントリが図６Ｈのようにソートされる。ソータされたバッファ中の図６Ｉのデータ［４，５］が戻され、図３Ｃのブロック３のソートが完了する。なお、前回最大値は５となる。
【００５１】
こういった方法により、図３ＣにおいてソートされたブロックＢ４、Ｂ５も作成される。したがって、本発明におけるソート方法により図３Ｄの全ソート結果が作成される。各ブロックＢ１〜Ｂ５について簡単に述べた上記手順は、前のソート手順においてすでに戻された番号よりも小さい数字２つを見出し、この２つの番号を正順でソートするためのものである。これを行うため、エントリが（１）「前回最大」値よりも大きく、（２）基準エントリよりも小さいかどうかについての条件にしたがってエントリが選定される。
【００５２】
本発明において、上記とは逆の条件、すなわちエントリが（１）「前回最小」値よりも小さく、（２）基準エントリよりも大きいかどうかという条件を用いることにより、逆順でのデータソートも可能である。図７Ａ〜７Ｉは、図３Ｅに示す逆順でソートされた結果のブロックを作成するための、本発明におけるデータソートプロセスを示す。この例では、順位［９．８］の最上位ブロックＢ１がすでにソートされて作成されていると仮定している。したがって、図７Ａ〜７Ｉの例は、図３Ｅにおける順位［７，６］をもつブロックＢ２をソート、作成するためのプロセスに対するものである。
【００５３】
まず、２個のエントリに対するソート済バッファ５０１と２個のエントリに対する作業バッファ５０２、すなわち合計４個のエントリによりコンフィギュレーションされたバッファ５００を図７Ａのように作成する。ソート済バッファの影部分は、基準エントリを記憶する部分で、基準エントリよりも小さい（正順ソートの場合）あるいは大きい（逆順ソートの場合）他のエントリを検索するための基準エントリを置くためのものである。
【００５４】
始めにおいて、図７Ｂに示すとおり、「−１」といった予想されたエントリのいずれよりも小さな最小数（例えば、最小距離）が、ソート済バッファ５０１の影部分（第２スペースあるいは最終のエントリ位置）に割り当てられる。図７Ｃのプロセスにおいて、「前回最小値」よりも小さく、基準エントリ（影部分のエントリ）よりも大きなデータエントリが、ソート済バッファ内にロードされる。前のソートプロセスの結果に示すとおり、このケースでの「前回最小」は「８」である。したがって、エントリ「９」、「８」は条件を満たさない。
【００５５】
データエントリプロセスは図７Ｃに示すとおり、図４〜６の上記例と逆の方式で開始される。入力データ（図３Ａ）における第１のデータ「５」は「８」（前回最小）よりも小さく、「−１」よりも大きいため、上記条件を満たす。したがって、データエントリ「５」は、ソート済バッファ５０１の第１スペースにロードされる。次のデータ「３」も上記条件を満たすため、データエントリ「３」は、ソート済バッファの第２スペースにロードされる。
【００５６】
次のプロセスにおいて、ソート済バッファ５０１がフルであるため、ソート済バッファのエントリが図７Ｄに示すとおり逆順でソートされる。したがって、ここで基準エントリ（影部分の番号）が「３」に変わる。その後、図７Ｅにおいて、図７Ｃのプロセスと同様のプロセスが作業バッファ５０２に対して実施される。すなわち、「８」（前回最小値）よりも小さく、基準エントリ「３」よりも大きいデータエントリが作業バッファにロードされる。入力データ（図３Ａ）のエントリ「４」は「８」（前回最小値）よりも小さく、基準エントリ「３」よりも大きいため、これは上記条件を満たし、作業バッファにロードされる。データ「６」は「８」（前回最小値）よりも小さく、基準エントリ「３」よりも大きいため、データエントリ「６」は条件を満たし、これも作業バッファの第２スペースにロードされる。
【００５７】
バッファがフルの場合、全エントリは図７Ｆに示すとおり逆順でソートされる。したがって、ここで基準エントリ（影部分の番号）が「５」に変わる。その後、図７Ｇにおいて、図７Ｅのプロセスと同様のプロセスが作業バッファ５０２に対して実施される。すなわち、「８」（前回最小）よりも小さく、基準エントリ「５」よりも大きいデータエントリは作業バッファに対してロードされる。「７」は条件を満たすため、データエントリ「７」は作業バッファの第１スペースにロードされる。他のエントリが条件を満たさないため、データエントリプロセスは終了となる。その後、全エントリが図７Ｈの逆順でソートされる。ソータされたバッファ中の図７Ｉのデータ［７，６］が戻され、図３Ｅのソートされた順位［７，６］のブロックのソートが完了する。
【００５８】
上記の通り、本発明のソート方法は、特定位置からの距離に応じてＰＯＩ（ポイントオブインタレスト）データをソートするようなナビゲーションシステムに対して有利に応用が可能である。したがって、以下における説明は、ナビゲーションシステムの機能と構成、ナビゲーションシステムにおける本発明のソート方法の実行例について行う。
【００５９】
ナビゲーションシステムは、選択された到達点まで使用者が容易に到達できるようにするため道案内をする。典型的な例として車両用ナビゲーションシステムがある。本発明は車両用ナビゲーションシステムだけに限定されるものではなく、ＰＤＡ（個人情報管理ツール）、携帯電話、その他の携帯用ナビゲーション機器といった他のタイプのナビゲーションシステムにも適用される。しかしながら、説明を簡略化するため、以下の記述は主に車両用ナビゲーションシステムについて行う。
【００６０】
このようなナビゲーションシステムは車両の位置を検出し、車両の現在位置におけるある範囲についてのマップデータをＣＤ−ＲＯＭ（コンパクトディスク読み出し専用メモリ）あるいはＤＶＤ（デジタル多用途ディスク）等のデータ記憶媒体から読み取り、モニタ画面（ディスプレイ）上にマップ像を表示するとともに、マップ像の所定部分に車両の現在位置を示すマークを重ねる。その他、こういったマップデータを、インターネットのような通信ネットワークを通してリモートサーバから車両に与えることも可能である。
【００６１】
車両位置は、車両に設置された内蔵型ナビゲーションセンサ（たとえば、走行距離センサやベアリングセンサ）あるいは人工衛星（衛星ナビゲーション）を含むＧｌｏｂａｌ　Ｐｏｓｉｔｉｏｎｉｎｇ　Ｓｙｓｔｅｍ　（ＧＰＳ）により求める。衛星を用いることで絶対位置測定ができるようになり、内蔵型ナビゲーションセンサよりも高い位置精度が可能になる。しかしながら、衛星ナビゲーションは衛星信号が妨げられるトンネルあるいは建物等の内部において位置測定に不具合がある。したがって、最近のナビゲーションシステムでは、性能を高めるため内蔵型ナビゲーションセンサーとＧＰＳの両方を用いている。
【００６２】
車両の現在位置は車両が進むに連れて変化するため、画面上のマップ画像中の車両現在位置マークはそれにしたがって変化する。一方、車両現在位置マークが画像中心等の所定位置に固定されていればマップはスクロールされる。本ナビゲーションシステムにより運転者が車両位置のエリアについてのマップ情報を一目で認識できるようになる。
【００６３】
到達点（目的地）が設定されていない場合、このナビゲーションシステムは位置表示マップとして機能し、マップ画像中に車両の現在位置を表示する。到達点が設定されている場合、このナビゲーションシステムは開始点から到達点までの道案内（経路案内）のための道案内機能を開始する。代表的なものとして、この道案内機能では、モニタ画面のマップ上に到達点への道案内経路（誘導経路）を表示しながら交差点で拡大図と車両が進むべき方向を表示する交差点案内プロセスを実行する。到達点が入力された場合、ナビゲーションシステム内のＣＰＵが現車両位置から到達点までのもっとも適切な経路を求め、その後メモリ内に案内経路を構成するノード（緯度と経度で表示）を記憶する。
【００６４】
実際の走行においては、メモリ内に記憶された一連のノードはモニタ画面のマップ表示領域で表示される案内経路の部分について検索され、この案内経路の部分は他の経路と識別可能となるよう強調表示される。車両が接近している交差点から所定距離内にある場合、交差点案内図（車両が交差点で曲がる方向を示す矢印とともに拡大あるいは強調された交差点図）が表示され、運転者に対して交差点で選定可能な道あるいは方向の中から望みのものを知らせる。
【００６５】
図８Ａはマップ画像２１上における現車両位置マークＶＣＰを含むロケータマップ表示の例を示す。代表的なものとしては、ナビゲーションシステムにおいて車両が走行している通りをマップ画像２１に示し、「Ｗ　１９０ＴＨ　ＳＴ」といった通りの名前をモニタ画面の情報ボックス２３に示す。北向き矢印ＮＰ、マップ尺度、現在時刻といった他の情報についてもディスプレイ画面上に示してもよい。こういった方法により、ロケータマップ表示ではマップ画像上の車両の現在位置を示すが、ナビゲーションシステムにおいて到着点が設定されていないため道案内機能は実行されない。
【００６６】
図８Ｂは道案内機能を実行する道案内画面の例を示す。道案内画面は到着点を特定した後に起動される。この例では、現在の通り「Ｗ　１９０ＴＨ　ＳＴ」と次の通り「ＰＲＡＩＲＩＥ　ＡＶＥ」の左側がマップ画像２１で強調されており、これにより次の交差点での曲がる方向を示している。さらにこの例では、車両が交差点で曲がる方向（左）を示す矢印が画面最上部にある案内情報ボックス２２に表示されている。この案内情報ボックス２２はまた、現在の通り「Ｗ　１９０ＴＨ　ＳＴ」と交差する通り「ＰＲＡＩＲＩＥ　ＡＶＥ」の名前と交差点までの距離を示している。このようにこのナビゲーションシステムでは、車両が「ＰＲＡＩＲＩＥ　ＡＶＥ」との交差点で左に曲がらなければならないということを示している。
【００６７】
強調表示に加えて、こういった道案内に対しては音声案内も行われる。次の交差点での走行方向が左であった場合、このナビゲーションシステムは「次の交差点で左折してください」といった音声案内を行う。この例では、表示画面の最下部にある情報ボックス２４に最終到達点までの残りの距離と最終到達点に到達する予想時間に関する情報が含まれる。
【００６８】
図８Ｂに示すような道案内モードにより案内されるためには、ナビゲーションシステムにおいて到達点を特定し、システムがこの到達点に到達するための１つ以上の経路を見出すことができるようにしなければならない。図９Ａ〜９Ｃは、到達点の入力操作中にモニタ画面上に現れる表示の例を示す。
【００６９】
リモコン上のメニューキーを操作することにより、図９Ａに示すようなメインメニュー画像２５がナビゲーションシステム上に表示され、メニュー項目「到達点」がメインメニューから選定される。これによりナビゲーションシステムが図９Ｂに示すように「到達点を入力」画面２７を表示し、到達点を選定するための入力方法を特定することができるようになる。「到達点入力」画面２７は到達点を選定するためのさまざまな方法をリストアップしており、その中には、到達点の街や住所を特定するための「住所（Ａｄｄｒｅｓｓ）」、街中にあってそれぞれが交差する２つの通りの名前を特定するための「交差点（ｉｎｔｅｒｓｅｃｔｉｏｎ）」、名前や分類、電話番号に基づくプログラム済の到達点を選定するための「ポントオブインタレスト」（Ｐｏｉｎｔ　ｏｆ　Ｉｎｔｅｒｅｓｔ：ＰＯＩ）等が含まれる。
【００７０】
「到達点を入力」画面２７における他の方法には、ナビゲーションシステムに保存された最近の到達点に基づいて到達点を特定するための「最近の経路（Ｒｅｃｅｎｔ　Ｒｏｕｔｅ）」、システム中に記憶させた住所から到達点の住所を選定するための「アドレス帳（Ａｄｄｒｅｓｓ　Ｂｏｏｋ）」、ナビゲーションシステムにおいて２つ以上の到達点を特定するための「本日の計画（Ｔｏｄａｙ’ｓ　Ｐｌａｎ）」等が含まれる。例えば使用者が最終到達点に行く前に複数の到達点に行きたい場合、このナビゲーションシステムはこれらの到達点までの効率的な順番や経路を計算する。
【００７１】
図９Ｂにおける「住所（Ａｄｄｒｅｓｓ）」を選定する場合、ナビゲーションシステムは図９Ｃに示すような「通りの名前を入力してください」といった画面を表示する。図９Ｃの画面は、モニタ画面上の住所入力ボックス３７で街と住所を入力するためのキーボード３８が基本である。使用者はキーボード３８を通して住所入力ボックス３７で通りの名前と番号を入力する。
【００７２】
到達点を入力した後、このナビゲーションシステムは、例えば到達点まで到達する上での最短コース、可能な限り多くの無料道路を用いたルートあるいは有料自動車道を用いないルートといったものに基づいて到達点までの経路を求める。このようにナビゲーションシステムは、道案内を行う図８Ｂに示すような道案内表示に移行する。
【００７３】
本発明は上記の「ポントオブインタレスト」入力法を用いたナビゲーションシステムの方法と装置に関するものである。代表的なものとしては、ポントオブインタレスト（ＰＯＩ）の分類（カテゴリー）を特定し、この分類を有するＰＯＩを使用者の現在位置からの距離の順番に基づいて検索・表示する。「ポントオブインタレスト（ＰＯＩ）」入力法は扱いやすく有用であるが、最近の記憶媒体はＰＯＩ情報を示すデータについてかなりの量を提供するようになったことから、大きなメモリが必要になり、しかも、距離に応じてソートしたＰＯＩ情報を表示する必要があるためＰＯＩ情報を抽出・保持するために比較的長い時間が必要になってきた。
【００７４】
「ポントオブインタレストＰＯＩ」により到達点を特定するためのプロセスは、図１０Ａ〜１０Ｆを参照しながら以下のような方法で実行される。図１０Ａ〜１０Ｆの例において、目的とする到達点はカリフォルニア州アービンにある日本料理店「Ｔａｉｋｏ」と仮定する。図１０Ａは到達点を選定するための様々な上記入力方法をリストアップした画面の例を示す。この例に示すとおり、代表的なものとして、ナビゲーションディスプレイでは１ページあたり最大７〜８項目までの複数項目をリストアップする。したがって、項目数が最大数を超えた場合、現在の画面の外にある他の項目を見るためには通常、表示のスクロールを行う必要がある。
【００７５】
図１０Ａにおいて、「ポントオブインタレストＰＯＩ」を選定してエンターキーを押すことによりナビゲーションシステムは図１０Ｂに示すような画面を表示し、ユーザに場所の名前あるいは場所のタイプのいずれかによりポントオブインタレストＰＯＩを見出すべきか選択させる。本例に示されている通り、この画面では代表的なものとして２項目のみリストアップしている。図１０Ｂにおいて、「場所のタイプ」を選定してエンターキーを押すことによって、ナビゲーションシステムは図１０Ｃに示すような「カテゴリー選択」画面を表示して、ポントオブインタレストＰＯＩの分類をユーザに選定させる。この画面では、「ＡＴＭ」、「自動車関係」、「銀行」、「レストラン」、「ホテル」、「買い物」といったポントオブインタレストＰＯＩの様々な異なる分類についてリストアップする。典型的なものとして、このような分類の数は４０以上の数にのぼる。したがって、多くの場合、このような分類リストをスクロールして画面上の好みの場所を見つける必要がある。
【００７６】
図１０Ｃにおいて「レストラン」の分類タイプを選定することで、このナビゲーションシステムは選定された分類（レストラン）の副分類選定画面リスト（副分類）を表示する。この場合、副分類の画面では、「アメリカ風」、「カリフォルニア風」、「中国風」、「フランス風」、「イタリア風」、「日本風」、「朝鮮風」といった食べ物のタイプを示す。場合によってはこのような副分類リストは数ページにわたり、好みの副分類を見つけ出すためにページのスクロールが必要になる。
【００７７】
図１０Ｄにおいて、副分類「日本風」を選定してエンターキーを押すことにより、ナビゲーションシステムは図１０Ｅに示すような場所を見つけ出す方法を選定するための画面を表示する。この例では、「距離による分類」、「名前」、「市内」といったものが含まれる。「距離による分類」法は車両の現在位置からの距離の順番に、この例では日本料理店の場所を見つけ出す。「名前」法は、例えばキーボードを通して日本料理店の名前を入力することで場所を見つける。「市内」法は、使用者に市を選定させ、その後に日本料理店の場所のリストアップを行うものである。
【００７８】
図１０Ｅにおいて「距離による分類」を選定してエンターキーを押すことにより、ナビゲーションシステムは図１０Ｆに示すとおり、現車両位置からの距離の順番により日本料理店のリストを表示する。図１０Ｆの画像ではリストにある場所の名前の１つを選定することになっている。典型的な場合、このリストには現車両位置からの距離とリストの各場所の名前に対する現車両位置からみた方向も含む。同じ名前のレストランが２つ以上ある場合、これらのレストランは車両位置からの距離の順番にリストアップされる。
【００７９】
使用者は図１０Ｆの「Ｔａｉｋｏ」という名前を選定しエンターキーを押す。その後、ナビゲーションシステムは到達点を確認するため図１０Ｇに示すような確認経路画面を表示する。図１０Ｇの画面では選定された到達点の名前、住所、電話番号を示す。図１０Ｇの例では示されていないものの、こういった確認画面では到達点までの距離、到達点に到達するまでの予想時間、到達点の方向についても示す場合がある。
【００８０】
図１０Ｇにおいて「次に進んでもよい（ＯＫ　ｔｏ　Ｐｒｏｃｅｅｄ）」を選定することにより、ナビゲーションシステムは図１０Ｈにおける到達点までの最適経路を計算する。ナビゲーションシステムは到達点までの経路を、例えば到達点までの最短距離、できるだけ多くの無料道路を用いた経路、有料道路を用いない経路といったものに基づいて求める。このプロセスにおいて、ナビゲーションシステムは図１０Ｈの下部に示す棒グラフによって計算の進捗を示す。その後、ナビゲーションシステムは図８Ｂに示すような道案内画面へと移り、道案内を実施する。
【００８１】
前の例において、「ポントオブインタレスト（ＰＯＩ）」による到達点の特定プロセスでは全国程度の広さのエリアについて特定のＰＯＩ情報（例えば日本料理店）を検索（抽出）するステップが必要になる。このプロセスはさらに、車両（使用者）の現在位置からの距離の順番に表示するため、得られたＰＯＩ情報をソートするステップが必要である。
【００８２】
ナビゲーションシステムに応用される本発明のデータソート方法の詳細に移る前に、ナビゲーションシステムの基本的構成について簡単に説明する。図１１において、ナビゲーションシステムは、マップ情報を記憶するためのＣＤ−ＲＯＭ、ＤＶＤ、ハードディスク、その他の記憶媒体（以降、「ＤＶＤ」と称する）といったマップ記憶媒体４１、ＤＶＤからマップ情報を読み取るための操作を制御するためのＤＶＤ制御ユニット４２、現在の車両位置を計測するための位置計測装置４３を含む。位置計測装置４３は、移動距離を検出するための車両速度センサ、移動方向を検出するためのジャイロスコープ、位置計算のためのマイクロプロセッサ、ＧＰＳ受信機等をもつ。
【００８３】
図１１はさらに、ＤＶＤ４１から読み取られたマップ情報を記憶するためのマップ情報メモリ４４、ＤＶＤ４１から読み取られたポントオブインタレスト（ＰＯＩ）情報といったデータベース情報を記憶するためのデータベースメモリ４５、メニュー選定操作、拡大／縮小操作、到達点入力操作等を実行するためのリモートコントローラ４７、リモートコントローラインターフェイス４８を含む。ＰＯＩデータメモリ４５には、例えば、カテゴリー別に、ＰＯＩ名称（ＰＯＩ　ＩＤ）、ＰＯＩ位置（経緯度）、ＰＯＩの副カテゴリー、住所、ＴＥＬなどの情報が保存されている。
【００８４】
リモートコントローラ４７は図１２Ａに示す様々な機能キーと図１２Ｂに示す数値キーをもつ。図１２Ａの下部にあるふたを開くと数値キーが現れる。リモートコントローラ４７は、ジョイスティック・エンターキー４７ａ、回転式エンコーダ４７ｂ、取り消しキー４７ｃ、ＭＰ／ＲＧキー４７ｄ、メニューキー４７ｅ、ズーム／スクロールキー４７ｑ、モニタオン／オフキー４７ｆ、リモートコントロール発信機４７ｇ、プランキー４７ｈ、Ｎ／Ｈキー４７ｉ、音声キー４７ｊ、リストキー４７ｋ、迂回キー４７ｌ、到達点消去キー４７ｍ、消去キー４７ｎ、数値キー４７ｏ、ＯＫキー４７ｐを含む。
【００８５】
ジョイスティック・エンターキー４７ａはメニュー内の強調項目を選定し、マップ表示および車両位置アイコンを移動させる。回転式エンコーダ４７ｂはズーム倍率を変更し、リストページをスクロールし、カーソルを移動する。取り消しキー４７ｃは現在表示されている画像を取り消す、あるいは前のメニュー画面に画面を戻す際に操作する。ＭＰ／ＲＧキー４７ｄは案内中、詳細マップ表示と基本案内表示間でトグル操作を行う。メニューキー４７ｅはメインメニュー表示を行う。プランキー４７ｈは本日の計画機能により設定された経路への案内を開始し、Ｎ／Ｈキー４７ｉは北上方向と前進方向間の変更を行い、音声キー４７ｊは音声案内を開始する。
【００８６】
上記のようなリモートコントローラはメニュー選定や選定された機能の実行等の典型的な例であるが、ナビゲーションシステムはリモートコントローラを通して行われる同様の類似の操作を行うための他の入力方法も含んでいる。例えば、ナビゲーションシステムは、ダッシュボードの上に設けたナビゲーションシステムのヘッドユニットにハードキーやジョイスティックをもち、ディスプレイパネルにタッチスクリーンをもち、音声通信手段ももつ。
【００８７】
図１１に戻り、ナビゲーションシステムはさらに、システムの上記ユニットのインターフェイスとなるバス４６、ナビゲーションシステムの全般的動作を制御するためのプロセッサ（ＣＰＵ）４９、ナビゲーション制御に必要な目的地設定プログラムや経路検索プログラム、マップマッチングプログラムといった様々な制御プログラムを記憶するためのＲＯＭ５０、案内経路等の処理結果を記憶するためのＲＡＭ５１、音声通信インターフェイスおよび音声案内のための音声案内ユニット５２、マップ情報に基づきマップ画像（マップ案内画像および矢印案内画像）を作成するための表示コントローラ５３、表示コントローラによって作成された画像を記憶するためのＶＲＡＭ５４、メニュー画像／様々なリスト画像を作成するためのメニュー／リスト作成ユニット５５、ＶＲＡＭ５４からの画像を合成させるための合成ユニット５６、モニタ（ディスプレイ）５７、ＰＯＩ情報の表示の順番を計算・調整するためデータを一時記憶させるためのバッファメモリ５８、ナビゲーションシステムの表示パネルにおけるハードキーおよびジョイスティックあるいはナビゲーションシステムのタッチスクリーンといったその他様々な入力手段のインターフェイスとなるキースクリーンインターフェイス５９を含む。
【００８８】
上記の通り、典型的な応用例において、使用者は、到達点を選定するため、距離に応じてソートされたＰＯＩ（ポイントオブインタレスト）リストを表示するためナビゲーションシステムに指示を与える。通常の場合、ナビゲーションシステムの表示画面には一度に数項目から１０項目（ＰＯＩ）程度のリストアップ表示を行う。使用者が他のＰＯＩを見ることを望んだ場合、使用者はズーム／スクロールキー４７ｑ（図１２Ａ）を操作することで表示画面をスクロールする。
【００８９】
本発明のデータソート方法は、ＰＯＩをソート・スクロールするナビゲーションシステムの操作に対して有利に応用できる。図１３Ａ〜１３Ｌは本発明のソート方法を用いた正順（最短から最長）で距離に応じてＰＯＩをソートするためのプロセスを示す。ナビゲーションシステムへのソート方法の応用はＰＯＩのソートだけでなく、マトリクス様式であらかじめ決められた範囲をカバーするセルといった他のデータをソートする場合にも応用可能であることに注意する必要がある。
【００９０】
図１３ＡはＤＶＤ４１（図１１）といったマップデータ源から抽出されたＰＯＩデータアレイを示す。上部ボックス１はＰＯＩのＩＤを、下部ボックス２はＰＯＩまでの距離を示す。この例では、図１５Ａ〜１５Ｆに示すように、ＰＯＩデータをソートした複数の小ブロックＢ１〜Ｂ５を作成するため、ＰＯＩデータアレイをソートすると仮定している。説明を簡略化するため、ＰＯＩデータアレイはＮ（＝１６）エントリだけをもち、Ｎ（＝１６）個の順序を最上位より順番にＡ（＝３）個づつのブロックに分割する。すなわち、各ブロックＢ１〜Ｂ５は３エントリ（３つの順位）だけをもつことにする。しかしながら、実際の応用においては、たとえば、入力データ数が１，０００エントリ、各ブロックの順位数が３０といった場合が一般的である。
【００９１】
ＰＯＩのソートにおいて、まず、Ａ（＝３個）のエントリに対するソート済バッファ６０１と所定数たとえば３個のエントリに対する作業バッファ６０２、すなわち合計６個のエントリによりコンフィギュレーションされたバッファを図１３Ｂのように作成する。ソート済バッファ６０１の影部分は、基準エントリを記憶する部分で、基準エントリよりも小さい（正順ソートの場合）あるいは大きい（逆順ソートの場合）他のエントリを検索するためのものである。
【００９２】
始め、図１３Ｂに示すとおり、「９９」といった予測されたどのエントリよりも大きい最大数（例えば、最大距離）が、初期値としてソート済バッファの影部分（第３スペース）に割り当てられる。図１３Ｄのプロセスにおいて、「前回最大」値よりも大きく、基準エントリ（影部分のエントリ）よりも小さなデータエントリが、ソート済バッファ内にロードされる。「前回最大」とは前のソート結果における最大のエントリを意味する。前のソートがないため、「前回最大」は「−１」に設定される。最大数（もしくは逆順ソートにおける最小数）および前回最大値（もしくは逆順ソートにおける前回最小値）は、特定の目的に応じて自由に選定が可能であることに注意のこと。
【００９３】
入力データ（図１３Ａ）におけるＰＯＩ（Ａ）は「−１」よりも大きく、「９９」よりも小さい距離データ「１５」をもつため、上記の条件を満たす。したがって、ＰＯＩＡの距離データ「１５」は、ソート済バッファ６０１の第１スペースにロードされる。ＰＯＩＢの距離データ「７」およびＰＯＩ（Ｃ）の距離データ「５」も上記の条件を満たす。したがって、図１３Ｄにおいて、距離データ「７」および「５」についても、ソート済バッファ６０１の第２、第３スペースそれぞれにロードされる。
【００９４】
次のプロセスにおいて、ソート済バッファ６０１がフルであるため、該ソート済バッファのエントリを図１３Ｅに示すとおりソートする。したがって基準エントリ（影部分の数）はここで「１５」に変わる。その後、図１３Ｆにおいて、「前回最大」値よりも大きく、基準エントリ「１５」よりも小さな距離データが検索され、作業バッファ６０２にロードされる。入力データ（図１３Ａ）におけるＰＯＩ（Ｄ）の次の距離データ「９」は「−１」（前回最大）よりも大きく、基準エントリ「１５」よりも小さいため、これは上記の条件を満たす。したがって、距離データ「９」は、作業バッファ６０２の第１スペースにロードされる。同様に、ＰＯＩ（Ｅ）の距離データ「１２」とＰＯＩ（Ｆ）の距離データ「１０」も上記条件を満たす。したがって、図１３Ｆにおいて、距離データ「１２」と「１０」についても、作業バッファ６０２の第２、第３スペースそれぞれにロードされる。
【００９５】
バッファがフルであるため、全エントリ（距離データ）を図１４Ａに示すとおり正順でソートする。したがって基準エントリ（影部分の数）はここで「９」に変わる。その後、図１３Ｈにおいて、図１４Ｂのプロセスと同様のプロセスが作業バッファ６０２に対して実施される。すなわち、「−１」（前回最大）よりも大きく、基準エントリ「９」よりも小さな距離データが作業バッファ６０２にロードされる。
【００９６】
入力データ（図１３Ａ）におけるＰＯＩ（Ｇ）の距離データ「６」が「−１」（前回最大）よりも大きく、基準エントリ「９」よりも小さいため、これは上記の条件を満たす。したがって、距離データ「６」は、作業バッファの第１スペースにロードされる。同様に、ＰＯＩ（Ｈ）の距離データ「８」も上記条件を満たし、図１４Ｂにおける作業バッファ６０２の第２スペースにロードされる。さらに、ＰＯＩ（Ｍ）の距離データ「１４」は条件を満たし、図１４Ｂに示す作業バッファ６０２の第３スペースにロードされる。
【００９７】
バッファがフルであるため、全エントリ（距離データ）を図１４Ｃに示すとおり正順でソートする。したがって基準エントリ（影部分の数）はここで「６」に変わる。その後、図１４Ｄにおいて、図１４Ｂのプロセスと同様のプロセスが作業バッファ６０２に対して実施される。すなわち、「−１」（前回最大）よりも大きく、基準エントリ「６」よりも小さな距離データが作業バッファ６０２にロードされる。
【００９８】
ＰＯＩ（Ｏ）の距離データ「３」は「−１」（前回最大）よりも大きく、基準エントリ「６」よりも小さく、上記条件を満たす。したがって、距離データ「３」は作業バッファ６０１の第１スペースにロードされる。他のエントリは上記条件を満たさないため、データエントリプロセスは終了になる。その後、図１４Ｄのバッファ中の全エントリは正順でソートされ、図１４Ｅで示す距離の順番になる。ソート済バッファ中の距離データ［３，４，５］、すなわちＰＯＩ（Ｏ）、ＰＯＩ（Ｍ）、ＰＯＩ（Ｃ）に戻されると、図１４Ｆのソートされた最上位ブロックＢ１が完成する。すなわち、ソート済バッファ６０１に第１順位〜第３順位のＰＯＩが正順に配列される。なお、前回最大値は５となる。
【００９９】
次のブロックに対してこの手順を繰り返しながら、直前のソートプロセスから得られたブロックにおける最大数（最大距離）により「前回最大値」を更新することにより、ナビゲーションシステムは、ソートされた結果の全ブロックＢ１〜Ｂ５を完成することが可能になる。図１５Ａおよび図１５Ｂ〜１５Ｆは、当初のＰＯＩデータおよび各ブロックＢ１〜Ｂ５でのソート結果を示す。図１５Ｂのブロックは、上記の図１３Ｂ〜図１４Ｆの手順から得られた第４順位〜第６順位のソート結果を示す。図１５Ｃ〜１５ＦのブロックＢ３〜Ｂ５もそれぞれ、図１３Ｂ〜図１４Ｆの手順を繰り返すことで作成されるが、「前回最大値」は直前のブロックにおける最大値と置き換えなければならない。例えば、図１５Ｄのソート結果を作成するため、「前回最大値」は、図１５ＣのブロックＢ２における最大値「８」としなければならない。
【０１００】
ここでは示されていないが、逆順でのソートは、条件に関して逆の関係を用いながら上記の方法により実施することも可能である。すなわち、図７Ａ〜７Ｉで示す通り、逆順でのソートにおいて、データエントリを選定するための条件は、エントリが（１）「前回最小値」よりも小さく、（２）基準エントリよりも大きいかどうかというものである。したがって、ナビゲーションシステムにおいて、ＰＯＩを逆順でソートすることが可能であり、表示画面上でＰＯＩリストをスクロールバックする際に有用である。
【０１０１】
図１６Ａ〜１６Ｃは、本発明のソート方法を実施するためのナビゲーションシステムの基本コンフィギュレーションを示す概略図と、本発明にしたがって距離に応じてソートされたＰＯＩ情報をスクロールする場合の表示例である。上記の本発明によるソート手順を通して、ナビゲーションシステムは距離に応じてソートされたＰＯＩを表示する。この例では、入力ＰＯＩデータに対するソート手順を実施し、距離に応じてソートされたＰＯＩリストを表示するための図１１のＣＰＵ４９およびバッファメモリ５８を示す。
【０１０２】
ナビゲーションシステム（ＣＰＵ４９）は、ＤＶＤあるいはＣＤ−ＲＯＭ４１（図１１）といったデータ源あるいはＰＯＩデータべースメモリ４５から所定のカテゴリーのＰＯＩを検索し、それらを距離に応じてソートする。ＰＯＩ数は１，０００程度でも可能であるが、本発明においてはこういったＰＯＩは、それぞれが少数の順位をもつ複数のブロックに別々にソートされる。例えば、各ブロックは距離に応じてソートされた３０個のＰＯＩを含むが、１つの表示画面は５〜１０個のＰＯＩを表示する。したがって、本発明において、ソートされたＰＯＩの第１のブロックが得られるとすぐに、ナビゲーションシステムは、図１６Ａに示すように距離に応じてソートされたＰＯＩリストを表示する。
【０１０３】
使用者が、例えばズーム／スクロールキー４７ｑ（図１２Ａ）を操作して、図１６Ｂのように画面をスクロールした場合、ナビゲーションシステムは続けて下側のリストにあるＰＯＩを示す。使用者がさらに下にスクロールし、ブロック内順位のソートされたＰＯＩがなくなると、ナビゲーションシステムは続けて、上位あるいは下位のブロックのソートを行う。図１６Ｃに示すように使用者が上にスクロールし、上位ブロックを構成する順位のＰＯＩを決定（ソート）する必要が生じれば、ナビゲーションシステムは、逆順でソートを行い、上側のリストにおいて距離に応じてソートされたＰＯＩを表示する。
【０１０４】
図１７は、ナビゲーションシステムを実際に用いる上で必要とされた際に、ソート結果が連続的に作成される場合に、距離に応じてソートされたＰＯＩ情報を表示するため、図１６Ａ〜１６Ｃの状況と同様の状況を示す概略図である。ブロック６２、６４、６６は本発明のソート方法により連続的に作成される。図ではブロック６２が最上位ブロック、ブロック６４が次のブロック、ブロック６６が最下位ブロックであり、それぞれ、９個の順位で構成されている。ナビゲーションシステムは、スクロールバーで指示された表示範囲６０内のＰＯＩをリストアップ表示する。各ブロックのＰＯＩは、例えば現使用者位置からの距離に応じてソートされる。
【０１０５】
ブロック６４のＰＯＩリストが表示されている状態において、使用者がスクロールバーを上下すると、表示範囲６０内のＰＯＩはそれに応じて変化する。スクロール範囲がブロック６４のようにブロック内にある場合、ナビゲーションシステムはブロック６４のＰＯＩを単に表示するだけである。スクロールが現行のブロック６４を超える場合、ナビゲーションシステムはスクロールの方向に応じてブロック６２または６４のいずれかを作成する。下向きのスクロールに対しては、ナビゲーションシステムは正順でソートされたＰＯＩのブロックを作成し、上向きのスクロールに対しては、ナビゲーションシステムは上記のように逆順でソートされたＰＯＩのブロックを作成する。
【０１０６】
図１８は、入力データを正順でソートするための、本発明のソート手順を示すフローチャートである。上記の通り、本発明のデータソート方法では、入力データアレイは複数ブロックの形態で特定の順番にソートされる。図１８のフローチャートにおいて、正順ソートが以下の通り実施される：
【０１０７】
ステップ１０１において、入力データアレイのエントリ数をＮ、ソート済バッファのエントリ数をＡとするとき、ブロックの数（＝Ｎ／Ａ）を求める。すなわち、Ｎ個の順序を最上位より順番にＡ個づつのブロックに分割する。なお、作業バッファのエントリ数はＢ、両バッファの合計エントリ数はＸ（＝Ａ＋Ｂ）とする。この場合、Ｂは任意の数で良く、例えばＢ＝Ａである。
その後、ステップ１０２において、エントリ数Ａのソート済バッファとエントリ数Ｂの作業バッファバッファを配列してエントリ数Ｘ（＝Ａ＋Ｂ）のバッファを作成する。さらにステップ１０３において、前回のブロックにおける「前回最大値」と、ソート済バッファの最終エントリ位置における値である基準エントリを決める。
【０１０８】
ステップ１０４において、本発明のソート方法では、（１）前回最大値よりも大きく、（２）基準エントリよりも小さい条件を満たすエントリを検索し、ソート済バッファにこの条件を満たすエントリをロードする。上記の通り、図４Ａ〜４Ｉを参照しながら、ステップ１０４における基準エントリの初めの値は、入力データアレイにおけるどのエントリよりも大きな最大値である。
【０１０９】
その後、ステップ１０５において、ソート済バッファがフルであれば、ソート済バッファのエントリを正順でソートする。ソート済バッファ中のエントリのソートにより、ソート済バッファの最終エントリ位置におけるエントリ値は変化する、すなわち基準エントリが新しい基準エントリに変わる。ステップ１０６において、この方法では、（１）前回最大値よりも大きく、（２）新規基準エントリよりも小さい条件を満たすエントリを検索し、作業バッファにこの条件を満たすエントリをロードする。
【０１１０】
ステップ１０７において、バッファがフルであれば、全バッファ（ソート済バッファと作業バッファ）におけるエントリを正順でソートする。ステップ１０８において、ステップ１０６のサーチ条件を満たすデータアレイのエントリがなくなるまでステップ１０６と１０７を繰り返す。ステップ１０９において、この条件を満たすエントリがなくなれば、ソートされた最上位ブロックのソートが完了し、ソート済バッファ中のソート済みエントリを出力する。
【０１１１】
上記の手順は、正順でソートされた１つのブロックを作成するためのものである。ステップ１１０において、全ブロックのソートが完了したか、すなわち、未ソートの他のブロックが存在するかどうか判定される。残りのブロックがない場合、ソートプロセスは終了する。他のブロックがある場合、プロセスはステップ１０３に戻り、全ブロックのソートが完了するまでステップ１０３〜１０９の手順を繰り返す。
【０１１２】
図１９は、入力データを逆順でソートするための、本発明のソート手順を示すフローチャートである。上記の通り、本発明のデータソート方法では、入力データアレイは複数ブロックの形態で特定の順番にソートされる。図１９のフローチャートにおいて、逆順ソートが以下の通り実施される：
【０１１３】
ステップ２０１において、入力データアレイのエントリ数をＮ、ソート済バッファのエントリ数をＡとするとき、ブロックの数（＝Ｎ／Ａ）を求める。すなわち、Ｎ個の順序を最上位より順番にＡ個づつのブロックに分割する。作業バッファのエントリ数はＢ、両バッファの合計エントリ数はＸ（＝Ａ＋Ｂ）とする。この場合、Ｂは任意の数で良く、例えばＢ＝Ａである。
その後、ステップ２０２において、エントリ数Ａのソート済バッファとエントリ数Ｂの作業バッファバッファを配列してエントリ数Ｘ（＝Ａ＋Ｂ）のバッファを作成する。さらにステップ２０３において、前回のブロックにおける「前回最小値」と、ソート済バッファの最終エントリ位置における値である基準エントリを決める。
【０１１４】
ステップ２０４において、本発明のソート方法では、（１）前回最小値よりも小さく、（２）基準エントリよりも大きい条件を満たすエントリを検索し、ソート済バッファにこの条件を満たすエントリをロードする。上記の通り、図７Ａ〜７Ｉを参照しながら、ステップ１０４における基準エントリの初めの値は、入力データアレイにおけるどのエントリよりも大きな最大値である。
【０１１５】
その後、ステップ２０５において、ソート済バッファがフルであれば、ソート済バッファのエントリを逆順でソートする。ソート済バッファ中のエントリのソートにより、ソート済バッファの最終エントリ位置におけるエントリ値は変化する、すなわち基準エントリが新しい基準エントリに変わる。ステップ２０６において、（１）前回最大値よりも小さく、（２）新規基準エントリよりも大きい条件を満たすエントリを検索し、作業バッファにこの条件を満たすエントリをロードする。
【０１１６】
ステップ２０７において、バッファがフルであれば、全バッファ（ソート済バッファと作業バッファ）におけるエントリを逆順でソートする。ステップ２０８において、ステップ２０６のサーチ条件を満たすデータアレイのエントリがなくなるまでステップ２０６と２０７を繰り返す。ステップ２０９において、この条件を満たすエントリがなくなれば、最上位のブロックのソートが完了し、ソート済バッファ中のソート済みエントリを出力する。
【０１１７】
上記の手順は、逆順でソートされた１つのブロックを作成するためのものである。ステップ２１０において、全ブロックのソートが完了したか、すなわち、未ソートの他のブロックが存在するかどうか判定される。残りのブロックがない場合、ソートプロセスは終了する。他のブロックがある場合、プロセスはステップ２０３に戻り、全ブロックのソートが完了するまでステップ２０３〜２０９の手順を繰り返す。
【０１１８】
【発明の効果】
前述の通り、本発明によれば、本データソート方法によりソート時間と、入力データアレイをソートするためのメモリサイズを大幅に縮小することができる。ソートされたデータをもつ各ブロックは、ソートされたデータの全ブロックが作成されるまで連続して作成される。このナビゲーション方法およびシステムでは本発明のソート方法を用い、これによりナビゲーションシステムの実際の使用に対して即座に必要な、距離に応じてソートされた少量のＰＯＩのブロックを１つ以上作成することが可能になる。したがって、このナビゲーション方法とシステムによれば大きなメモリあるいは高性能のコンピュータを必要とすることなく、ＰＯＩ情報を即座にソート・表示することが可能になる。実際に必要な場合には、このナビゲーション方法とシステムでソート操作を繰り返し、ソートされたＰＯＩの次のブロックを作成する。したがって、本発明により高速度操作と低コストのナビゲーションシステムを提供することができる。
【０１１９】
本発明はここにおいて好ましい実施例を参照しながら説明したが、技術的に優れたものであれば、本発明の考えや範囲を逸脱することなく様々な改造や変更を行うことができるということは即座に認めるはずである。こういった改造や変更は、添付の請求範囲およびそれに相当するものの範囲内にあるとみなされる。
【図面の簡単な説明】
【図１】本発明におけるデータソート方法を実行するためのコンピュータシステムにおける基本構造を示す構成図。
【図２】従来のデータソート方法を示す概略図。図２Ａは入力データアレイを、図２Ｂはソート手順に対して用いられるバッファメモリを、図２Ｃはソートされたデータアレイを示す。
【図３】本発明のデータソート方法の基本的概念を示す概略図。図３Ａは入力データアレイを、図３Ｂはソート手順に対して用いられるバッファメモリを、図３Ｃはそれぞれがソート結果をもつ直列様式で作成されたブロックを、図３Ｄは最終ソート結果を、図３Ｅは逆順での最終ソート結果を示す。
【図４】ソート結果の第１ブロックを作成するための、本発明におけるデータソート手順を示す概略図。
【図５】ソート結果の第２ブロックを作成するための、本発明におけるデータソート手順を示す概略図。
【図６】ソート結果の第３ブロックを作成するための、本発明におけるデータソート手順を示す概略図。
【図７】図３Ｅに示す逆順でソートを行ったソート結果のブロックを作成するための、本発明におけるデータソート手順を示す概略図。
【図８】ナビゲーションシステムのロケータマップ表示と道案内表示の例をそれぞれ示す概略図。
【図９】ナビゲーションシステムの到達点設定の概略説明図。図９Ａはメインメニューを、図９Ｂは到達点設定メニューを、図９Ｃは到達点入力のためのキーボード表示を示す。
【図１０】ポイントオブインタレスト（ＰＯＩ）入力法を用いたナビゲーションシステムにおける到達点特定プロセスの表示例である。
【図１１】本発明による車両ナビゲーションシステムの構成例を示す構成図。
【図１２】本発明の車両ナビゲーションシステムに伴うリモートコントローラの例を示す図。
【図１３】距離に応じてポイントオブインタレスト（ＰＯＩ）データをソートするためのナビゲーションシステムに対して本発明のソート方法を適用したプロセスの例を示す第１の図である。
【図１４】距離に応じてポイントオブインタレスト（ＰＯＩ）データをソートするためのナビゲーションシステムに対して本発明のソート方法を適用したプロセスの例を示す第２の図である。
【図１５】ソート前の入力データと本発明のソート法によるソート結果を示す図。
【図１６】本発明のソート法を実施するためのナビゲーションシステムの基本的コンフィギュレーションと、本発明により距離に応じてソートされたＰＯＩ情報をスクロールした際の表示例を示す概略図。
【図１７】ナビゲーションシステムを実際に用いることで必要とされた場合に、ソートされた結果のブロックが連続して作成される、距離に応じてソートされたＰＯＩ情報を表示するための本発明の概念を示す概略図。
【図１８】入力データを正順でソートするための、本発明のソート手順を示すフローチャート。
【図１９】入力データを逆順でソートするための、本発明のソート手順を示すフローチャート。
【符号の説明】
４１　ＣＤ−ＲＯＭもしくはＤＶＤ
４２　ＤＶＤ制御ユニット
４３　位置測定装置
４４　マップ情報メモリ
４５　ＰＯＩデータベースメモリ
４７　リモートコントローラ
４８　リモートコントローラインターフェイス
４９　ＣＰＵ
５０　ＲＯＭ
５１　ＲＡＭ
５２　音声案内ユニット
５３　ディスプレイコントローラ
５４　ＶＲＡＭ
５５　メニュー／リスト作成ユニット
５６　合成ユニット
５７　モニタ
５８　バッファメモリ
５９　キー／画面インターフェイス
【図１】
2004078919.tif 000003
【図２】
2004078919.tif 000004
【図３】
2004078919.tif 000005
【図４】
2004078919.tif 000006
【図５】
2004078919.tif 000007
【図６】
2004078919.tif 000008
【図７】
2004078919.tif 000009
【図８】
2004078919.tif 000010
【図９】
2004078919.tif 000011
【図１０】
2004078919.tif 000012
【図１１】
2004078919.tif 000013
【図１２】
2004078919.tif 000014
【図１３】
2004078919.tif 000015
【図１４】
2004078919.tif 000016
【図１５】
2004078919.tif 000017
【図１６】
2004078919.tif 000018
【図１７】
2004078919.tif 000019
【図１８】
2004078919.tif 000020
【図１９】
2004078919.tif 000021