(57)【要約】      （修正有）【課題】オフセットを格納するフィールドの容量を従来よりも少なくして、サブデータベースに蓄積可能な情報量を増やす。【解決手段】可変長オフセット書替装置において、下位の桁からデータ領域である基底データ領域Ｂ２に格納し、基底データ領域Ｂ２外の拡張されたデータ領域を利用するときには拡張フラグを立てる拡張フラグ領域Ｂ１とからなる特定されたデータ長で形成された基底部Ｂ、及び基底データ領域Ｂ２に格納できなかったオフセットの残部をデータ領域である拡張部Ｅに格納してオフセットを書き替える。拡張フラグが立っていないとき、基底データ領域Ｂ２に格納されたデータをオフセットとし、拡張フラグが立っているとき、基底データ領域Ｂ２と拡張部Ｅとに格納されたデータを結合してオフセットとしてサブデータベースにアクセスする。【選択図】図３
2010152447.tif 000002
【特許請求の範囲】
【請求項１】
情報の位置を特定する特定長のオフセットを格納したフィールドを有するデータベース及び前記オフセットに基づいて前記データベースの目的の情報をアクセス自在に形成されたメインデータベースと、
前記メインデータベースをアクセスして得た前記特定長のオフセットを、下位の桁からデータ領域である基底データ領域に格納し、前記基底データ領域のみでは格納が完了できず、前記基底データ領域外の拡張されたデータ領域を利用するときに、それを示す拡張フラグを立てる拡張フラグ領域とからなる特定されたデータ長で形成された基底部、及び前記基底データ領域に格納できなかった前記オフセットの残部をデータ領域である拡張部に格納し、前記拡張フラグ領域の拡張フラグが立っていないとき、前記基底データ領域に格納されたデータをオフセットとし、前記拡張フラグ領域の拡張フラグが立っているとき、前記基底データ領域と前記拡張部とに格納されたデータを結合してオフセットとして目的の情報を取得可能なサブデータベースと
を具備することを特徴とする可変長オフセット書替装置。
【請求項２】
前記拡張部に格納するオフセットの残部を部分オフセットとするとき、
前記サブデータベースは、更に、下位の桁からデータ領域である拡張データ領域に格納し、前記拡張データ領域外の再拡張されたデータ領域を利用するときには再拡張フラグを立てる再拡張フラグ領域とで形成された拡張基底部、及び前記拡張データ領域に格納できなかった前記部分オフセットの残部をデータ領域である再拡張部に格納し、前記再拡張フラグ領域の再拡張フラグが立っていないとき、
前記基底データ領域と前記拡張データ領域とに格納されたデータを結合してオフセットとし、前記再拡張フラグ領域の再拡張フラグが立っているとき、前記基底データ領域、前記拡張データ領域及び前記再拡張部に格納されたデータを結合してオフセットとして目的の情報を取得可能にしたことを特徴とする請求項１に記載の可変長オフセット書替装置。
【請求項３】
前記サブデータベースに記録された取得可能に縮小した目的の情報は、必要に応じて前記メインデータベースの特定長のオフセットに拡張することを特徴とする請求項１または請求項２に記載の可変長オフセット書替装置。
【請求項４】
情報の位置を特定する特定長のオフセットを格納したフィールドを有するデータベース及び前記オフセットに基づいて前記データベースの特定データをアクセス自在に形成されたメインデータベースと、
情報の位置を特定する可変長のオフセットを格納したフィールドを有するデータベース及び前記オフセットに基づいて前記データベースの特定データをアクセス自在に形成されたサブデータベースとを具備し、
前記メインデータベースの前記フィールドにアクセスして得た前記特定長のオフセットを前記サブデータベースの前記フィールドに格納するにあたり、
下位の桁からデータ領域である基底データ領域に格納し、前記基底データ領域外の拡張されたデータ領域を利用するときには、それを示す拡張フラグを立てる拡張フラグ領域とからなる特定されたデータ長で形成された基底部、及び前記基底データ領域に格納できなかった前記オフセットの残部をデータ領域である拡張部に格納し、
前記拡張フラグ領域の拡張フラグが立っていないとき、前記基底データ領域に格納されたデータをオフセットとし、前記拡張フラグ領域の拡張フラグが立っているとき、前記基底データ領域と前記拡張部とに格納されたデータを結合してオフセットとして、前記サブデータベースに記録された目的の情報を取得可能に縮小したことを特徴とする可変長オフセット書替方法。
【請求項５】
前記拡張部に格納するオフセットの残部を部分オフセットとするとき、
前記サブデータベースの前記フィールドに格納するにあたり、更に、下位の桁からデータ領域である拡張データ領域に格納し、前記拡張データ領域外の再拡張されたデータ領域を利用するときには再拡張フラグを立てる再拡張フラグ領域とで形成された拡張基底部、及び前記拡張データ領域に格納できなかった前記部分オフセットの残部をデータ領域である再拡張部に格納し、
前記再拡張フラグ領域の再拡張フラグが立っていないとき、前記基底データ領域と前記拡張データ領域とに格納されたデータを結合してオフセットとし、前記再拡張フラグ領域の再拡張フラグが立っているとき、前記基底データ領域、前記拡張データ領域及び前記再拡張部に格納されたデータを結合してオフセットとして、前記サブデータベースに記録された目的の情報を取得可能に縮小したことを特徴とする請求項３に記載の可変長オフセット書替方法。
【請求項６】
前記サブデータベースに記録された取得可能に縮小した目的の情報は、必要に応じて前記メインデータベースの特定長のオフセットに拡張することを特徴とする請求項４または請求項５に記載の可変長オフセット書替方法。
【請求項７】
請求項１乃至請求項６の何れか１つに記載の前記サブデータベースを記録したことを特徴とする可変長オフセット書替装置の記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、情報の位置を特定する特定長のオフセットを格納したフィールドを有するデータベースにかかる可変長オフセット書替装置、可変長オフセット書替方法及び可変長オフセット書替装置の記録媒体に関する。
【背景技術】
【０００２】
一般的な車両用のナビゲーション装置は、道路、背景、施設等のようにナビゲーションを行うのに必要な各種情報を蓄積したデータベース、所謂、地図データベースを備える。当該地図データベースは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等に格納され、それを車両用のナビゲーション装置のメモリにインストールしている。そして、地図表示、経路探索や経路案内等の機能を実現する際には、当該メモリのデータベースにアクセスして必要な情報を取得している。
【０００３】
所定形式でフォーマットされたデータベースにアクセスして目的の情報を取得するにあたっては、オフセット、即ち、取得すべきデータの位置を指定するアドレスが格納されたフィールドを参照する必要がある。従来ではフィールドを固定長とし、データ量に合わせてアドレス表現が可能なデータ長、例えば、４バイト（１バイトは８ビット）で構成していた（例えば、特許文献１を参照）。この４バイトで表現できるアドレスは、１０進数でいう２32、即ち、０から４２９４９６７２９６である。
【特許文献１】特開２００８−２４１６５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、例えば、ナビゲーションの対象となる地域や国等を増やそうとするとデータベースに蓄積すべきデータ量が増え、これに伴ってオフセットを格納するフィールドのデータ長も増加する。逆に言えば、オフセットを格納するフィールドのために記憶媒体の容量をコンパクト化できない。ところが、記録媒体がＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の場合には、一つの記録媒体に記録可能な容量に制限がある。データベースに蓄積するデータ量が増えると、一つの記録媒体に収容可能な地域や国等の数を制限し、複数の記録媒体に分割して記録する必要がある。前者の場合は、蓄積できない地域や国等についてはナビゲーションを行えない。後者の場合は、全ての地域や国等を記録できるが、目的の地域や国等が記録された記録媒体を取り出してアクセスする必要があるので、利便性を損ねていた。
しかし、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等に格納された地図データベース自体を圧縮すると、大掛かりなソフトウェアを必要とし、それに必要なメモリ容量の確保が必要となり、インストールにも時間がかかるという問題がある。
また、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等に格納される地図データベース自体を用途別にコンパクト化し、車両用のナビゲーション装置のメモリ容量に対応させる方法がある。しかし、何種類もの地図データベースのＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等を用意する必要が出てきて実用的でない。
【０００５】
オフセットを格納するフィールドが固定長の場合には、アクセスの際にアドレス値として不要な領域部分が生ずる場合もある。この不要な領域部分を削減するには、オフセットを格納するフィールドを可変長にする技術が考えられる。ところが従来の技術では、アドレス値を格納する領域とは別個に、アドレス値のデータ長を格納するための領域（例えば、１バイト）を必要としていた。一例として、４バイトのアドレスを格納するにあたっては、データ長を示す１バイトとともに、全体として５バイトが必要となる。アドレス値が小さいオフセットでは削減効果があるものの、アドレス値が大きいオフセットでは逆にデータ長を格納する領域が余分になる。したがって、データベース全体の記録容量としてみれば大きな削減効果が得られない。言い換えれば、フィールドのために記憶媒体の容量をコンパクト化できない。
【０００６】
そこで、本発明はこのような点に鑑みてなしたものであり、オフセットを格納するフィールドの容量を従来のメインデータベースよりも少なくして、蓄積可能なデータ量を増やしたサブデータベースにアクセス可能とする可変長オフセット書替装置、可変長オフセット書替方法及び可変長オフセット書替装置の記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決するための手段を以下に記載する。なお、理解を容易にするために、後述する実施の形態及び実施例における対応要素の符号もしくは対応事項の符号を、例示として参考までに括弧内に付記する。
【０００８】
請求項１にかかる発明の可変長オフセット書替装置は、情報（Ｄ１,Ｄ２,Ｄ３,Ｄ４,…）の位置を特定する特定長のオフセット（ＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…）を格納したフィールド（Ｆ１,Ｆ２,Ｆ３,Ｆ４,…）を有するデータベース及び前記オフセット（ＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…）に基づいて前記データベースの特定データをアクセス自在に形成されたメインデータベース（２１）と、前記メインデータベース（２１）をアクセスして得た前記特定長のオフセット（ＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…）を、下位の桁からデータ領域である基底データ領域（Ｂ２）に格納し、前記基底データ領域（Ｂ２）外の拡張されたデータ領域を利用するときには拡張フラグを立てる拡張フラグ領域（Ｂ１）とからなる特定されたデータ長で形成された基底部（Ｂ）、及び前記基底データ領域（Ｂ２）に格納できなかった前記オフセットの残部をデータ領域である拡張部（Ｅ）に格納し、前記拡張フラグ領域（Ｂ１）の拡張フラグが立っていないとき、前記基底データ領域（Ｂ２）に格納されたデータをオフセットとし、前記拡張フラグ領域（Ｂ１）の拡張フラグが立っているとき、前記基底データ領域（Ｂ２）と前記拡張部（Ｅ）とに格納されたデータを結合してオフセットとして目的の情報（ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…）を取得可能なサブデータベース（２２）とを具備するものである。
【０００９】
上記フィールド（Ｆ１,Ｆ２,Ｆ３,Ｆ４,…）は、メインデータベース（２１）に設けられ、情報（Ｄ１,Ｄ２,Ｄ３,Ｄ４,…）の位置を指すオフセット（ＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…）を格納するためのデータ領域である。また、上記フィールド（ＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…）は、サブデータベース（２２）に設けられ、情報（ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…）の位置を指すオフセット（ＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…）を格納するためのデータ領域である。
メインデータベース（２１）のフィールド（Ｆ１,Ｆ２,Ｆ３,Ｆ４,…）は、従来通りの固定長で形成されている。サブデータベース（２２）のフィールド（ＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…）は、特定されたデータ長で基底部（Ｂ）を形成する。更に、拡張フラグ領域（Ｂ１）に拡張フラグを立てるときに限り、拡張部（Ｅ）を形成する。即ち、基底部（Ｂ）と拡張部（Ｅ）とは別個のデータ領域である。基底部（Ｂ）には、オフセットの全部または一部を格納する。拡張部（Ｅ）には、オフセットのデータ長が基底データ領域（Ｂ２）のデータ長を超えるとき、基底データ領域（Ｂ２）にオフセットの一部にかかるデータを格納するとともに、オフセットの残部にかかるデータを格納することでオフセットの書き替えを行う。また、書き替えた後のサブデータベース（２２）における目的とする情報（ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…）を取得しようとする場合、拡張フラグ領域（Ｂ１）に拡張フラグが立っていないときは、基底データ領域（Ｂ２）に格納されたデータをそのままオフセットとしてサブデータベース（２２）にアクセスする。また、拡張フラグ領域（Ｂ１）に拡張フラグが立っているときは、拡張部（Ｅ）が別個に存在するので、基底データ領域（Ｂ２）と拡張部（Ｅ）とに格納されたデータを結合してオフセットとしてサブデータベース（２２）にアクセスする。
なお、ここで、拡張フラグが立っているときとは、拡張フラグ位置として特定ビットが確保されているか否かを問うものではなく、拡張フラグが立っている（“１”または“Ｈ”）か、立っていない（“０”または“Ｌ”）でいえば、拡張フラグが立っている（“１”または“Ｈ”）ときを意味するものである。また、正論理、負論理を問うものではない。また、メインデータベース（２１）とサブデータベース（２２）は、物理的に記憶領域が異なるものであり、その記憶容量の大小、記憶媒体の種類を問うものではない。
【００１０】
請求項２にかかる発明の可変長オフセット書替装置は、前記拡張部（Ｅ）に格納するオフセットの残部を部分オフセット（ＯＰ）とするとき、前記サブデータベース（２２）は、更に、下位の桁からデータ領域である拡張データ領域（Ｅａ２）に格納し、前記拡張データ領域（Ｅａ２）外の再拡張されたデータ領域を利用するときには再拡張フラグを立てる再拡張フラグ領域（Ｅａ１）とで形成された拡張基底部（Ｅａ）、及び前記拡張データ領域（Ｅａ２）に格納できなかった前記部分オフセット（ＯＰ）の残部をデータ領域である再拡張部（Ｅｂ）に格納し、前記再拡張フラグ領域（Ｅａ１）の再拡張フラグが立っていないとき、前記基底データ領域（Ｂ２）と前記拡張データ領域（Ｅａ２）とに格納されたデータを結合してオフセットとし、前記再拡張フラグ領域（Ｅａ１）の再拡張フラグが立っているとき、前記基底データ領域（Ｂ２）、前記拡張データ領域（Ｅａ２）及び前記再拡張部（Ｅｂ）に格納されたデータを結合してオフセットとして目的の情報（ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…）を取得可能にしたものである。
【００１１】
上記拡張部（Ｅ）は、拡張フラグ領域（Ｂ１）に拡張フラグを立てたときに限り、拡張基底部（Ｅａ）を形成する。更に、再拡張フラグ領域（Ｅａ１）に再拡張フラグを立てたときに限り、再拡張部（Ｅｂ）を形成する。即ち、拡張基底部（Ｅａ）と再拡張部（Ｅｂ）とは別個のデータ領域である。拡張基底部（Ｅａ）には、部分オフセット（ＯＰ）の全部または一部を格納する。再拡張部（Ｅｂ）には、部分オフセット（ＯＰ）のデータ長が拡張データ領域（Ｅａ２）のデータ長を超えるとき、拡張データ領域（Ｅａ２）に部分オフセット（ＯＰ）の一部にかかるデータを格納することを条件として、部分オフセット（ＯＰ）の残部にかかるデータを格納することでオフセットの書き替えを行う。また、書き替えた後のサブデータベース（２２）における目的とする情報（ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…）を取得しようとする場合、再拡張フラグ領域（Ｅａ１）に再拡張フラグが立っていないときは、基底データ領域（Ｂ２）と拡張データ領域（Ｅａ２）とに格納されたデータを結合してオフセットとしてサブデータベース（２２）にアクセスする。また、再拡張フラグ領域（Ｅａ１）に再拡張フラグが立っているときは、再拡張部（Ｅｂ）が別個に存在するので、基底データ領域（Ｂ２）、拡張データ領域（Ｅａ２）及び再拡張部（Ｅｂ）に格納されたデータを結合してオフセットとしてサブデータベース（２２）にアクセスする。
【００１２】
請求項３にかかる発明の可変長オフセット書替装置の前記サブデータベース（２２）に記録された取得可能に縮小した目的の情報は、必要に応じて前記メインデータベース（２１）の固定長である特定長オフセットに拡張するものである。
前記メインデータベース（２１）から抽出した可変長オフセットのみを、元に戻し、固定長である特定長オフセットとして処理可能とするものである。
【００１３】
請求項４にかかる発明の可変長オフセット書替方法は、情報（Ｄ１,Ｄ２,Ｄ３,Ｄ４,…）の位置を特定する特定長のオフセットを格納したフィールド（Ｆ１,Ｆ２,Ｆ３,Ｆ４,…）を有するデータベース及び前記オフセット（ＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…）に基づいて前記データベースの特定データをアクセス自在に形成されたメインデータベース（２１）と、情報（ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…）の位置を特定するオフセット（ＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…）を格納したフィールド（ＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…）を有するデータベース及び前記オフセット（ＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…）に基づいて前記データベースの特定データをアクセス自在に形成されたサブデータベース（２２）を具備し、前記メインデータベース（２１）の前記フィールド（ＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…）にアクセスして得た前記特定長のオフセットを前記サブデータベース（２２）の前記フィールド（Ｆ１,Ｆ２,Ｆ３,Ｆ４,…）に格納するにあたり、下位の桁からデータ領域である基底データ領域（Ｂ２）に格納し、前記基底データ領域（Ｂ２）外の拡張されたデータ領域を利用するときには拡張フラグを立てる拡張フラグ領域（Ｂ１）とからなる特定されたデータ長で形成された基底部（Ｂ）、及び前記基底データ領域（Ｂ２）に格納できなかった前記オフセットの残部をデータ領域である拡張部（Ｅ）に格納して書き替えを行い、前記拡張フラグ領域（Ｂ１）の拡張フラグが立っていないとき、前記基底データ領域（Ｂ２）に格納されたデータをオフセットとし、前記拡張フラグ領域（Ｂ１）の拡張フラグが立っているとき、前記基底データ領域（Ｂ２）と前記拡張部（Ｅ）に格納されたデータを結合してオフセットとして、前記サブデータベース（２２）に記録された目的の情報（ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…）を取得可能にしたものである。
【００１４】
請求項５にかかる発明の可変長オフセット書替方法は、前記拡張部（Ｅ）に格納するオフセットの残部を部分オフセット（ＯＰ）とするとき、前記サブデータベース（２２）の前記フィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…に格納するにあたり、更に、下位の桁からデータ領域である拡張データ領域（Ｅａ２）に格納し、前記拡張データ領域（Ｅａ２）外の再拡張されたデータ領域を利用するときには再拡張フラグを立てる再拡張フラグ領域（Ｅａ１）とで形成された拡張基底部（Ｅａ）、及び前記拡張データ領域（Ｅａ２）に格納できなかった前記部分オフセット（ＯＰ）の残部をデータ領域である再拡張部（Ｅｂ）に格納して書き替えを行い、前記再拡張フラグ領域（Ｅａ１）の再拡張フラグが立っていないとき、前記基底データ領域（Ｂ２）と前記拡張データ領域（Ｅａ２）とに格納されたデータを結合してオフセットとし、前記再拡張フラグ領域（Ｅａ１）の再拡張フラグが立っているとき、前記基底データ領域（Ｂ２）、前記拡張データ領域（Ｅａ２）及び前記再拡張部（Ｅｂ）に格納されたデータを結合してオフセットとして、前記サブデータベース（２２）に記録された目的の情報（ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…）を取得可能にしたものである。
【００１５】
請求項６にかかる発明の可変長オフセット書替方法の前記サブデータベース（２２）に記録された取得可能に縮小した目的の情報は、必要に応じて前記メインデータベース（２１）の固定長である特定長オフセットに拡張するものである。
前記メインデータベース（２１）から抽出した可変長オフセットのみを、元に戻し、固定長である特定長オフセットとして処理可能とするものである。
【００１６】
請求項７にかかる発明の記録媒体（２０）は、前記サブデータベース（２２）を記録したものである。ここで、前記記録媒体（２０）は、少なくとも、サブデータベース（２２）を記録可能であれば任意の媒体を用いることが可能である。例えば、半導体メモリ、磁気テープ、磁気ディスク、磁気ドラム、ＣＤ−ＲＯＭ、ＭＤ、ＤＶＤ−ＲＯＭ、光ディスク、ＭＯ、ＩＣカード、光カード、メモリカード等のうちの１以上が該当する。
【発明の効果】
【００１７】
請求項１の発明によれば、オフセット（ＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…）を書き替えて格納するサブデータベース（２２）のフィールド（ＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…）は、特定されたデータ長で形成される基底部（Ｂ）と、拡張フラグ領域（Ｂ１）に拡張フラグを立てるときに限って形成される拡張部（Ｅ）とからなる。更に、基底部（Ｂ）は基底データ領域（Ｂ２）と拡張フラグ領域（Ｂ１）とからなる。拡張フラグ領域（Ｂ１）に格納された拡張フラグを参照するだけで拡張部（Ｅ）の有無が分かり、しかも基底データ領域（Ｂ２）にはオフセットの全部または一部にかかるデータを格納できる。拡張部（Ｅ）が無いときは基底データ領域（Ｂ２）に格納されたデータがオフセットとなり、拡張部（Ｅ）が有るときは基底データ領域（Ｂ２）と拡張部（Ｅ）とに格納されたデータがオフセットとなる。このように、前記フィールド（ＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…）は拡張部（Ｅ）の有無に従ってデータ長が変わる点で可変長データといえる。アドレス値として不要な領域部分を拡張部（Ｅ）に適用することで、低位アドレスでは拡張部（Ｅ）を無くしてデータ量を減らすことができるうえに、特定長のオフセットが格納されたメインデータベース（２１）と同様にしてサブデータベース（２２）に対してアクセスして目的とする情報（ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…）を取得することができる。
【００１８】
請求項２の発明によれば、サブデータベース（２２）のフィールド（ＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…）における拡張部（Ｅ）は、拡張フラグ領域（Ｂ１）に拡張フラグを立てるときに限り、拡張基底部（Ｅａ）を形成する。更に、再拡張フラグ領域（Ｅａ１）に再拡張フラグを立てるときに限り、再拡張部（Ｅｂ）を形成する。再拡張フラグ領域（Ｅａ１）に格納された再拡張フラグを参照するだけで再拡張部（Ｅｂ）の有無が分かり、しかも拡張データ領域（Ｅａ２）には部分オフセット（ＯＰ）の全部または一部にかかるデータを格納できる。再拡張部（Ｅｂ）が無いとき、即ち、再拡張フラグ領域（Ｅａ１）に再拡張フラグが立っていないときは、基底データ領域（Ｂ２）と拡張データ領域（Ｅａ２）とに格納されたデータを結合してオフセットとなる。再拡張部（Ｅｂ）が有るとき、即ち、再拡張フラグ領域（Ｅａ１）に再拡張フラグが立っているときは、基底データ領域（Ｂ２）、拡張データ領域（Ｅａ２）及び再拡張部（Ｅｂ）に格納されたデータを結合してオフセットとなる。フィールド（ＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…）は、拡張部（Ｅ）についても再拡張部（Ｅｂ）の有無に従ってデータ長が変わる点で可変長データといえる。アドレス値として不要な領域部分を再拡張部（Ｅｂ）にも適用することで、請求項１に記載した効果に加えて、中位アドレスでも再拡張部（Ｅｂ）を無くしてデータ量を更に減らすことができるうえに、特定長のオフセットが格納されたメインデータベース（２１）と同様にしてサブデータベース（２２）に対してアクセスして目的とする情報（ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…）を取得することができる。
【００１９】
請求項３の発明によれば、前記サブデータベース（２２）に記録された取得可能に縮小した目的の情報は、必要に応じて前記メインデータベース（２１）の特定長のオフセットに拡張するものであるから、請求項１または請求項２に記載の効果に加えて、前記メインデータベース（２１）から抽出したデータベースの可変長オフセットのみを、元に戻し、固定長である特定長オフセットとして処理可能とするものであり、データ処理を従来の固定長である特定長オフセットとしてできるから、前記サブデータベース（２２）を従来のアプリケーションソフトで処理することができる。
【００２０】
請求項４の発明によれば、メインデータベース（２１）のフィールド（Ｆ１,Ｆ２,Ｆ３,Ｆ４,…）に格納されたオフセット（ＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…）は特定長であり、書き替えてサブデータベース（２２）のフィールド（ＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…）に格納されるオフセット（ＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…）は可変長である。即ち、サブデータベース（２２）のフィールド（ＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…）は、特定されたデータ長で形成される基底部（Ｂ）と、拡張フラグ領域（Ｂ１）に拡張フラグを立てるときに限って形成される拡張部（Ｅ）とからなる。更に、基底部（Ｂ）は基底データ領域（Ｂ２）と拡張フラグ領域（Ｂ１）とからなる。拡張フラグ領域（Ｂ１）に格納された拡張フラグが立っているか立っていないかで拡張部（Ｅ）の有無が分かり、しかも基底データ領域（Ｂ２）にはオフセットの全部または一部にかかるデータを格納できる。拡張部（Ｅ）が無いときは基底データ領域（Ｂ２）に格納されたデータがオフセットとしてサブデータベース（２２）にアクセスすればよく、拡張部（Ｅ）が有るときは基底データ領域（Ｂ２）と拡張部（Ｅ）とに格納されたデータがオフセットとしてサブデータベース（２２）にアクセスすればよい。アドレス値として不要な領域部分を拡張部（Ｅ）に適用することで、低位アドレスでは拡張部（Ｅ）を無くしてデータ量を減らすことができるうえに、特定長のオフセットが格納されたメインデータベース（２１）と同様にしてサブデータベース（２２）に対してアクセスして目的とする情報（ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…）を取得することができる。
【００２１】
請求項５の発明によれば、書き替えてサブデータベース（２２）のフィールド（ＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…）における拡張部（Ｅ）は、拡張フラグ領域（Ｂ１）に拡張フラグを立てるときに限り、拡張基底部（Ｅａ）を形成する。更に、再拡張フラグ領域（Ｅａ１）に再拡張フラグを立てるときに限り、再拡張部（Ｅｂ）を形成する。再拡張フラグ領域（Ｅａ１）に格納された再拡張フラグを参照するだけで再拡張部（Ｅｂ）の有無が分かり、しかも拡張データ領域（Ｅａ２）には部分オフセット（ＯＰ）の全部または一部にかかるデータを格納できる。再拡張部（Ｅｂ）が無いとき、即ち、再拡張フラグ領域（Ｅａ１）に再拡張フラグが立っていないときは、基底データ領域（Ｂ２）と拡張データ領域（Ｅａ２）とに格納されたデータを結合してオフセットとしてサブデータベース（２２）にアクセスすればよい。再拡張部（Ｅｂ）が有るとき、即ち、再拡張フラグ領域（Ｅａ１）に再拡張フラグが立っているときは、基底データ領域（Ｂ２）、拡張データ領域（Ｅａ２）及び再拡張部（Ｅｂ）に格納されたデータを結合してオフセットとしてサブデータベース（２２）にアクセスすればよい。アドレス値として不要な領域部分を再拡張部（Ｅｂ）にも適用することで、請求項３に記載した効果に加えて、中位アドレスでも再拡張部（Ｅｂ）を無くしてデータ量を更に減らすことができるうえに、特定長のオフセットが格納されたメインデータベース（２１）と同様にしてサブデータベース（２２）に対してアクセスして目的とする情報（ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…）を取得することができる。
【００２２】
請求項６の発明によれば、前記サブデータベース（２２）に記録された取得可能に縮小した目的の情報は、必要に応じて前記メインデータベース（２１）の特定長のオフセットに拡張するものであるから、請求項４または請求項５に記載の効果に加えて、前記メインデータベース（２１）から抽出したデータベースの可変長オフセットのみを、元に戻し、固定長である特定長オフセットとして処理可能とするものであり、データ処理を従来の固定長である特定長オフセットとしてできるから、前記サブデータベース（２２）を従来のアプリケーションソフトで処理することができる。
【００２３】
請求項７の発明によれば、記録媒体（２０）には請求項１乃至請求項６の何れか１つに記載のサブデータベース（２２）が記録される。このサブデータベース（２２）は、オフセットの低位アドレスでは拡張部（Ｅ）を無くし、従来の技術のようなアドレス値のデータ長を格納する領域が不要になってデータ量を減らせるので、記録媒体（２０）に収録可能な情報量を増やすことができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の最良の形態について、図面に基づいて説明する。なお、実施の形態において、図中、実施の形態の同一記号及び同一符号は、同一または相当する機能部分であるから、ここでは重複する説明を省略する。
【００２５】
〔実施の形態１〕
実施の形態１は、データベースに記録されたフィールドの内容に基づいて情報を取得する可変長オフセット書替装置であり、可変長オフセット書替方法であって、具体的には、図１〜図１１の本発明の実施例のナビゲーション装置を参照しながら説明する。図１は本発明の実施例におけるナビゲーション装置の構成例を模式的に示すブロック図である。図２は本発明の実施例における地図データベースの構造例を示す概念図である。図３は本発明の実施例の再拡張部が無いフィールドの構造例を示す概念図であり、図４は本発明の実施例の再拡張部が有るフィールドの構造例を示す概念図である。図５は本発明の実施例におけるオフセット書替処理の手続き例を示すフローチャートである。図６は本発明の実施例における拡張部処理の手続き例を示すフローチャートである。図７及び図８は本発明の実施例におけるオフセットの格納例を説明する図である。
【００２６】
図１において、自動車等の車両に搭載されるナビゲーション装置、即ち、車載ナビゲーション装置の実施例の構成例について説明する。
図１に示す本実施例のアプリケーションとしてのナビゲーション装置に必要な各種センサからなるセンサ群１０、半導体メモリ、ハードディスク等のうちの１以上からなる記録媒体２０、データベース（即ち、メインデータベース２１またはサブデータベース２２）を用いてＧＰＳ衛星からの電波により位置を測定する衛星航法に加えて、ＧＰＳ衛星からの電波が受信困難な高架下道路、トンネルの中等においても自車位置を検出できる自立航法を採用したナビゲーション制御部３０、操作者が走行開始時の位置を修正したり、出発地や目的地等を入力したりする操作部４０、経路探索を行った結果や、経路案内等を行う音声や表示で出力する出力部５０等を有する。ここで、メインデータベース２１とは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等に格納された地図データベースを意味する。また、このメインデータベース２１としては、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等に格納した音楽、静止画像、動画等の各種データが該当する。サブデータベース２２としては、各アプリケーションの半導体メモリまたはハードディスク等のメモリで、具体的には、半導体メモリ、磁気ディスク、磁気ドラム、磁気テープ、ＣＤ−ＲＯＭ、ＭＤ、ＤＶＤ−ＲＯＭ、光ディスク、ＭＯ、ＩＣカード、光カード、メモリカード等とすることができ、また、例えば、同一メモリにおいて、メインデータベース２１とサブデータベース２２の領域を設定することによっても対応できる。
【００２７】
センサ群１０は、例えば、衛星航法に使用するＧＰＳ（Global Positioning System）センサ、自立航法に使用する地磁気センサ、距離センサ、ステアリングセンサ、ビーコンセンサ、ジャイロセンサ、高度センサ等のうちで、ナビゲーション動作（例えば、経路探索や経路案内等の機能）を行うために必要な１以上のセンサが含まれる。
【００２８】
記録媒体２０は、記録可能なメモリで、少なくとも後述するメインデータベース２１、サブデータベース２２及びソフトウェア２３等を記録可能な媒体である。例えば、半導体メモリ、磁気テープ、磁気ディスク、磁気ドラム、ＣＤ−ＲＯＭ、ＭＤ、ＤＶＤ−ＲＯＭ、光ディスク、ＭＯ、ＩＣカード、光カード、メモリカード等のうちの１以上が該当する。メインデータベース２１及びサブデータベース２２はデータベースの一例である。ソフトウェア２３には、少なくともナビゲーション動作を実現するプログラムや、後述する情報取得処理（図９を参照）を実現するプログラム等を含む。
【００２９】
ナビゲーション制御部３０は、データベースを用いてナビゲーション動作を実現可能に構成されている。具体的には、データベースに対してアクセスを行うデータアクセス手段３１や、衛星航法及び／または自立航法を採用してナビゲーション動作を実現する動作制御手段３２、メインデータベース２１に基づいてサブデータベース２２を作成するデータベース作成手段３３等を有する。データアクセス手段３１には後述する情報取得処理を含み、データベース作成手段３３には後述するデータベース作成処理及びオフセット書替処理を含む。具体的には二点鎖線で示すように、ＣＰＵ、ＲＯＭ、ＲＡＭ、コントローラ等を備え、ＣＰＵがソフトウェア２３を実行することで各手段を個別に実現する。
なお、ナビゲーション動作を実現する処理内容については、一般的であるので、仔細な図示及び説明を省略するが、経路探索機能は目的地を設定したとき、その経路を検索する機能であり、また、経路案内機能は目的地に沿って道路走行中に案内する機能である。
【００３０】
操作部４０は、例えば、車両の乗員等の操作者が走行開始時の位置を修正したり、目的地等を入力したり、修正したりする部位で、例えば、車載ナビゲーション装置本体に設けられた操作キー、押しボタン、ジョグダイヤル、十字キー、タッチパネル等である。なお、リモートコントローラや、マイクロホン等によって構成される音声識別装置等であってもよい。
【００３１】
出力部５０は、経路探索を行った結果や、経路案内等を行う、例えば、表示器５１（具体的にはＬＣＤ、ＥＬ、プラズマ、ＣＲＴ等）、スピーカ５２、図示しないバイブレータ等のうちの１以上が該当する。なお、音声合成装置を備えた場合には、音声合成装置によって合成された音声を出力可能な音声出力装置であってもよい。
【００３２】
ここで、記録媒体２０に記録されるメインデータベース２１及びサブデータベース２２の構造例について図２を参照しながら説明する。
なお、メインデータベース２１を記録する記録媒体２０と、サブデータベース２２を記録する記録媒体２０とは、媒体の種類や、一の媒体か二以上で異なる媒体かを問わない。例えば、メインデータベース２１をＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等のような不揮発性の記録媒体２０に記録し、サブデータベース２２をフラッシュメモリやＲＡＭ等のような揮発性の記録媒体２０に記録する形態が該当する。
【００３３】
図２に示すメインデータベース２１は、複数のフィールドＦ１,Ｆ２,Ｆ３,Ｆ４,…からなるフィールド群ＦＧや、複数の情報Ｄ１,Ｄ２,Ｄ３,Ｄ４,…からなる情報群ＤＧ等を有する。各フィールドＦ１,Ｆ２,Ｆ３,Ｆ４,…には、対応する情報Ｄ１,Ｄ２,Ｄ３,Ｄ４,…の位置を指すオフセット（例えば、アドレスやポインタ等）を格納する。また、各フィールドＦ１,Ｆ２,Ｆ３,Ｆ４,…には、アクセスされる際に自他のフィールドを識別するための固有の識別符号、例えば、番号や記号等が格納される。各情報Ｄ１,Ｄ２,Ｄ３,Ｄ４,…には、地図、経路、道路に関する情報、道路走行中に案内する情報等のような実データが格納される。
【００３４】
また、図２に示すサブデータベース２２は、複数のフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…からなるフィールド群ＳＦＧや、複数の情報ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…からなる情報群ＳＤＧ等を有する。各フィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…には、対応する情報ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…の位置を指すオフセットを格納する。フィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…には、形式は異なるが、実質的には上述したフィールドＦ１,Ｆ２,Ｆ３,Ｆ４,…と同等のデータが格納される。情報ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…には、上述した情報Ｄ１,Ｄ２,Ｄ３,Ｄ４,…と同様の実データが格納される。
【００３５】
メインデータベース２１とサブデータベース２２との相違は、メインデータベース２１のフィールドＦ１,Ｆ２,Ｆ３,Ｆ４,…には固定長の所定のオフセットの格納するのに対して、サブデータベース２２のフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…には可変長のオフセットを格納する点である。
【００３６】
ここで、サブデータベース２２のフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…に格納するオフセットを可変長とするための構造例について、図３及び図４を参照しながら説明する。なお、説明を簡単にするため、拡張フラグは２進数の「０」または「１」を用いて拡張部Ｅの有無を示す。例えば正論理に従って、「拡張部無し」ならば２進数の「０」を用い、「拡張部有り」ならば２進数の「１」を用いる。再拡張フラグ及び上位拡張フラグについても、拡張フラグと同様に取り扱うものと仮定する。以下では、各フラグの参照や設定等における数値「０」または「１」が２進数である旨の記載を省略する。
【００３７】
図３には、基底部Ｂのみにオフセットを格納する場合の例と、基底部Ｂ及び拡張部Ｅにオフセットを格納する場合の例を示す。図４には、基底部Ｂ、拡張基底部Ｅａ及び再拡張部Ｅｂにオフセットを格納する場合の例を示す。
【００３８】
図３に示す例のフィールドＳＦ１,ＳＦ２,ＳＦ４,ＳＦ５,…は、特定されたデータ長で基底部Ｂを形成する。更に、拡張フラグ領域Ｂ１に拡張フラグを立てるときに限り、即ち、拡張フラグ領域Ｂ１に格納する拡張フラグが「１」であるときに限り、拡張部Ｅを形成する。
基底部Ｂは、拡張部Ｅの有無を示す拡張フラグを格納する拡張フラグ領域Ｂ１と、オフセットの全部または一部を格納する基底データ領域Ｂ２とを有する。拡張フラグ領域Ｂ１及び基底データ領域Ｂ２の各データ長は、記録媒体２０に記録する情報量に応じて任意に設定できる。例えば、基底部Ｂが１６ビット（２バイト）のデータ長の場合は、拡張フラグ領域Ｂ１のデータ長を１ビットとし、基底データ領域Ｂ２のデータ長を１５ビットとする。
【００３９】
基底データ領域Ｂ２には、設定されたデータ長の範囲内でオフセットを格納する。設定されたデータ長の範囲外のオフセットの場合には、当該オフセットのデータを分割して、設定されたデータ長で基底データ領域Ｂ２に格納し、残りの部分を拡張部Ｅに格納する。よって、オフセットのデータ長が基底データ領域Ｂ２に設定されたデータ長の範囲内か否かに基づいて、拡張フラグを設定して拡張フラグ領域Ｂ１に格納する。上記例に従えば、１５ビットまでのデータ長からなるオフセットのときは「０」の拡張フラグを設定して拡張フラグ領域Ｂ１に格納し、１６ビット以上のデータ長からなるオフセットのときは「１」の拡張フラグを設定して拡張フラグ領域Ｂ１に格納する。
【００４０】
上述したフィールドＳＦ１,ＳＦ２,ＳＦ４,ＳＦ５,…のデータ構造によれば、拡張フラグ領域Ｂ１に格納された拡張フラグの内容に基づいて、「０」であれば基底データ領域Ｂ２に格納されたデータをそのままオフセットＯＦ１,ＯＦ４とし、「１」であれば基底データ領域Ｂ２及び拡張部Ｅに格納されたデータを結合してオフセットＯＦ２,ＯＦ５とする。後者については、基底データ領域Ｂ２に格納されるデータはオフセットＯＦ２,ＯＦ５の下位アドレスになり、拡張部Ｅに格納されるデータはオフセットＯＦ２,ＯＦ５の上位アドレスになる。
【００４１】
図４に示す例のフィールドＳＦ３,ＳＦ６,…は、拡張部Ｅについて、拡張フラグ領域Ｂ１に拡張フラグを立てるときに限り、即ち、拡張フラグ領域Ｂ１に格納する拡張フラグが「１」であるときに限り、拡張基底部Ｅａを形成する。更に、再拡張フラグ領域Ｅａ１に再拡張フラグを立てるときに限り、即ち、再拡張フラグ領域Ｅａ１に格納する再拡張フラグが「１」であるとき限り、再拡張部Ｅｂを形成する。拡張基底部Ｅａは、再拡張部Ｅｂの有無を示す再拡張フラグを格納する再拡張フラグ領域Ｅａ１と、部分オフセットの全部または一部を格納する拡張データ領域Ｅａ２とを有する。この拡張基底部Ｅａは、再拡張部Ｅｂが無い場合における図３の拡張部Ｅに相当する。
なお、以下の説明では、拡張部Ｅに格納するオフセットの一部、即ち、基底データ領域Ｂ２に格納するデータを除いた残部のデータを単に「部分オフセット」と呼ぶ。
【００４２】
拡張部Ｅは、図３のデータ構造では部分オフセットを格納するのみであるが、図４のデータ構造では拡張基底部Ｅａの拡張データ領域Ｅａ２と再拡張部Ｅｂとに分けて部分オフセットを格納する。再拡張フラグ領域Ｅａ１及び拡張データ領域Ｅａ２の各データ長は、記録媒体２０に記録する情報量に応じて任意に設定できる。例えば、図３の場合と同様にして、再拡張フラグ領域Ｅａ１のデータ長を１ビットとし、拡張データ領域Ｅａ２のデータ長を１５ビットとしてもよい。
【００４３】
拡張データ領域Ｅａ２には、基底データ領域Ｂ２と同様に、設定されたデータ長の範囲内で部分オフセットを格納する。設定されたデータ長の範囲外の部分オフセットの場合には、当該部分オフセットのデータを分割して、設定されたデータ長で拡張データ領域Ｅａ２に格納し、残りの部分を拡張部Ｅに格納する。よって、部分オフセットのデータ長が拡張データ領域Ｅａ２に設定されたデータ長の範囲内か否かに基づいて、再拡張フラグを設定して再拡張フラグ領域Ｅａ１に格納する。上記例に従えば、１５ビットまでのデータ長からなる部分オフセットのときは「０」の再拡張フラグを設定して再拡張フラグ領域Ｅａ１に格納し、１６ビット以上のデータ長からなる部分オフセットのときは「１」の再拡張フラグを設定して再拡張フラグ領域Ｅａ１に格納する。
【００４４】
上述したフィールドＳＦ３,ＳＦ６,…のデータ構造によれば、拡張フラグ領域Ｂ１に格納された拡張フラグの内容に基づいて、「０」であれば基底データ領域Ｂ２及び拡張データ領域Ｅａ２に格納されたデータを結合してオフセットとし、「１」であれば基底データ領域Ｂ２、拡張データ領域Ｅａ２及び再拡張部Ｅｂに格納されたデータを結合してオフセットＯＦ３,ＯＦ６,…とする。後者については、基底データ領域Ｂ２に格納されるデータはオフセットＯＦ３,ＯＦ６,…の下位アドレスになり、拡張データ領域Ｅａ２に格納されるデータはオフセットＯＦ３,ＯＦ６,…の中位アドレスになり、再拡張部Ｅｂに格納されるデータはオフセットＯＦ３,ＯＦ６,…の上位アドレスになる。
【００４５】
図３及び図４に示すデータ構造によれば、拡張フラグ領域Ｂ１や再拡張フラグ領域Ｅａ１の有無に従ってフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…のオフセットＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…のデータ長を可変長にすることができる。実際に適用する場合は、フィールドのデータ長を２バイト以上の可変長となるように、基底部Ｂ、拡張部Ｅ、再拡張部Ｅｂの各データ長を設定するのが望ましい。データ長の上限は必ずしも設ける必要がないが、実際には４バイトあれば十分である。
データ長は、１バイト以上の可変長とすることも可能であるが、アドレス値が１０進数の「１６３８４」番地〜「３２７６７」番地の範囲や、「２０９７１５２」番地〜「４１９４３０３」番地の範囲では余分な領域（１バイト）が必要になるために、容量をコンパクト化する効果が薄れてしまう。一方、２バイト以上の可変長とした場合には、こうした余分な領域も必要としないのでコンパクト化する効果が高まる。
【００４６】
次に、記録媒体２０に記録されているメインデータベース２１に基づいてサブデータベース２２を作成するデータベース作成処理を実行するにあたって、メインデータベース２１のフィールドＦ１,Ｆ２,Ｆ３,Ｆ４,…に格納されていたオフセットのデータをサブデータベース２２のフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…に書き替えて格納する手続きについて、図５、図６を参照しながら説明する。図５に示すオフセット書替処理及び図６に示す拡張部処理は、データベース作成手段３３の一部を具現化した処理例である。なお、データベース作成手段３３は、メインデータベース２１に記録されているデータを取得してサブデータベース２２として作成するものであるが、図５に示すオフセット書替処理及び図６に示す拡張部処理を除けば、単にデータをコピーする処理にすぎないので、図示及び説明を省略する。
【００４７】
図５のオフセット書替処理は、オフセットを取得するメインデータベース２１側のフィールドＦ１,Ｆ２,Ｆ３,Ｆ４,…と、書き替えて格納しようとするサブデータベース２２側のフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…を指定して呼び出される。指定される両者のフィールドの番号は同じ場合もあるし、異なる場合もある。なお、オフセット書替処理を１回実行してフィールドに格納されているオフセットを書き替えるのは１個のオフセットに留まるので、全オフセットを書き替えるには、メインデータベース２１に記録されたフィールド（即ち、オフセット）の数に対応した回数を実行する必要がある。
【００４８】
図５において、まず、メインデータベース２１側で指定されたフィールド（例えば、フィールドＦ１,Ｆ２,Ｆ３,Ｆ４,…）から特定長（固定長）のオフセットのデータを取得する〔ステップＳ１０〕。こうして取得したオフセットをサブデータベース２２側で指定されたフィールド（例えば、フィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…）に格納する過程を以下に説明する。即ち、後述する図５のステップＳ１３,Ｓ１５,Ｓ１７,Ｓ１９及び図６のステップＳ２２,Ｓ２４,Ｓ２６,Ｓ２８,Ｓ２９は、いずれのステップもサブデータベース２２側の指定されたフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…内に格納することを意味する。
【００４９】
ステップＳ１０で取得したオフセットのデータを基底データ領域Ｂ２に格納できるか否かを判別する〔ステップＳ１１〕。基底データ領域Ｂ２に格納できるか否かは、当該基底データ領域Ｂ２に設定されたデータ長に従うことになり、当該データ長で表現可能なアドレス範囲内であるか否かを判別するに等しい。例えば、基底データ領域Ｂ２のデータ長が１５ビットに設定された場合には、アドレス値は１０進数の「０」番地から「３２７６７」番地までの間を表現できる。
【００５０】
もし、オフセットがそのまま基底データ領域Ｂ２に格納できるならば（ＹＥＳ）、拡張フラグを「０」に設定し〔ステップＳ１７〕、設定した拡張フラグを拡張フラグ領域Ｂ１に格納し〔拡張フラグ格納工程；ステップＳ１８〕、指定されたオフセットをそのままデータとして基底データ領域Ｂ２に格納したうえで〔ステップＳ１９〕、データベース作成処理を終えてリターンする。
【００５１】
一方、オフセットが基底データ領域Ｂ２に設定されたデータ長を超える長さのデータ長であるときは、基底データ領域Ｂ２に格納しきれないので（ステップＳ１１でＮＯ）、拡張フラグを「１」に設定し〔ステップＳ１２〕、設定した拡張フラグを拡張フラグ領域Ｂ１に格納し〔拡張フラグ格納工程；ステップＳ１３〕、前記オフセットを分割する〔分割工程；ステップＳ１４〕。即ち、基底データ領域Ｂ２に格納できるデータ長と、これを超える部分のデータ長とに分割する。例えば、基底データ領域Ｂ２のデータ長が１５ビットであり、指定されたオフセットのデータ長が２０ビットのときは、基底データ領域Ｂ２に対応した１５ビットと、格納しきれない残りの５ビットとでオフセットを分割する。
【００５２】
ステップＳ１４で分割したオフセットのうち、基底データ領域Ｂ２に格納できるデータ長に対応した下位アドレス部分のデータを基底データ領域Ｂ２に格納し〔データ格納工程；ステップＳ１５〕、基底データ領域Ｂ２に格納しきれないオフセットの上位アドレス部分は拡張部処理を行って拡張部Ｅに格納したうえで〔データ格納工程；ステップＳ１６〕、データベース作成処理を終えてリターンする。
【００５３】
上述したステップＳ１６を実行して、基底データ領域Ｂ２に格納しきれないオフセットの上位アドレス部分（以下では「部分オフセット」と呼ぶ。）を拡張部Ｅに格納する拡張部処理について、図６を参照しながら説明する。
【００５４】
図６において、部分オフセットが拡張データ領域Ｅａ２に格納できるか否かを判別する〔ステップＳ２０〕。拡張データ領域Ｅａ２に格納できるか否かは、上述したステップＳ１１における基底データ領域Ｂ２に格納できるか否かと同様にして判別する。即ち、拡張データ領域Ｅａ２に設定されたデータ長に従うことになり、当該データ長で表現可能なアドレス範囲内であるか否かを判別するに等しい。
【００５５】
もし、部分オフセットがそのまま拡張データ領域Ｅａ２に格納できるならば（ＹＥＳ）、再拡張フラグを「０」に設定し〔ステップＳ２６〕、設定した再拡張フラグを再拡張フラグ領域Ｅａ１に格納し〔再拡張フラグ格納工程；ステップＳ２７〕、部分オフセットをそのままデータとして拡張データ領域Ｅａ２に格納したうえで〔ステップＳ２８〕、拡張部処理を終えてリターンする。
【００５６】
一方、部分オフセットが再拡張データ領域Ｅａ２に設定されたデータ長を超える長さのデータ長であるときは、再拡張データ領域Ｅａ２に格納しきれないので（ステップＳ２０でＮＯ）、再拡張フラグを「１」に設定し〔ステップＳ２１〕、設定した再拡張フラグを再拡張フラグ領域Ｅａ１に格納し〔再拡張フラグ格納工程；ステップＳ２２〕、前記部分オフセットを分割する〔分割工程；ステップＳ２３〕。即ち、ステップＳ１４と同様にして、再拡張データ領域Ｅａ２に格納できるデータ長と、これを超える部分のデータ長とに分割する。
【００５７】
ステップＳ２３で分割した部分オフセットのうち、再拡張データ領域Ｅａ２に格納できるデータ長に対応した部分オフセットの下位アドレス部分を再拡張データ領域Ｅａ２に格納し〔データ格納工程；ステップＳ２４〕、拡張データ領域Ｅａ２に格納しきれないオフセットの上位アドレス部分を再拡張部Ｅｂに格納したうえで〔データ格納工程；ステップＳ２６〕、拡張部処理を終えてリターンする。
【００５８】
上述したデータベース作成処理を実行して指定したオフセットをフィールド内に格納する例について、図７及び図８を参照しながら説明する。図７及び図８は本発明の実施例におけるオフセットの格納例を説明する図である。
具体的には、図７（Ａ）は基底データ領域Ｂ２にのみ格納可能なオフセットを指定した例を示し、図７（Ｂ）は拡張部Ｅ及び基底データ領域Ｂ２に格納するオフセットを指定した例を示し、図８は再拡張部Ｅｂ、拡張データ領域Ｅａ２及び基底データ領域Ｂ２に格納するオフセットを指定した例を示す。
なお、基底部Ｂのデータ長を２バイト（１６ビット）とし、拡張基底部Ｅａ及び再拡張部Ｅｂのデータ長をそれぞれ１バイト（８ビット）として説明する。また、実線枠内の数値は１６進数を示し、太線枠内の数値は２進数を示す。
【００５９】
図７（Ａ）の１段目（ａ）には、サブデータベース２２に設けられたフィールド群ＳＦＧのフィールドＳＦ１に格納するにあたって、基となるメインデータベース２１に設けられたフィールド群ＦＧのフィールドに格納されていたオフセットＯＦ１の一例を示し、１６進数の「００００１２３４」（４バイトのデータ長）が指定されている。オフセットＯＦ１における下位２バイトを２進数で示すと、２段目（ｂ）のようになる。当該２進数で示すデータの最上位ビットは「０」であるので、下位の１５ビットのデータは基底データ領域Ｂ２に格納することができる。よって、「０」を拡張フラグとして拡張フラグ領域Ｂ１に格納する。即ち、３段目（ｃ）に示すように、フィールドＳＦ１には１６進数の「１２３４」を格納する。したがって、１段目（ａ）に示すオフセットＯＦ１と比べると、２バイトの記録領域を減らすことができる。
【００６０】
上記オフセットＯＦ１が指定された場合に図５のオフセット書替処理を実行すると、図７（Ａ）の１段目（ａ）に示す１６進数の「００００１２３４」からなるオフセットＯＦ１は基底データ領域Ｂ２に格納することができるので（ステップＳ２０でＹＥＳ）、「０」を拡張フラグとして設定し（ステップＳ２６）、当該拡張フラグを拡張フラグ領域Ｂ１に格納し（ステップＳ２７）、３段目（ｃ）に示すような１６進数の「１２３４」を基底データ領域Ｂ２に格納するので（ステップＳ２８）、フィールドＳＦ１には１６進数の「１２３４」（２バイトのデータ長）が格納される。
【００６１】
図７（Ｂ）の１段目（ａ）には、サブデータベース２２に設けられたフィールド群ＳＦＧのフィールドＳＦ２に格納するにあたって、基となるメインデータベース２１に設けられたフィールド群ＦＧのフィールドに格納されていたオフセットＯＦ２の一例を示し、１６進数の「０００Ｆ１２３４」が指定されている。オフセットＯＦ２は、基底データ領域Ｂ２のデータ長をはるかに超えているので、３段目（ｃ）に示すように「１」を拡張フラグとして拡張フラグ領域Ｂ１に設定する。
【００６２】
オフセットＯＦ２における１６進数で上位２桁「Ｆ１」を２進数で示すと、２段目（ｂ）のようになる。基底部Ｂには基底データ領域Ｂ２の上位側に拡張フラグ領域Ｂ１を設ける必要があるので、２段目（ｂ）に示した上位５ビットと下位３ビットとにデータを分割する。上位５ビットのデータは部分オフセットＯＰに該当する。この部分オフセットＯＰ（上位５ビット）を矢印で示すように左に１ビットシフトさせるとともに、拡張フラグ領域Ｂ１を確保して上記拡張フラグを格納する。ビットシフトを行うデータ（５ビットのデータ長）を斜線ハッチで示すとともに、ビットシフト及び格納した後の状態を３段目（ｃ）に示す。繰上ビットＫｕは、ビットシフトによって基底データ領域Ｂ２から拡張部Ｅに繰り上がるデータである。フィールドＳＦ２に格納するデータは、４段目（ｄ）に示すように、１６進数の「１Ｅ９２３４」（３バイトのデータ長）になる。したがって、１段目（ａ）に示すオフセットＯＦ２と比べると、１バイトの記録領域を減らすことができる。
【００６３】
上記オフセットＯＦ２が指定された場合に図５のオフセット書替処理を実行すると、図７（Ｂ）の１段目（ａ）に示す１６進数の「Ｆ１２３４」からなるオフセットＯＦ２は全部のデータを基底データ領域Ｂ２に格納することができないので（ステップＳ２０でＮＯ）、「１」を拡張フラグとして設定し（ステップＳ２１）、当該拡張フラグを拡張フラグ領域Ｂ１に格納し（ステップＳ２２）、１６進数で下位４桁の「９２３４」を基底データ領域Ｂ２に格納するので（ステップＳ２３）、４段目（ｄ）に示すように、フィールドＳＦ２には１６進数の「９２３４」（２バイトのデータ長）が格納される。
【００６４】
オフセットＯＦ２の残部にかかるデータ、即ち、部分オフセットＯＰのデータは図６に示す拡張部処理を実行することになり、当該部分オフセットＯＰのデータは３段目（ｃ）に斜線ハッチで示すように５ビットのデータからなる。部分オフセットＯＰのデータは拡張基底部Ｅａに格納することができるので（ステップＳ３０でＹＥＳ）、「０」を再拡張フラグとして設定し（ステップＳ３７）、当該再拡張フラグを再拡張フラグ領域Ｅａ１に格納するとともに（ステップＳ３８）、１６進数の「１Ｅ」を拡張データ領域Ｅａ２に格納する（ステップＳ３９）。したがって、フィールドＳＦ２には１６進数の「１Ｅ９２３４」（３バイトのデータ長）が格納される。
【００６５】
図５の１段目（ａ）には、サブデータベース２２に設けられたフィールド群ＳＦＧのフィールドＳＦ３に格納するにあたって、基となるメインデータベース２１に設けられたフィールド群ＦＧのフィールドに格納されていたオフセットＯＦ３の一例を示し、１６進数の「ＣＤＥＦ１２３４」が指定されている。オフセットＯＦ３は、基底データ領域Ｂ２及び拡張基底部Ｅａのデータ長を超えているので、４段目（ｄ）に示すように「１」を再拡張フラグとして再拡張フラグ領域Ｅａ１に設定する。なお、１６進数で下位４桁「１２３４」の処理については、上述した図７（Ｂ）の場合と同じであるので、該当部分の図示及び説明を省略する。
【００６６】
オフセットＯＦ３における１６進数で上位４桁を２進数で示すとともに、１６進数で下位４桁の「１２３４」を処理して繰り上がった繰上ビットＫｕのデータ内容「０」と合わせると、２段目（ｂ）のようになる。この２段目（ｂ）に示すデータのうち、基底部Ｂに格納するデータを除いた部分が部分オフセットＯＰに相当し、ハッチで示す。拡張基底部Ｅａには拡張データ領域Ｅａ２の上位側に再拡張フラグ領域Ｅａ１を設ける必要があるので、部分オフセットＯＰのデータについて再拡張フラグ領域Ｅａ１に格納できる下位７ビットと、上位１０ビットとに分ける。下位７ビットは矢印で示すように左に１ビットシフトさせるが、上位１０ビットは再拡張フラグ領域Ｅａ１を確保するために矢印で示すように左に２ビットシフトさせる。この２ビットシフトに伴って、部分オフセットＯＰのデータにおける最上位の２ビット（図中クロスハッチで示す部位のデータ）は捨てられる。ビットシフトを行うデータ（１７ビットのデータ長）をハッチで示すとともに、ビットシフト及び格納した後の状態を３段目（ｃ）に示す。フィールドＳＦ３に格納するデータは、４段目（ｄ）に示すように、再拡張部Ｅｂに格納するデータは１６進数の「７７」であり、拡張基底部Ｅａに格納するデータは１６進数の「ＤＥ」であり、基底データ領域Ｂ２に格納するデータは１６進数の「９２３４」であることを意味する。したがって、１段目（ａ）に示すオフセットＯＦ３とは同じデータ長であるが、従来技術のようなデータ長を格納するための領域は不要になるので、当該領域分の記録領域を減らすことができる。
【００６７】
上記オフセットＯＦ３が指定された場合、図５のオフセット書替処理を実行すると図７（Ｂ）の場合と同様の処理が行われるので、ここでは図６の拡張処理の実行について説明する。図５のオフセット書替処理では、拡張基底部Ｅａのうち下位７ビットのデータが格納されるので（ステップＳ２４）、処理しきれないオフセットＯＦ３の残部（即ち、部分オフセットＯＰ）は、図５の２段目（ｂ）に示すように１７ビットのデータからなる。部分オフセットＯＰの全てを拡張データ領域Ｅａ２に格納することができないので（ステップＳ３０でＮＯ）、「１」を再拡張フラグとして設定し（ステップＳ３１）、当該再拡張フラグを再拡張フラグ領域Ｅａ１に格納する（ステップＳ３２）。
【００６８】
１７ビットのデータからなる部分オフセットＯＰは、拡張データ領域Ｅａ２に格納可能な下位７ビットと、再拡張部Ｅｂに格納する上位１０ビットとに分割する（ステップＳ３３）。こうして分割したデータのうち、下位７ビットは左に１ビットシフトさせて拡張データ領域Ｅａ２に格納し（ステップＳ３４）、残りの上位１０ビットは左に２ビットシフトさせて再拡張部Ｅｂに格納する（ステップＳ３６）。したがって、フィールドＳＦ３に格納するデータは、４段目（ｄ）に示すように、１６進数の「７７ＤＥ９２３４」（４バイトのデータ長）になる。
【００６９】
〔実施の形態２〕
実施の形態２は、オフセットの書き替えが行われたサブデータベース２２に記録されたフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…の内容に基づいて、当該サブデータベース２２に記録された情報ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…を取得する可変長オフセット書替装置または可変長オフセット書替方法であり、具体的実施例として、図９〜図１１の本発明の実施例のナビゲーション装置を参照しながら説明する。図９は本発明の実施例における情報取得処理の手続き例を示すフローチャートである。図１０及び図１１は本発明の実施例におけるオフセットの取得例を説明する図である。
なお、可変長オフセット書替装置の構成等は実施の形態１と同様であり、図示及び説明を簡単にするために実施の形態２では実施の形態１と異なる点について説明する。よって、実施の形態１で用いた要素と同一の要素には同一の符号を付して説明を省略する。
【００７０】
図５のオフセット書替処理及び図６の拡張部処理が行われてオフセットが書き替えられてフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…に格納されたサブデータベース２２が記録された記録媒体２０に対してアクセスし、目的の情報を取得するための情報取得処理について図９を参照しながら説明する。図９の情報取得処理はデータアクセス手段３１の一部を具現化した処理例である。上位の処理プログラムから取得しようとする情報ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…（例えば、情報ＳＤ１）のフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…（例えば、フィールドＳＦ１）を指定したうえで呼び出される。フィールドの指定方法は、フィールドの有無を判別可能な形態であれば任意である。例えば、検索用インデックスの一部にフィールドを形成したり、他のフィールドと識別するための識別子（即ち、番号・記号・符号等）を付すなどが該当する。
【００７１】
図９において、まず、指定された特定のフィールドがサブデータベース２２（より具体的には、図２に示すフィールド群ＳＦＧ内）に存在するか否かを判別する〔ステップＳ４０〕。上述した指定例に従えば、前者は検索用インデックスが検索されるか否かで判別し、後者は指定された識別子があるか否かで判別すればよい。
もし指定されたフィールドが存在しなければ（ＮＯ）、取得しようとする情報がサブデータベース２２（より具体的には、図２に示す情報群ＳＤＧ内）に格納されていないので、情報取得処理を終えてリターンする。
【００７２】
ステップＳ４０で指定されたフィールドが存在すれば（ＹＥＳ）、当該指定されたフィールドから基底部Ｂのデータを取得し〔ステップＳ４１〕、基底部Ｂ内の拡張フラグ領域Ｂ１に格納された拡張フラグの内容（即ち、ビットデータとしての「０」または「１」）に従って処理を分岐する〔ステップＳ４２〕。
【００７３】
もし、拡張フラグが「０」であれば（ＮＯ）、ステップＳ４１で取得した基底部Ｂ内の基底データ領域Ｂ２に格納されたデータをそのままオフセットとする〔ステップＳ４９〕。拡張フラグ領域Ｂ１をマスクすれば、低位側の基底データ領域Ｂ２に格納されたデータはそのままオフセットになる。そして、ステップＳ４９で得られたオフセットに基づいて情報群ＳＤＧから目的とする情報ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…を取得し〔ステップＳ４８〕、情報取得処理を終えてリターンする。例えば、図２のサブデータベース２２の何れか該当するフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…の１つが指定されたときは、当該フィールドの基底データ領域Ｂ２には情報ＳＤ１を指すオフセットが格納されているので、当該オフセットに従ってサブデータベース２２の何れか該当するフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…の１つの情報ＳＤ１を取得する。
【００７４】
ステップＳ４２で拡張フラグが「１」であれば（ＹＥＳ）、指定されたフィールドに拡張部Ｅが立っているので、当該拡張部Ｅのデータを取得し〔ステップＳ４３〕、拡張部Ｅ内の再拡張フラグ領域Ｅａ１に格納された再拡張フラグの内容（即ち、ビットデータとしての「０」または「１」）に従って処理を分岐する〔ステップＳ４４〕。
【００７５】
もし再拡張フラグが「１」であれば（ＹＥＳ）、指定されたフィールドに再拡張部Ｅｂが存在するので、当該再拡張部Ｅｂのデータを取得し〔ステップＳ４５〕、後述するステップＳ４７に進む。一方、再拡張フラグが「０」であれば（ＮＯ）、再拡張部Ｅｂが存在しないので、後述するステップＳ４７に進む。
【００７６】
ステップＳ４７では、拡張フラグ及び再拡張フラグの内容に従って、ステップＳ４１,Ｓ４３,Ｓ４５で取得したデータを結合してオフセットを形成する。
例えば、拡張フラグが「１」であり、かつ再拡張フラグが「０」の場合は、ステップＳ４１で取得した基底データ領域Ｂ２のデータを下位アドレスとし、ステップＳ４３で取得した拡張部Ｅのデータを上位アドレスとしてオフセットを形成する。
同様に、拡張フラグが「１」であり、かつ、再拡張フラグが「１」の場合は、ステップＳ４１で取得した基底データ領域Ｂ２のデータを下位アドレスとし、ステップＳ４３で取得した拡張データ領域Ｅａ２のデータを中位アドレスとし、ステップＳ４５で取得した再拡張部Ｅｂのデータを上位アドレスとしてオフセットを形成する。
【００７７】
こうして情報群ＳＤＧ内の情報にアクセスするためのオフセットが得られたので、当該オフセットに基づいて情報群ＳＤＧから目的とする情報を取得し〔ステップＳ４８〕、情報取得処理を終えてリターンする。
【００７８】
上述した情報取得処理を実行して得られるオフセットの取得例について、図１０及び図１１を参照しながら説明する。図１０及び図１１は本発明の実施例におけるオフセットの取得例を説明する図である。具体的に、図１０（Ａ）には基底データ領域Ｂ２にのみ格納されたデータに基づいてオフセットを取得する例を示し、図１０（Ｂ）には拡張部Ｅ及び基底データ領域Ｂ２に格納されたデータを結合してオフセットを取得する他の例を示す。図１１には再拡張部Ｅｂ、拡張基底部Ｅａ及び基底データ領域Ｂ２に格納されたデータを結合してオフセットを取得する例を示す。なお、実線枠内の数値は１６進数を示し、太線枠内の数値は２進数を示す（太線枠内ではビットデータごとに実線で区切っている）。
【００７９】
図１０（Ａ）の１段目（ａ）には、サブデータベース２２に設けられたフィールド群ＳＦＧのフィールドＳＦ４に記録された一例を示し、１６進数の「１２３４」（２バイトのデータ長）が格納されている。このフィールドＳＦ４を２進数で２段目（ｂ）に示すと、最上位の１ビット（最上部位）が拡張フラグ領域Ｂ１に該当し、下位１５ビットが基底データ領域Ｂ２に該当する。よって、拡張フラグ領域Ｂ１には「０」が格納され、基底データ領域Ｂ２には１６進数の「１２３４」が格納されていることを意味する。
【００８０】
上記フィールドＳＦ４が指定された場合に図９の情報取得処理を実行すると、図１０（Ａ）の１段目（ａ）に示す１６進数の「１２３４」を基底部Ｂのデータとして取得し（ステップＳ４１）、拡張フラグ領域Ｂ１に格納された拡張フラグが「０」であるので（ステップＳ４２でＮＯ）、拡張部Ｅが無い。そのため、３段目（ｃ）に示すように、基底データ領域Ｂ２に格納された１６進数の「１２３４」（２バイトのデータ長）をオフセットＯＦ４として形成し（ステップＳ４９）、当該オフセットＯＦ４に基づいて情報群ＳＤＧ内の情報を取得する（ステップＳ４８）。
【００８１】
図１０（Ｂ）の１段目（ａ）には、サブデータベース２２に設けられたフィールド群ＳＦＧのフィールドＳＦ５に記録された一例を示し、１６進数の「１Ｅ９２３４」（３バイトのデータ長）が格納されている。このフィールドＳＦ５における拡張部Ｅの８ビットと、基底部Ｂの上位４ビットとを合わせて２進数で２段目（ｂ）に示す。最上位ビットが再拡張フラグ領域Ｅａ１に該当し、２ビット目から８ビット目が拡張データ領域Ｅａ２に該当する。再拡張フラグ領域Ｅａ１に格納された再拡張フラグは「０」であるので、再拡張部Ｅｂは存在しないことが分かる。また、基底部Ｂの最上位ビットである拡張フラグ領域Ｂ１に格納された拡張フラグは「１」であるので、拡張部Ｅが存在することが分かる。よって、再拡張フラグ領域Ｅａ１には「１」が格納され、拡張データ領域Ｅａ２には１６進数の「１Ｅ」が格納され、拡張フラグ領域Ｂ１には「１」が格納され、基底データ領域Ｂ２には図１０（Ａ）で示したと同様に１６進数の「１２３４」が格納されていることを意味する。
【００８２】
上記フィールドＳＦ５が指定された場合に図９の情報取得処理を実行すると、図１０（Ｂ）の１段目（ａ）に示す１６進数の「９２３４」を基底部Ｂのデータとして取得し（ステップＳ４１）、拡張フラグ領域Ｂ１に格納された拡張フラグが「１」であるので（ステップＳ４２でＹＥＳ）、拡張部Ｅが有る。再拡張フラグは「０」であるので（ステップＳ４４でＮＯ）、再拡張部Ｅｂが無い。よって、３段目（ｃ）に示すように、拡張フラグ領域Ｂ１を取り除いたうえで、拡張部Ｅのうちで再拡張フラグ領域Ｅａ１を除いた７ビットのデータを矢印で示すように右に１ビットシフトさせる。図中にはビットシフトを行うデータを斜線ハッチで示す。繰下ビットＫｄは、ビットシフトによって拡張基底部Ｅａから基底データ領域Ｂ２に繰り下がるデータである。拡張部Ｅと基底データ領域Ｂ２の各データを結合すると、４段目（ｄ）に示すように、１６進数の「０Ｆ１２３４」（３バイトのデータ長）がオフセットＯＦ５として形成され（ステップＳ４９）、当該オフセットＯＦ５に基づいて情報群ＳＤＧ内の情報を取得する（ステップＳ４８）。
なお、オフセットＯＦ５の最上位桁に示す１６進数の「０」がアドレスとして意味をなさない場合には、５段目（ｅ）に示すように、１６進数の「Ｆ１２３４」をオフセットＯＦ５として取り扱うことも可能である。このように取り扱えば、オフセットを示すのに必要なデータ長（ビット数）をより低減することができる。
【００８３】
図１１の１段目（ａ）には、サブデータベース２２に設けられたフィールド群ＳＦＧのフィールドＳＦ６に記録された一例を示し、１６進数の「７７ＤＥ９２３４」（４バイトのデータ長）が格納されている。このフィールドＳＦ６における再拡張部Ｅｂの８ビットと、拡張基底部Ｅａの８ビットとを分けて２進数で２段目（ｂ）に示す。再拡張部Ｅｂをさらに拡張するデータは無いと仮定するときは、再拡張フラグ領域Ｅａ１に相当する領域は存在しないので、８ビットのデータを全部オフセットとして用いる。拡張基底部Ｅａは、最上位ビットが再拡張フラグ領域Ｅａ１に該当し、下位７ビットが拡張データ領域Ｅａ２に該当する。よって、再拡張部Ｅｂには１６進数の「７７」が格納され、拡張基底部Ｅａには１６進数の「ＤＥ」が格納され、再拡張フラグ領域Ｅａ１と拡張フラグ領域Ｂ１｛図１０（Ｂ）の３段目（ｃ）を参照｝とには「１」がそれぞれ格納され、基底データ領域Ｂ２には図１０と同様に１６進数の「１２３４」が格納されていることを意味する。
【００８４】
上記フィールドＳＦ６が指定された場合に図９の情報取得処理を実行すると、図１１の１段目（ａ）に示す１６進数の「９２３４」を基底部Ｂのデータとして取得し（ステップＳ４１）、拡張フラグ領域Ｂ１に格納された拡張フラグが「１」であるので（ステップＳ４２でＹＥＳ）、拡張部Ｅのデータを取得する（ステップＳ４３）。また、取得した拡張部Ｅのデータには再拡張フラグ領域Ｅａ１に格納された再拡張フラグが「１」であるので（ステップＳ４４でＹＥＳ）、再拡張部Ｅｂのデータを取得する（ステップＳ４５）。２段目（ｂ）から３段目（ｃ）かけて示すように、再拡張フラグ領域Ｅａ１を取り除き、再拡張部Ｅｂに格納された８ビットのデータと、拡張データ領域Ｅａ２に格納された７ビットのデータとを合わせて矢印で示すように右に１ビットシフトさせる。１段目（ａ）に示す１６進数の「９２３４」のデータは、図１０（Ｂ）で示したと同様に、拡張フラグ領域Ｂ１を取り除き、基底データ領域Ｂ２に格納されたデータを下位アドレスする。図中に示す斜線ハッチと繰下ビットＫｄについては、図１０（Ｂ）の場合と同様である。再拡張部Ｅｂ、再拡張フラグ領域Ｅａ１及び基底データ領域Ｂ２のデータを結合すると、４段目（ｄ）に示すように、１６進数の「１ＤＥＦ１２３４」（４バイトのデータ長）がオフセットＯＦ６として形成され（ステップＳ４９）、当該オフセットＯＦ６に基づいて情報群ＳＤＧ内の情報を取得する（ステップＳ４８）。
【００８５】
このように、本発明の実施の形態の可変長オフセット書替装置は、サブデータベース２２に記録された取得可能に縮小した目的の情報は、必要に応じてメインデータベース２１の固定長である特定長オフセットに戻すように拡張するものである。このように、メインデータベース２１から抽出した可変長オフセットのみを、元に戻し、固定長である特定長オフセットとして処理可能とするものである。したがって、従来のアプリケーションソフトが存在する場合には、データ処理を従来の固定長である特定長オフセットとしてできるから、サブデータベース２２を従来のアプリケーションソフトで処理することができる。
【００８６】
〔実施の形態による効果〕
上記実施の形態は、情報Ｄ１,Ｄ２,Ｄ３,Ｄ４,…の位置を特定する特定長のオフセットＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…を格納したフィールドＦ１,Ｆ２,Ｆ３,Ｆ４,…を有するデータベース及びオフセットＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…に基づいてデータベースの特定データをアクセス自在に形成されたメインデータベース２１と、メインデータベース２１をアクセスして得た特定長のオフセットＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…を、下位の桁からデータ領域である基底データ領域Ｂ２に格納し、基底データ領域Ｂ２外の拡張されたデータ領域を利用するときには拡張フラグを立てる拡張フラグ領域Ｂ１とからなる特定されたデータ長で形成された基底部Ｂ、及び基底データ領域Ｂ２に格納できなかったオフセットの残部をデータ領域である拡張部Ｅに格納し、拡張フラグ領域Ｂ１の拡張フラグが立っていないとき、基底データ領域Ｂ２に格納されたデータをオフセットとし、拡張フラグ領域Ｂ１の拡張フラグが立っているとき、基底データ領域Ｂ２と拡張部Ｅとに格納されたデータを結合してオフセットとして目的の情報ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…を取得可能なサブデータベース２２とを具備する可変長オフセット書替装置を構成することができる。
【００８７】
また、上記実施の形態は、拡張部Ｅに格納するオフセットの残部を部分オフセットＯＰとするとき、サブデータベース２２は、更に、下位の桁からデータ領域である拡張データ領域Ｅａ２に格納し、拡張データ領域Ｅａ２外の再拡張されたデータ領域を利用するときには再拡張フラグを立てる再拡張フラグ領域Ｅａ１とで形成された拡張基底部Ｅａ、及び拡張データ領域Ｅａ２に格納できなかった部分オフセットＯＰの残部をデータ領域である再拡張部Ｅｂに格納し、再拡張フラグ領域Ｅａ１の再拡張フラグが立っていないとき、基底データ領域Ｂ２と拡張データ領域Ｅａ２とに格納されたデータを結合してオフセットとし、再拡張フラグ領域Ｅａ１の再拡張フラグが立っているとき、基底データ領域Ｂ２、拡張データ領域Ｅａ２及び再拡張部Ｅｂに格納されたデータを結合してオフセットとして目的の情報ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…を取得可能にした可変長オフセット書替装置を構成することができる。
【００８８】
ここで、オフセットＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…を格納するフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…は、特定されたデータ長で基底部Ｂを形成する。更に、拡張フラグ領域Ｂ１に拡張フラグが存在するときに限り、拡張部Ｅを形成する構成とした（図３を参照）。更に、基底部Ｂは基底データ領域Ｂ２と拡張フラグ領域Ｂ１とで構成した（図３を参照）。拡張フラグ領域Ｂ１に格納された拡張フラグを参照するだけで拡張部Ｅの有無が分かり、しかも基底データ領域Ｂ２にはオフセットＯＦ１の全部または一部にかかるデータを格納できる。拡張部Ｅが無いときは基底データ領域Ｂ２に格納されたデータがオフセットとなり（図７（Ａ）及び図１０（Ａ）を参照）、拡張部Ｅが有るときは基底データ領域Ｂ２と拡張部Ｅとに格納されたデータがオフセットとなる（図７（Ｂ）及び図１０（Ｂ）を参照）。このように、フィールドＦ１,Ｆ２,Ｆ３,Ｆ４,…は拡張部Ｅの有無に従ってデータ長が変わる点で可変長データといえる。アドレス値として不要な領域部分を拡張部Ｅに適用することで、低位アドレスでは拡張部Ｅを無くしてデータ量を減らすことができる。
また、従来の技術ではアドレス値を格納する領域とは別個に、アドレス値のデータ長を格納する領域を必要としていた。しかし、本発明においては、拡張部Ｅの有無を識別する拡張フラグを基底部Ｂの拡張フラグ領域Ｂ１に格納する構造としたので、アドレス値のデータ長を格納する領域を別個に設ける必要が無くなり、更にデータ量を減らせる。
【００８９】
上記実施の形態は、情報Ｄ１,Ｄ２,Ｄ３,Ｄ４,…の位置を特定する特定長のオフセットを格納したフィールドＦ１,Ｆ２,Ｆ３,Ｆ４,…を有するデータベース及びオフセットＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…に基づいてデータベースの特定データをアクセス自在に形成されたメインデータベース２１と、情報ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…の位置を特定するオフセットＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…を格納したフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…を有するデータベース及びオフセットＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…に基づいてデータベースの特定データをアクセス自在に形成されたサブデータベース２２を具備し、メインデータベース２１のフィールドＦ１,Ｆ２,Ｆ３,Ｆ４,…にアクセスして得た特定長のオフセットをサブデータベース２２のフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…に格納するにあたり、下位の桁からデータ領域である基底データ領域Ｂ２に格納し、基底データ領域Ｂ２外の拡張されたデータ領域を利用するときには拡張フラグを立てる拡張フラグ領域Ｂ１とからなる特定されたデータ長で形成された基底部Ｂ、及び基底データ領域Ｂ２に格納できなかったオフセットの残部をデータ領域である拡張部Ｅに格納して書き替えを行い、拡張フラグ領域Ｂ１の拡張フラグが立っていないとき、基底データ領域Ｂ２に格納されたデータをオフセットとし、拡張フラグ領域Ｂ１の拡張フラグが立っているとき、基底データ領域Ｂ２と拡張部Ｅとに格納されたデータを結合してオフセットとして、サブデータベース２２に記録された目的の情報ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…を取得可能にした可変長オフセット書替方法を構成することができる。
【００９０】
また、上記実施の形態は、拡張部Ｅに格納するオフセットの残部を部分オフセットＯＰとするとき、サブデータベース２２のフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…に格納するにあたり、更に、下位の桁からデータ領域である拡張データ領域Ｅａ２に格納し、拡張データ領域Ｅａ２外の再拡張されたデータ領域を利用するときには再拡張フラグを立てる再拡張フラグ領域Ｅａ１とで形成された拡張基底部Ｅａ、及び拡張データ領域Ｅａ２に格納できなかった部分オフセットＯＰの残部をデータ領域である再拡張部Ｅｂに格納して書き替えを行い、再拡張フラグ領域Ｅａ１の再拡張フラグが立っていないとき、基底データ領域Ｂ２と拡張データ領域Ｅａ２とに格納されたデータを結合してオフセットとし、再拡張フラグ領域Ｅａ１の再拡張フラグが立っているとき、基底データ領域Ｂ２、拡張データ領域Ｅａ２及び再拡張部Ｅｂに格納されたデータを結合してオフセットとして、サブデータベース２２に記録された目的の情報ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…を取得可能にした可変長オフセット書替方法を構成することができる。
【００９１】
この基底部Ｂは所定のデータ長（例えば、１６ビット等）からなる固定長データであり、この基底部Ｂの最上位に拡張フラグ領域Ｂ１を配置した（図３、図１０及び図１１を参照）。拡張フラグ領域Ｂ１をマスクすれば、低位側の基底データ領域Ｂ２に格納されたデータはそのままオフセットの全部または一部となるので、簡単にオフセットのデータ内容を取得することができる。
【００９２】
上記実施の形態の記録媒体２０は、サブデータベース２２を記録した記録媒体２０の構成とするものである。
この実施の形態の記録媒体２０によれば、上述したフィールドＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…を備えたサブデータベース２２が記録された記録媒体２０を提供することができる。このサブデータベース２２は、オフセットＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…の低位アドレスでは拡張部Ｅを無くし、従来の技術のようなアドレス値のデータ長を格納する領域が不要になってデータ量を減らせるので、記録媒体２０に収録可能な情報量を増やすことができる。
【００９３】
このように、本発明の実施の形態の可変長オフセット書替装置または可変長オフセット書替方法は、サブデータベース２２に記録された取得可能に縮小した目的の情報は、必要に応じてメインデータベース２１の固定長である特定長オフセットに戻すように拡張するものである。このように、メインデータベース２１から抽出した可変長オフセットのみを、元に戻し、固定長である特定長オフセットとして処理可能とするものである。したがって、従来のアプリケーションソフトが存在する場合には、データ処理を従来の固定長である特定長オフセットとしてできるから、サブデータベース２２を従来のアプリケーションソフトで処理することができる。
【００９４】
〔他の実施の形態〕
以上では本発明を実施するための最良の形態について説明したが、本発明は本発明の要旨を逸脱しない範囲内において、種々なる形態で実施することもできる。例えば、次に示す各形態を実現してもよい。
【００９５】
上記実施の形態では、拡張部Ｅを拡張基底部Ｅａと再拡張部Ｅｂとで構成する例を示した（図４を参照）。この形態に代えて（あるいは加えて）、拡張部Ｅは拡張基底部Ｅａ及び再拡張部Ｅｂとは別個に、更に拡張基底部Ｅａや再拡張部Ｅｂに相当するオフセット格納領域（以下では「上位拡張部」と呼ぶ。）を設けてもよい。この場合は、図６及び図９に示す二点鎖線の処理を行えば実現できる。この処理を以下に説明する。
【００９６】
図６については、ステップＳ２３で分割した部分オフセットの上位部分が再拡張部に格納できるか否かを判別する〔ステップＳ２５〕。部分オフセットの上位部分が再拡張部に格納できる場合は（ＹＥＳ）、実施の形態と同様に処理される。これに対して、部分オフセットの上位部分が再拡張部に格納できない場合は（ＮＯ）、図６の拡張部処理を再帰的に実行すればよい〔ステップＳ３０〕。但し、再帰的に実行する場合の拡張部処理では、「再拡張部」を「上位拡張部」と読み替える。これにより、上位拡張部にもオフセットの一部を格納したフィールドを構成することができるので、フィールドに必要なデータ量をより一層減らすことができ、記録媒体２０の記録可能な情報量を増やすことができる。
【００９７】
図９については、ステップＳ４５で取得した再拡張部Ｅｂのデータについて上位拡張フラグを参照して、更に上位拡張部があるか否かを上位拡張フラグで判別する〔ステップＳ４６〕。もし上位拡張フラグが「１」であれば（ＹＥＳ）、上位拡張フラグが「０」になるまで、ステップＳ４５,Ｓ４６を繰り返す。一般化すると、基底部Ｂ及び拡張部Ｅにおいて、特定されたデータ長（この例では２バイト）からなるデータ内の特定領域に形成されているフラグを参照し、当該フラグが「１」であれば更に上位側にデータが存在するので当該データを取得する。取得したデータ内の特定領域に形成されているフラグが「０」になるまでこの手順を繰り返すことによって、フィールドに格納されている全体のデータを取得する。したがって、フィールドのデータ長は理論的に上限がない。
【００９８】
上位拡張フラグが「０」であれば（ステップＳ４６でＮＯ）、ステップＳ４１、ステップＳ４３、繰り返しステップＳ４５で取得したデータを全て結合してオフセットを形成する〔ステップＳ４７〕。したがって、記録媒体２０の記録容量に対応したフィールドが設定され、そのデータ長が長いものであっても対応することができ、フィールドに必要なデータ量をより一層減らすことができる。
【００９９】
上記実施の形態では、本発明をナビゲーション装置に適用した（図１を参照）。この形態に代えて、ナビゲーション装置以外であって記録媒体２０に記録したデータベースにアクセス可能な装置についても同様に本発明を適用することができる。この場合でも、記録媒体２０に記録するデータベースのフィールドに必要なデータを減らすことができる。
また、上記実施の形態では、記録媒体２０に記録するデータベースの可変長のフィールドについて、書き替え可能な技術として説明したが、本発明を実施する場合は、フィールドの圧縮伸長技術として認識されるものである。
【０１００】
上記実施の形態では、ナビゲーション装置に適用した実施例として説明したが、本発明を実施する場合には、半導体メモリ、磁気テープ、磁気ディスク、磁気ドラム、ＣＤ−ＲＯＭ、ＭＤ、ＤＶＤ−ＲＯＭ、光ディスク、ＭＯ、ＩＣカード、光カード、メモリカード等からなるメインデータベース２１の固定長のフィールドＦ１,Ｆ２,Ｆ３,Ｆ４,…を、他の磁気ドラム、ＣＤ−ＲＯＭ、ＭＤ、ＤＶＤ−ＲＯＭ、光ディスク、ＭＯ、ＩＣカード、光カード、メモリカード等からなるサブデータベース２２に記録された取得可能に縮小した可変長のオフセットとし、更に、サブデータベース２２に記録された取得可能に縮小した可変長のオフセットのみを元に戻すものであるから、従来から使用していたアプリケーションソフトの使用が可能となる。特に、この場合には、大容量のメインデータベース２１から大容量のサブデータベース２２に移し替えるのに好適である。
また、メインデータベース２１とサブデータベース２２とを通信回線（例えば、インターネットやＬＡＮ等）を介して移し替える場合には、通信に必要なデータ量や通信時間を少なく抑えることができる。移し替えた後、通信回線を介してサブデータベース２２にアクセスするにあたっては従来と同様に行える。
【０１０１】
上記実施の形態では、基底部Ｂのデータ長を２バイト（１６ビット）として形成し、拡張基底部Ｅａ及び再拡張部Ｅｂのデータ長をそれぞれ１バイト（８ビット）として形成した（図７、図８、図１０、図１１を参照）。この形態に代えて、基底部Ｂ、拡張基底部Ｅａ及び再拡張部Ｅｂを同一のデータ長で形成してもよく、他のデータ長（例えば、１バイトや３バイト等）で形成してもよい。特に、ＣＰＵがメモリにアクセスして一度に得られるデータのビット数またはバイト数を「ワード」と呼び、基底部Ｂ、拡張基底部Ｅａ及び再拡張部Ｅｂ等のデータ長を１ワードで形成する場合には、メモリに記憶するサブデータベース２２に対してアクセスタイムを最小限に抑えることができる。また、データ値を特定するのに影響が無い上位桁に「０」がある場合には、当該桁を削除して形成すると、記録に必要なデータ量をより減らすことができる。
【０１０２】
上記実施の形態では、拡張フラグ及び再拡張フラグとして格納する内容は、正論理に従って２進数の「０」または「１」を用いて拡張部Ｅ及び再拡張部Ｅｂの有無を示した。この形態に代えて、負論理に従って２進数の「０」または「１」を用いてもよく、「Ｈ（High）」または「Ｌ（Low）」を示す数値や符号等のデータを用いてもよく、「立っている」または「倒れている」を示す数値や符号等のデータを用いてもよい。いずれにせよ、拡張部Ｅ及び再拡張部Ｅｂの有無を示す数値・符号等のデータであればよい。こうした形態であっても拡張部Ｅ及び再拡張部Ｅｂの有無を確実に示すことができるので、上述した実施の形態と同様の作用効果を得ることができる。
【図面の簡単な説明】
【０１０３】
【図１】図１は本発明の実施例のナビゲーション装置における構成例を模式的に示すブロック図である。
【図２】図２は本発明の実施例のナビゲーション装置における地図データベースの構造例を示す概念図である。
【図３】図３は本発明の実施例のナビゲーション装置における再拡張部が無いフィールドの構造例を示す概念図である。
【図４】図４は本発明の実施例のナビゲーション装置における再拡張部が有るフィールドの構造例を示す概念図である。
【図５】図５は本発明の実施例におけるオフセット書替処理の手続き例を示すフローチャートである。
【図６】図６は本発明の実施例における拡張部処理の手続き例を示すフローチャートである。
【図７】図７は本発明の実施例のナビゲーション装置におけるオフセットの格納例を説明する図である。
【図８】図８は本発明の実施例のナビゲーション装置におけるオフセットの格納の別例を説明する図である。
【図９】図９は本発明の実施例のナビゲーション装置における情報取得処理の手続き例を示すフローチャートである。
【図１０】図１０は本発明の実施例のナビゲーション装置におけるオフセットの取得例を説明する図である。
【図１１】図１１は本発明の実施例のナビゲーション装置におけるオフセットの取得の別例を説明する図である。
【符号の説明】
【０１０４】
２０  記録媒体
２１  メインデータベース
２２  サブデータベース
３１  データアクセス手段
３３  データベース作成手段
ＦＧ  フィールド群
Ｆ１,Ｆ２,Ｆ３,Ｆ４,…  フィールド
ＤＧ  情報群
Ｄ１,Ｄ２,Ｄ３,Ｄ４,…  情報
Ｂ  基底部
Ｂ１  拡張フラグ領域
Ｂ２  基底データ領域
Ｅ  拡張部
Ｅａ  拡張基底部
Ｅａ１  再拡張フラグ領域
Ｅａ２  拡張データ領域
Ｅｂ  再拡張部
ＯＦ１,ＯＦ２,ＯＦ３,ＯＦ４,…  オフセット
ＯＰ  部分オフセット
ＳＦＧ  フィールド群
ＳＦ１,ＳＦ２,ＳＦ３,ＳＦ４,…  フィールド
ＳＤＧ  情報群
ＳＤ１,ＳＤ２,ＳＤ３,ＳＤ４,…  情報
【図１】
2010152447.tif 000003
【図２】
2010152447.tif 000004
【図３】
2010152447.tif 000005
【図４】
2010152447.tif 000006
【図５】
2010152447.tif 000007
【図６】
2010152447.tif 000008
【図７】
2010152447.tif 000009
【図８】
2010152447.tif 000010
【図９】
2010152447.tif 000011
【図１０】
2010152447.tif 000012
【図１１】
2010152447.tif 000013