(57)【要約】      （修正有）【課題】リニアトラックを有し、オブジェクトのマルチ解像度画像システムをメモリーストレージ上に記録する改善された方法を提供する。【解決手段】マルチ解像度画像システムは、画像のセットを含む。各画像は、オブジェクトを示し、それぞれの解像度を有する。記録は、画像セットの空間充填曲線からリニアトラックへの連続単射による。空間充填曲線は、異なる画像へ飛び越す。空間充填曲線と各画像との交点は、ヒルベルト曲線上にある。【選択図】図３
2017174393.tif 000002
【特許請求の範囲】
【請求項１】
リニアトラックを有し、オブジェクトのマルチ解像度画像システムが記録されたメモリーストレージであって、
前記マルチ解像度画像システムは、各画像が前記オブジェクトを表し、それぞれの解像度を有する画像のセットを含み、
前記記録は、前記画像のセットの空間充填曲線から前記リニアトラックへの連続単射により、
前記空間充填曲線は、異なる画像間を飛び越し、
前記空間充填曲線と各画像との交点がヒルベルト曲線上にある
メモリーストレージ。
【請求項２】
前記空間充填曲線が、当該空間充填曲線とすべての画像との交点、及び画像の組の間のリンクを含み、
一のリンクは常に第１解像度を有する一の画像と、第２解像度を有する別の画像との間にあり、
前記第２解像度は、前記マルチ解像度画像システムにおいて前記第１解像度の１段階上の解像度である
請求項１に記載のメモリーストレージ。
【請求項３】
前記画像はそれぞれ、各々が各領域をカバーするタイルを含み、
前記画像の各タイルは、関連するタイルのそれぞれに対しゾーンをカバーする前記第２解像度の画像のタイルと関連する第１解像度を有する
請求項２に記載のメモリーストレージ。
【請求項４】
前記空間充填曲線は、関連するタイルを横断する前に、前記ゾーンを共にカバーし、前記第２解像度を有する前記画像のすべてのタイルを横断する
請求項３に記載のメモリーストレージ。
【請求項５】
前記空間充填曲線は、関連するタイルを横断する前に、前記ゾーンを共にカバーし、前記第２解像度を有する前記画像の一部を横断する
請求項３に記載のメモリーストレージ。
【請求項６】
前記タイルの一部は、前記タイルの半分である
請求項５に記載のメモリーストレージ。
【請求項７】
前記オブジェクトが地形であり、
前記画像がマップである
請求項１乃至６のいずれか一項に記載のメモリーストレージ。
【請求項８】
請求項１乃至７のいずれか一項に記載のメモリーストレージを製造するための、コンピュータに実装された方法であって、
リニアトラックを有するメモリーストレージを提供するステップと、
オブジェクトのマルチ解像度画像システムを提供するステップと、
前記マルチ解像度画像システムを、連続単射により前記メモリーストレージ上に記録するステップと
を有する、コンピュータに実装された方法。
【請求項９】
請求項１乃至７のいずれか一項に記載のメモリーストレージに基づいてオブジェクトのレンダリングを行うための、コンピュータに実装された方法であって、当該方法は、
前記オブジェクトの前記マルチ解像度画像システムにおける１又は複数の画像の少なくとも一部をレンダリングするステップを有し、
前記レンダリングは、画像内における水平方向及び／又は水平方向の移動によって更新される
コンピュータに実装された方法。
【請求項１０】
請求項８及び／又は請求項９に記載の方法を実行するための命令群を含むコンピュータプログラム。
【請求項１１】
請求項１０に記載のプログラムが記録された、コンピュータ読み取り可能な記録媒体。
【請求項１２】
グラフィカルユーザーインターフェース、請求項１０に記載されたプログラムが記録されたメモリー、及び／又は請求項１乃至７のいずれか一項に記載のメモリーストレージに接続されたプロセッサーを有するコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータサイエンスに関し、より詳細には、地形のマルチ解像度画像システムが記録されたメモリーストレージに関する。
【背景技術】
【０００２】
マルチ解像度画像システムを用いた画像レンダリング（地形レンダリングなど）を含む、２次元及び／又は３次元の体験を提供する種々のアプリケーションが市場には存在する。このようなアプリケーションの例としては、Google Earth、Google Map、ＧＰＳベースのアプリケーション（例えばＧＰＳナビゲーション）等の製品がある（それぞれ登録商標）。また、フライトシミュレーションアプリケーションは地形レンダリングの別の例である。これらのアプリケーションは、ユーザーインタラクション時にレンダリングを実行／更新するため、通常、オブジェクト（例えば地形）のマルチ解像度画像（例えばマップ）システムを使用する。マルチ解像度マップシステムは、通常、地形を表す非常に大きなマップのセットを有する。このようなシステムは、通常、大容量のメモリーストレージ（例えばハードドライブ）に記憶される必要がある。また、通常、これらのマップは、高速メモリー（例えばＲＡＭ又はビデオメモリー）に同時に読み込まれるわけではない。アプリケーションは、継続的にマップを読み込み及び／又は解放する必要がある。これは、アプリケーションのパフォーマンス（例えばフレームレート）に影響を明らかに与える。データの読み込み処理に関する問題を解消する方法はいくつか知られている。例えば、マップは、圧縮アルゴリズムを用いて圧縮された状態でハードドライブに記憶されてもよい（圧縮フォーマットは、例えば、JPEG、JPEG2000、PNG、又はHD PHOTOである）。
【０００３】
このような背景の下、メモリーストレージにおいてオブジェクトのマルチ解像度画像システムを記録するための方法の改善が求められている。
【発明の開示】
【０００４】
本発明は、リニアトラックを有し、オブジェクトのマルチ解像度画像システムが記録されたメモリーストレージであって、前記マルチ解像度画像システムは、各画像が前記オブジェクトを表し、それぞれの解像度を有する画像のセットを含み、前記記録は、前記画像のセットの空間充填曲線から前記リニアトラックへの連続単射により、前記空間充填曲線は、異なる画像間を飛び越し、前記空間充填曲線と各画像との交点がヒルベルト曲線上にあるメモリーストレージを提供する。
【０００５】
前記空間充填曲線が、当該空間充填曲線とすべての画像との交点、及び画像の組の間のリンクを含み、一のリンクは常に第１解像度を有する一の画像と、第２解像度を有する別の画像との間にあり、前記第２解像度は、前記マルチ解像度画像システムにおいて前記第１解像度の１段階上の解像度であってもよい。
【０００６】
前記画像はそれぞれ、各々が各領域をカバーするタイルを含み、前記画像の各タイルは、関連するタイルのそれぞれに対しゾーンをカバーする前記第２解像度の画像のタイルと関連する第１解像度を有してもよい。
【０００７】
前記空間充填曲線は、関連するタイルを横断する前に、前記ゾーンを共にカバーし、前記第２解像度を有する前記画像のすべてのタイルを横断してもよい。
【０００８】
前記空間充填曲線は、関連するタイルを横断する前に、前記ゾーンを共にカバーし、前記第２解像度を有する前記画像の一部を横断してもよい。
【０００９】
前記タイルの一部は、前記タイルの半分であってもよい。
【００１０】
前記オブジェクトが地形であり、前記画像がマップであってもよい。
【００１１】
また、本発明は、上記のメモリーストレージを製造するための、コンピュータに実装された方法であって、リニアトラックを有するメモリーストレージを提供するステップと、オブジェクトのマルチ解像度画像システムを提供するステップと、前記マルチ解像度画像システムを、連続単射により前記メモリーストレージ上に記録するステップとを有する、コンピュータに実装された方法を提供する。
【００１２】
また、本発明は、上記のいずれか一項に記載のメモリーストレージに基づいてオブジェクトのレンダリングを行うための、コンピュータに実装された方法であって、当該方法は、前記オブジェクトの前記マルチ解像度画像システムにおける１又は複数の画像の少なくとも一部をレンダリングするステップを有し、前記レンダリングは、画像内における水平方向及び／又は水平方向の移動によって更新される、コンピュータに実装された方法を提供する。
【００１３】
また、本発明は、上記の方法を実行するための命令群を含むコンピュータプログラムを提供する。
【００１４】
また、本発明は、上記のプログラムが記録された、コンピュータ読み取り可能な記録媒体を提供する。
【００１５】
また、本発明は、グラフィカルユーザーインターフェース、請求項１０に記載されたプログラムが記録されたメモリー、及び／又は上記のメモリーストレージに接続されたプロセッサーを有するコンピュータシステムを提供する。
【図面の簡単な説明】
【００１６】
【図１】メモリーストレージを製造する方法を例示するフローチャート。
【図２】メモリーストレージを含むシステムを例示する図。
【図３】マルチ解像度マップシステム及びメモリーストレージ上におけるその記録、及び／又はそのようなメモリーストレージを用いた地形レンダリングを示す図。
【図４】マルチ解像度マップシステム及びメモリーストレージ上におけるその記録、及び／又はそのようなメモリーストレージを用いた地形レンダリングを示す図。
【図５】マルチ解像度マップシステム及びメモリーストレージ上におけるその記録、及び／又はそのようなメモリーストレージを用いた地形レンダリングを示す図。
【図６】マルチ解像度マップシステム及びメモリーストレージ上におけるその記録、及び／又はそのようなメモリーストレージを用いた地形レンダリングを示す図。
【図７】マルチ解像度マップシステム及びメモリーストレージ上におけるその記録、及び／又はそのようなメモリーストレージを用いた地形レンダリングを示す図。
【図８】マルチ解像度マップシステム及びメモリーストレージ上におけるその記録、及び／又はそのようなメモリーストレージを用いた地形レンダリングを示す図。
【図９】マルチ解像度マップシステム及びメモリーストレージ上におけるその記録、及び／又はそのようなメモリーストレージを用いた地形レンダリングを示す図。
【図１０】マルチ解像度マップシステム及びメモリーストレージ上におけるその記録、及び／又はそのようなメモリーストレージを用いた地形レンダリングを示す図。
【図１１】マルチ解像度マップシステム及びメモリーストレージ上におけるその記録、及び／又はそのようなメモリーストレージを用いた地形レンダリングを示す図。
【図１２】マルチ解像度マップシステム及びメモリーストレージ上におけるその記録、及び／又はそのようなメモリーストレージを用いた地形レンダリングを示す図。
【図１３】マルチ解像度マップシステム及びメモリーストレージ上におけるその記録、及び／又はそのようなメモリーストレージを用いた地形レンダリングを示す図。
【発明を実施するための形態】
【００１７】
マルチ解像度画像システムは、複数で１セットの画像（すなわち２次元グラフィック描画を可能にするデータ）を有する。各画像は、それぞれ異なる解像度（詳細さのレベル）で、あるオブジェクト（すなわち同一のオブジェクト）を表す。画像はどのようなものでもよく、例えば、平面マップ又は地形図、写真、人工画像、又はＣＡＤモデル及び／又レンダリングである。オブジェクトそれ自体はどのようなものでもよく、例えば、地形、工業製品、自然物、人工の又はシミュレーションされたオブジェクト、又はＣＡＤモデルである。どの場合においても、画像は、オブジェクトを異なる解像度でレンダリングするためのデータを少なくとも含む。その結果、異なる解像度におけるオブジェクトの２次元グラフィック描画が可能になる。（同一のオブジェクトについて）異なる解像度の画像が存在することにより、画像セット内をインタラクティブに「ナビゲート」することができる。これにより、レンダリング（オブジェクト上にレンダリングする位置及び／又は解像度）を更新することができる。以下において、説明のため、また、ここではレンダリングアプリケーションを実行するためにはデータサイズが重要な問題であるので、メモリーストレージが地形のマルチ解像度マップシステムを記憶するような、画像がマップでありオブジェクトが地形である例を重点的に説明する。しかし、以下の説明は他の種類のオブジェクトにも適用可能である。
【００１８】
図１に示されるように、メモリーストレージは取得可能であり、コンピュータに実装される方法により製造されることができる。この方法は、リニアトラックを有するメモリーストレージを提供するステップＳ１２、及びマルチ解像度マップシステムを提供するステップＳ１４を有する。この方法は、マルチ解像度マップを連続単射によりメモリーストレージに記録するステップＳ２０を有する。記録するステップＳ２０は、連続単射の制約が守られている限りどのように行われてもよく、標準的なハードウェア／ソフトウェアにより行われてもよい。また、記録するステップＳ２０は、スクラッチから行われてもよく、例えば、ステップＳ１４において遠隔サーバからマルチ解像度マップシステムを受信するクライアントにより行われてもよい。あるいは、記録するステップは、メモリーストレージに記録されたマルチ解像度システムをデフラグメンテーションすることにより、既に記録されているデータの整理から構成されてもよい（ただしデフラグメンテーションに先立つ連続単射は考慮しない）。この場合、データは単にメモリーストレージにおいて取得される。メモリーストレージは、後述する地形レンダリング等どのようなアプリケーション方法に使用されてもよい。
【００１９】
ここで説明される方法はコンピュータに実装される。これは、これらの方法におけるステップ（実質的にはすべてのステップ）が少なくとも１つのコンピュータ又は類似したシステムにより実行されることを意味する。したがって、これらの方法におけるステップは、完全に自動的に、又は半自動的にコンピュータにより実行され得る。例えば、これらの方法は、ユーザーとコンピュータとのインタラクションを通じてトリガーされるステップを有してもよい。ユーザーとコンピュータとのインタラクションは、予期される自動化のレベルに依存してもよく、ユーザーの希望を実現する必要性とのバランスを取ってもよい。例えば、自動化のレベルはユーザーにより定義されてもよいし、及び／又はあらかじめ決められていてもよい。
【００２０】
これらの方法をコンピュータに実装する典型的な例は、この目的に適合したシステムを用いてこれらの方法を実行することである。このシステムは、メモリーに接続されたプロセッサー及びグラフィカルユーザーインターフェース（ＧＵＩ）を有してもよい。このメモリーは、これらの方法を実行するためのコンピュータプログラムを記憶していてもよい。このメモリーは、データベースを記憶してもよい。このメモリーは、そのようなストレージに適したものであればどのようなハードウェア構成を有してもよく、物理的に区別された領域を有してもよい（例えば、ある領域はプログラム用であり、ある領域はデータベース用である）。とりわけ、このシステムは、プロセッサーに接続されたメモリーストレージを有してもよい。このメモリーストレージは、ステップＳ２０の実行の前に考慮されたか、又はその後で考慮されたかに応じて、マルチ解像度マップシステムを（連続単射によって）記憶してもよい。なお、以下において、「メモリーストレージ」というときは、連続単射によりマルチ解像度システムが記憶されていると解する。
【００２１】
図２は、そのようなシステムの例としてクライアントコンピュータシステム（例えばユーザーにより操作されるワークステーション）を示す。この例におけるクライアントコンピュータは、内部通信バス１０００に接続された中央演算装置（ＣＰＵ）１０１０、及びこのバスに接続されたランダムアクセスメモリー（ＲＡＭ）１０７０を有する。このクライアントコンピュータは、このバスに接続されたビデオＲＡＭ１１００と関連付けられたグラフィック処理装置（ＧＰＵ）１１１０をさらに有する。ビデオＲＡＭ１１００は、この技術分野においてはフレームバッファーとしても知られている。大容量ストレージデバイスコントローラー１０２０は、マルチ解像度マップシステムが記録され得るメモリーストレージへのアクセスを管理する（この例において、大容量メモリーデバイスとはすなわちハードドライブ１０３０である）。コンピュータプログラム命令及びデータを明白に具体化するのに適した大容量メモリーデバイスは、あらゆる種類の不揮発性メモリー（例示として、ＥＰＲＯＭ、ＥＥＰＲＯＭ、及びフラッシュメモリー等の半導体メモリーデバイス、内蔵ハードディスク及びリムーバブルディスクのような磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭディスク１０４０）を含む。これらのものは、専用に設計されたＡＳＩＣ（application-specific integrated circuits）により付加され、又は実装されてもよい。ネットワークアダプタ１０５０はネットワーク１０６０へのアクセスを管理する。クライアントコンピュータは、カーソル制御デバイス、キーボード等の触覚デバイス１０９０を有してもよい。カーソル制御デバイスは、クライアントコンピュータにおいて、ユーザーがカーソルをディスプレイ１０８０上の所望の位置に移動させることを可能にする。さらに、カーソル制御デバイスは、ユーザーが各種のコマンドを選択すること、及び制御信号を入力することを可能にする。カーソル制御デバイスは、入力制御信号をシステムに入力するための信号生成装置を含む。典型的には、カーソル制御デバイスはマウスであってもよく、この場合マウスのボタンは信号を生成するために用いられる。マウスに代えて、又は加えて、クライアントコンピュータはタッチパッド及び又はタッチスクリーンを有してもよい。
【００２２】
コンピュータプログラムは、コンピュータ実行可能な命令を含んでいてもよい。これらの命令は、上記のシステムにこの方法を実行させるための手段を含む。このプログラムは、どのようなデータストレージ媒体に記憶されてもよく、このシステムのメモリーに記憶されてもよい。このプログラムは、デジタル電子回路、又はコンピュータのハードウェア、ファームウェア、ソフトウェア、若しくはこれらの組み合わせに実装されてもよい。このプログラムは、例えばプログラム可能なプロセッサーにより実行されるためのコンピュータ読み取り可能なストレージデバイスに実装された製品である装置として実装されてもよい。方法におけるステップは、入力を処理し、出力を生成することにより、この方法の機能を実現するための命令群のプログラムを実行する、プログラム可能なプロセッサーにより実行されてもよい。このプロセッサーは、このようにプログラム可能でもよく、データストレージシステム、少なくとも１つの入力デバイス、及び少なくとも１つの出力デバイスに対し、データ及び命令を受信し、データ及び命令を送信してもよい。アプリケーションプログラムは、ハイレベルの手続き型プログラミング言語、又はオブジェクト指向型プログラミング言語、若しくは要望があればアセンブリ又は機械語により実装されてもよい。いずれの場合においても、プログラム言語はコンパイル型でもインタープリター型でもよい。プログラムはフルインストール型でもアップデートプログラムでもよい。システムにおけるプログラムのアプリケーションは、どのような場合であれ、この方法を実行するための命令群を有する。
【００２３】
メモリーストレージは、マルチ解像度マップシステムを改良された方法で記憶する。とりわけ、マップとリニアトラックとの間の、空間充填曲線を介した特定の「連続単射」関係、及び空間充填曲線が異なるマップ（各マップはヒルベルト曲線を形成する）を飛び越し、空間充填曲線と各マップとの交点がヒルベルト曲線を形成するおかげで、メモリーストレージは、マップ内、及び／又は２つの交錯するマップ間を移動する際に、ヘッド／リーダーの物理的な移動（ミリメートル又はマイクロメートル単位における距離）が相対的に少なくなり、したがって読み込みが（時間の観点で、例えば秒又はミリ秒でカウントされる）相対的に高速になることを保証する。
【００２４】
メモリーストレージは、永続的な（すなわち不揮発性の）メモリーストレージであれば、どのようなハードウェアシステム（例えば組み込みソフトウェア）であってもよい。実際、マルチ解像度マップシステムは、揮発性メモリーにすべてを記憶するにはサイズが大きすぎる（例えば、１テラオクテット（Ｔｏ）すなわち１０１２オクテット程度の大きさであり、例えば、０．１又は０．５Ｔｏより大きく、２、１０、又は１００Ｔｏより小さい）。これは、メモリーストレージがマルチ解像度マップシステムに基づくアプリケーションを実行するクライアントシステムとして同じ装置に含まれる（すなわち物理的に接続される）場合にかなり当てはまるが、メモリーストレージがサーバシステム又はそのようなアプリケーションに含まれる場合にも当てはまる。メモリーストレージは、例えばハードディスクドライブ（ＨＤＤ）等、どのようなディスクドライブ及び／又はハードドライブであってもよい。
【００２５】
この技術分野において広く知られているように、このようなメモリーストレージは典型的には、情報／データを記録するための少なくとも１つのリニアトラック（ほとんどの場合、複数の同心円又は同心円筒であるが、フロッピーディスクのように単一のトラックである場合もある）を有する。メモリーストレージシステムによる一連の読み出し及び／又は書き込み処理の間、その処理が継続的かつ連続的にリニアトラックに割り当てられているとき、メモリーストレージシステムのヘッド／リーダー（ディスクの読み出し／書き込みヘッド）の物理的な移動は、距離及びその結果として時間の観点において最適化（すなわち最小化）される。メモリーストレージは、マルチ解像度マップシステムの記録を最適化するためにこの特性を使用する。
【００２６】
なお、以下の説明は、これに限定する趣旨ではなく、リニアトラックが単一でない例（例えば、マルチ解像度マップシステムが単一のリニアトラックにはメモリーサイズの観点において大きすぎる例）にも適用可能である。実際、そのような例において、例えば、複数のリニアトラック間の「接続」が行われた場合（当業者であれば何らかの方法で行うことができる）でも、ここでの説明は直接適用される。例えば、メモリーストレージの複数のリニアトラック、例えば（ヘッドの移動距離を最小にするため）隣り合うリニアトラックは、連続的に接続されてもよい。これにより、接続されたリニアトラック及びそれらの接続とともに全体的なリニアトラック（すなわち、単一の異なるリニアトラックの集合）が定義される。これらはすべて、それ自体公知である。したがって、以下の説明は明確にするため単一のリニアトラックの例を用いるが、これに限定されるものではない。
【００２７】
メモリーストレージには、地形のマルチ解像度システムが記憶される（メモリーストレージは物理的に記憶する）。「地形」という語は、土地のいかなる領域をも指す。「マルチ解像度マップシステム」は、それ自体知られているように、地形の複数のマップのセットを含む、系統的なデータである。各マップは、各解像度において地形（の少なくとも一部）を表す。これは、各マップが、各解像度において地形のレンダリング（及びグラフィック表示）を可能にするデータを含むことを意味する。どのようなレンダリングも考慮され得る（例えば、２Ｄ及び／又は３Ｄ、カラー及び／又はグレースケール）。 地形を表すデータは、メモリーストレージにおける専用の物理コンポーネント（より詳細には、前述のとおりリニアトラック）に記憶される。データは、マルチ解像度マップシステムの専用のアプリケーションによって地形のレンダリングを可能にするどのような形式のデータでもよい。
【００２８】
このようなデータ構造は、（既に言及されたような）多くの異なるアプリケーション（マルチ解像度マップシステムにおける、少なくとも一部の、１又は複数のマップのレンダリングを含む）により使用されてもよい（例えば、ユーザーインタラクション及び／又はアプリケーションの自動モードにおいて）。典型的には、そのようなアプリケーションが実行されていると、レンダリングは、連続する水平方向の、及び／又は垂直方向の移動によって、（継続的に）更新される（すなわち、レンダリングは展開し、変更される）。このような移動は、ユーザー及び／又はアプリケーションのプロセスにより命令される移動に含まれてもよい。水平方向の移動は、解像度を固定したままの移動である（換言すると、水平方向の移動は、アプリケーションに対し送信される、解像度を維持したまま地形の別の部分をレンダリングする要求である）。垂直方向の移動は、地形上の固定された点に対する移動である（換言すると、垂直方向の移動は、アプリケーションに対し送信される、地形上の位置を固定したまま、解像度を変更してレンダリングする要求である（典型的には、拡大又は縮小である））。このような移動は連続的に行われる。すなわち、マップのある部分において、ある解像度から別の解像度にレンダリングを変更するときに「ジャンプ」はない。なお、連続性の概念は、コンピュータにそのような方法を実装する観点（ここで、データは数値を表す）から理解される。
【００２９】
すなわち、与えられた時刻において、地形のうち少なくとも与えられた部分が、与えられた解像度でレンダリングされる。ここで、専用のアプリケーションの（その時点の）特定のスケジュールに依存して（例えば、マルチ解像度マップ閲覧アプリケーション（例えばGoogleマップ）において、前述のスケジュールは、ユーザーにより行われるアクションのシーケンスによって定義される。このアクションのシーケンスは、例えば、北、東、南、及び／又は西への移動、及び／又は拡大及び／又は縮小の１つ以上の組み合わせを含み、典型的には、マウスのクリック及び／又はタッチジェスチャによって行われる。）、レンダリングされる地形の一部、及び／又はレンダリングが行われる解像度は、例えば連続的に更新される。なお、ユーザーがマップの特定の特徴を観察するために一時停止が実装され得るように、連続的な更新は、必ずしもレンダリングが継続的に修正されることを意味するものではない。
【００３０】
何らかの移動が行われ、レンダリングが更新されるとき、マルチ解像度マップシステムの異なる部分が、メモリーストレージから、アプリケーションにより使用されるメモリー（例えば、割り当てられた揮発性メモリー）に読み込まれる必要がある。アプリケーションが実行されているときに上記の移動が行われると、マルチ解像度マップシステムが記憶される特定の方法が、そのような読み込みの時間の利益を得ることを可能にする（もちろんこれは、アプリケーションが必要なら「ジャンプ」することを禁止するものではない）。
実際、マルチ解像度マップシステムの記録は、マップのセットの空間充填曲線からリニアトラックへの連続単射による。換言すると、マルチ解像度マップシステムのマップのセットは任意の方法でメモリーストレージに記憶されるわけではなく、例えば、ランダムに記憶されるわけではなく、又は標準のオペレーティングシステムによって記憶、メモリーストレージのふるまいによって記憶されるわけではない。むしろ、マルチ解像度マップシステムの記録は、リニアトラックの記録ブロックの順序を考慮し、特定の構造／スキーマに関して、マルチ解像度マップシステムを形成する種々のデータ片を記憶する。マルチ解像度マップシステムの記録を理解するために、以下において特定のスキームを参照する（すなわちステップＳ２０の例である）。しかし、要求される構造を実現するいかなるスキームも同様に考慮し得るから、マルチ解像度マップシステムの記録はこのスキームに限定されない。一例において、記録のスキームは、仮想的に空間充填曲線を追従することを本質とする。そして、マルチ解像度マップシステムの対応するデータ片に遭遇するので、記録のスキームは、順番にかつ継続的に、リニアトラックのブロックにそれらを書き込む／記憶する。実際、空間充填曲線はマップのセットを「充填する」ものであるが、これは、空間充填曲線が、概念上は、セットに含まれるすべてのマップのすべての場所を横断する／閲覧する曲線であることを意味する。すなわち、場所は、マップをカバーする領域の最小単位である。マップは、すべての場所を有限（そして個別）の区画（後述するように「タイル」のようなもの）に分割するものである。このような場所は、各々のデータ片（すなわち、そのような場所のレンダリングを可能にする最小のデータ）に対応する。なお、そのようなデータ片は、それ自体知られているように各々独立している。換言すると、マップの各場所を区画するデータ片は、１つずつ考慮され、リニアトラックに１つずつ（すなわち、線形、継続的、かつ順番に）記録される。これが、「マップのセットの空間充填曲線からリニアトラックへの連続単射による」という文言の意味するところである。単射は記録機能において用いるパラメータ化の構造と対応し、空間充填曲線のパラメータ化の領域から始まる。パラメータ化の構造は、データ片をリニアトラックの各ブロックに割り当てるものである。
【００３１】
知られているように、空間充填曲線は空間を連続的に満たす。この例において、空間充填曲線は、マップのセットを連続的に横断する。これは、アプリケーションを実行する際にメモリーストレージのヘッドが（とりわけ水平方向の移動に関し）相対的に小さい物理的距離で移動するように、マルチ解像度マップシステムに基づくアプリケーションにおけるユーザアクション及び／又はレンダリング更新の連続性を利用することを可能にする。
【００３２】
ここで、空間充填曲線及び各マップの交点は、ヒルベルト曲線上にある。これは、マルチ解像度マップシステムのマップのセットにおける各マップに対し、マップ上で定義され得るものであり、かつ空間充填曲線が各マップを横断又は通るとき（又は各マップにより支持されるとき）に空間充填曲線に従うヒルベルト曲線が存在することを意味する。それ自体知られているように、ヒルベルト曲線は特定のカテゴリの２次元の空間充填曲線を形成する。ヒルベルト曲線の特定のスキームを考慮することは、マルチ解像度マップシステムに基づくアプリケーションとの関連で、（メモリーストレージのヘッドの移動距離という観点において）非常に効率的であると分かる。
【００３３】
さらに、空間充填曲線は異なるマップを飛び越すものである。これは、この曲線がマップのセットにおけるすべてのマップを、マップの組の間のリンクを介して接続することを単に意味する。実際、空間充填曲線は、空間充填曲線及びすべてのマップの交点、及びマップの組の間における前述のリンクから厳密に構成される。これは、マップのセットにおける異なるマップが、リニアリンクに一緒に記録されることを保証する。したがって、メモリーストレージのヘッドは、垂直方向においても相対的に小さい物理的距離を移動する。
【００３４】
一例において、リンクは常に、第１解像度のマップと第２解像度のマップとの間にある。第２解像度は、マルチ解像度マップシステムにおいて第１解像度よりも１段階高い解像度である（記録ステップＳ２０において空間充填曲線が横断する方向によらずリンクには方向性が無いと理解でき、かつ連続単射の定義において考慮されるので、これは、第１解像度が、第２解像度よりも１段階高い解像度であることと等価である）。既に説明したように、マルチ解像度マップシステムのマップは、それぞれ、各解像度を有する。なお、（マップが地形上の異なるゾーンをカバーしている場合）２つのマップが同じ解像度を有していてもよい。さらに、限定する趣旨ではないが、同じ解像度を有するこれらのマップは、与えられた解像度で地形をカバーする仮想的な単一のマップであると考えられる。 解像度のセットは、最低の解像度から、最高の解像度の１段階下の解像度まで順序に並べることができる。各解像度は、「１段階高い」解像度（すなわち、その解像度の次に位置する解像度）を有する。マップ間の飛び越しは、解像度の順序に並べられたマップが接続されるように、解像度の順序に従って行われてもよい（換言すると、マップ間の飛び越しの順序は、マップ間の解像度の順序に従う）。これは、垂直方向の移動に関し、メモリーストレージのヘッドが移動する物理的な距離の相対的な減少を改善する。
【００３５】
さらに、マップ間の飛び越しは、少なくとも１組のマップ（例えば、連続するすべての組のマップ（１組のマップは、最低解像度のマップと、その１段階上の解像度のマップから形成される））について、リンクの数が２以上となるように（例外的に１となる場合がある）行われる。組のうちより低い解像度のマップにおけるタイルの数がリンクの数と等しい例において、リンクの数は１である（マップ間の横断は、そのようなタイルをすべて、１段階上の解像度のマップのタイル群にリンクする）。あるいは、マップ間の飛び越しは、（次のレベルの解像度のマップを満たし始める前にあるレベルの解像度におけるすべてのマップを満たす空間充填曲線を有するというよりむしろ）ある意味、マップ上のスプレッドである。第１解像度を有するマップの各タイルは、それらが関連付けられているタイルに対応するゾーンを共にカバーする第２解像度を有するマップのタイルと関連付けることができる。 知られているように、マルチ解像度システムにおいては、マップはそれぞれがそれぞれのゾーンをカバーするタイルを含む。マップのタイルはマップを分割する。ここで、マルチ解像度システムの構造は、与えられた解像度のタイルが次の段階の解像度のいくつか（クワッドツリーの場合、４つ）のタイルに対応するようなツリー構造（例えば、クワッドツリー）であってもよい。対応関係は、第１解像度のタイルによってカバーされる地形の領域が、次の段階の解像度の（例えば４つの）タイルによって共にカバーされた地形の領域と（例えば正確に）同じであるものである。ここで「共にカバーする」という表現は、対応関係の評価のため領域が累積／追加／結合するようにタイルが異なる領域をカバーすることを意味する。この特定の記録構造は、垂直方向の移動に加え水平方向の移動の双方に対処するよい妥協点としてメモリーストレージのヘッドの移動距離の最適な管理を保証する。
【００３６】
コンピュータ化されたリニアなストレージ手段における急速なアクセスのための画像を記憶する方法が提案される。ここで、画像は詳細さのレベルが異なるようにストレージ手段に記録される。詳細さのレベルは、それぞれ、画像のタイルのセットを有する。詳細さのレベルが異なるタイルは、ストレージ手段上の、ヒルベルト曲線様曲線に従った経路に従って記憶される。この経路は、さらに、２つの方法で異なるレベルに従う。
【００３７】
一例において、メモリーストレージは、画像のセットがリニアストレージ（例えばハードドライブ）に記憶されるようになっている。画像のセットは、マルチ解像度システム（例えば、画像間の関係はヒエラルキーツリーを形成する）としてアプリケーションにより使用される。データの物理的な位置（例えば、ハードドライブ上のクラスタ）は、リニアストレージ上において、空間充填曲線におけるインデックス化により与えられた順序を反映するように順序づけされる。空間充填曲線は以下特性を有する。空間充填曲線は、マルチ解像度システムを線形空間にマッピングする。空間充填曲線は、ヒルベルト曲線に近い状態を保つ。空間充填曲線は、垂直方向の移動（拡大／縮小）が完全に不利益とならないよう、１段階上／下を頻繁に訪れる。
【００３８】
以下において地形レンダリングの特徴の例を、図３−６を参照しつつ説明する。この例において、メモリーストレージは地形レンダリングを使用する３Ｄアプリケーションに関連する。
【００３９】
地形レンダリングを含むアプリケーションは、例えばヒエラルキーを有するマップ／画像群のように、マルチ解像度マップシステムにより表される地形を含んでもよい。マップは、ディフューズ色（航空写真、衛星画像又は人工着色画像）、又は標高（高低マップ又は変位マップ）などの種々のデータを記憶する。図３及び図４は、そのようなマップを例示する。特に、図３は、クワッドツリーを形成する、マップのマルチ解像度システムの例を示す。あるレベルにおいて各タイルは、次のレベルにおいて４つの対応するタイルを有する。図４は、マップのマルチ解像度システムの他の例を示す。図の右手には、各レベルにおけるタイルが示されている。より高いレベルのタイルは、より広い領域をカバーする。より低いレベル（高解像度）のタイルは、より細部を示す。このようなアプリケーションは、ユーザーに提示するために地形をレンダリングした画像を含んでもよい。これは、（例えばGoogleマップのように）単純に上から見た２次元図であってもよいし、例えばユーザーにより指定された位置を視点とする３次元のレンダリング画像であってもよい。これらのアプリケーションは、シーンにおいてユーザーを案内する（地形のレンダリング画像が生成された位置から視点を移動する）機能を含んでもよい。
【００４０】
移動には以下の３種がある。（１）水平方向の移動（「フライトオーバー」とも言われる）。ユーザーは、地形の上を、「海面」からの高さを維持しつつ連続的に飛行する。（２）水平方向の移動（「拡大／縮小」とも言われる）。ユーザーはマップ上の同じ点にいるが、「海面」からの距離が連続的に変化する。（３）テレポーテーション（「ジャンプ」とも言われる）。ユーザーは、その位置を瞬間的に変更する（例えば、まばたきする間に遷移なしにパリからニューヨークに移動する）。以下のＵＲＬ（http://en.wikipedia.org/wiki/Terrain_rendering）に、これら公知の概念のより細部及び定義が記載されている。マルチ解像度システムは、従って、各ノードが与えられたレベルの詳細さで全体世界の一部を表すマップ／画像を保持するヒエラルキーツリー（例えばクワッドツリー）であってもよい。あるノードの子ノードは、（図３に示されるように）そのノードのより詳細なサブ画像であってもよい。
【００４１】
２次元の平面図の例において、地形はマップのマルチ解像度システムによって表される。システムのより上の部分において、マップは地形のより大きな部分をカバーするが、より詳細でなくなる。これらのマップは、通常、ユーザーの視点が地面から離れているときに、表示処理において用いられる（例えば、ユーザーが大陸全体を見る必要があるが細部は問わない場合）。システムのより下位の部分におおいて、マップは地形のより小さな部分しかカバーしないが、より詳細である。これらのマップは、通常、ユーザーの視点が地面に近いときに、表示処理において用いられる（例えば、ユーザーが人間の大きさ程度の詳細さは必要ないが、通りを見る必要があるとき）。表示処理におけるジョブは、各マップが記憶されたデータベース（ハードドライブ、リモートサーバ等）から、高速メモリー（ＲＡＭ、ビデオメモリー等）に、ユーザーの視点（例えば、位置及び向き）に応じて要求されるマップのみを読み込むことである。
【００４２】
３次元ビューの例において、地形は３次元モデルとして画面上に表示される。しかし、ほとんどの場合、この３Ｄモデルは、アプリケーションにより画面空間において実行時に生成されたグリッドメッシュ又はスプライン表面である。メッシュの交点（スプライン表面における制御点）は、マップのセットとして記憶されている高さ／変位データに従って変位する。したがって、これは、地形がマルチ解像度のマップにより表される状況に戻る。３次元メッシュを効率的に生成する方法（例えば、クリップマッピング、シームレスパッチ等）に関する種々の論文が存在する。これらの論文の一覧は、以下のＵＲＬに記載されている（http://vterrain.org/LOD/Papers/）。すべての例が同じ表現（マップのマルチ解像度システム）を扱っていることが分かれば十分であるので、この主題については、ここではこれ以上説明しない。地形以外のオブジェクト（例えば、木、建物、川）のレンダリングとの組み合わせもまた公知であるが、ここでの説明の範囲外である。
【００４３】
既に説明したように、地形を表現するマップのセットが非常に大きくなり、読み込みの時間が問題点となる可能性がある。メモリーストレージにより提案される解決手段は、ハードドライブ上のファイルの物理的位置に関連する。実際、ハードドライブにおいてデータはクラスタに物理的に記憶される。なお、データがハードドライブに記憶される方法は、ファイルシステムにおける「ディレクトリーツリー」とは無関係である。実際、ユーザーが「ディレクトリーツリー」に近いと考える２つのファイル（例えば、同一のファイルフォルダー内の２つのファイル）は、互いに遠く離れたクラスタに記憶され得る。また、単一のコンテンツファイルは、分断された複数のクラスタに記憶され得る。ある意味、ハードドライブはリニアストレージであると見ることができ、読み出し／書き込みのヘッドが、ある物理的な位置から別の位置に移動しなければならないので、「読み出し」処理のパフォーマンスは読み出されるクラスタ間の距離に影響される。また、ディスク上のデータを整理するソフトウェアを作ることも可能である。これは、いくつかの単純な仮定（例えば、同一ファイルのデータを同じ物理的位置に集める、クラスタ間の自由領域を最小化する等）の下、ディスクデフラグメンターが行っていることである（詳細は例えば以下のＵＲＬを参照（http://en.wikipedia.org/wiki/Defragmentation））
【００４４】
メモリーストレージは、画像（例えばマップ）のマルチ解像度システムを扱わなければならないすべての例において解決策を提供する。アプリケーションは、これらのマップを継続的に読み込み／解放する必要がある（アプリケーションのパフォーマンスにおけるボトルネックとなる可能性がある）。マップは、リニアストレージ上に物理的に記憶された画像ファイルである。どのマップが読み込まれるかは、ユーザーがシーン内を移動する方法（すなわち、「フライトオーバー」、「拡大／縮小」、又は「ジャンプ」）に強く関連する。図５は、あるマップ（黒部分）を読み込んだ後、読み込まれる可能性があるマップ（グレー部分）を示す。図の左が「フライトオーバー」であり、中央が「拡大／縮小」であり、右が両者の組み合わせである。「フライトオーバー」は、アプリケーションが、マルチ解像度の表現において同じレベルの解像度の、近いマップを読み込む必要があることを示唆している。「拡大／縮小」は、アプリケーションが、マルチ解像度の表現において１段階隣りの高い／低いレベルの解像度のマップを読み込む必要があることを示唆している。「ジャンプ」は本質的に予測が困難な移動であるので、ここではこれ以上議論しない。
【００４５】
特に、マルチ解像度システム（例えばツリー）は、（図６に示されるように）リニアストレージ上にマッピングされてもよい。図６の左はマルチ解像度システムを示し、右はリニアストレージを示す。連続して読み込まれる可能性が高いので、ツリーにおいて（垂直方向又は水平方向において）近い２つのマップは、リニアストレージにおいて近くに記録される。
【００４６】
仮に、水平方向の移動しか考慮しない場合（ツリーにおいて単一のレベル内でしか移動しない場合）、メモリーストレージは、高い読み込み速度を実現する。空間充填曲線を選択すること、特にヒルベルト曲線は特に効率的である。以下のＵＲＬに詳細が記載されている（http://en.wikipedia.org/wiki/Hilbert_curve）。図７は、空間充填関数を例示する図である。左から右へ順に、ヒルベルト曲線、モートン曲線、ムーア曲線、及びペアノ曲線である。ヒルベルト曲線は、水平方向の移動に対しては最適な選択肢である。
【００４７】
ここで、マルチ解像度システムにおいて水平方向の移動及び垂直方向の移動を考慮した場合、問題となるのは、ヒルベルト曲線に適合するインデックス化を決定する方法である。これは、結局、水平方向の移動問題に第３の次元を追加することになる。ヒルベルト曲線のような空間充填曲線は、３次元の変数（ｎ次元の変数）を有するが、知られている変数は、「立方体型」空間（１段階上又は下のレベルは同じ大きさを有する）に対して設計されており、すべてのタイルを通るようなふるまいはそのような場合にのみ保証される。これは、図８に示される。マルチ解像度マップシステムは、どちらかというと「ピラミッド型」の構造を有する。
【００４８】
１つの案（これに限定されない）は、レベル毎に処理を進め、ヒルベルト曲線におけるインデックス化を用いてマルチ解像度システムの各レベルを１次元セグメントにマッピングするものである。これは図９に示される。既に述べたように、水平方向の移動に対しては、この解決策が最適であることがわかる。しかし、この解決策は、異なるレベルＮ及びＮ＋１に属する２つのマップＭ１及びＭ２のクラスタ間の距離が大きいので、「拡大／縮小」移動に対して最適化されたものではない。水平方向の移動及び垂直方向の移動の組み合わせに対しては、上記の例において示された解決策と異なり、この解決策は最適化されていない。
【００４９】
ここで提案される空間充足曲線は、マルチ解像度システムをリニア空間にマッピングする。これは水平方向の移動に対しては最適なパフォーマンスを保証するので、ヒルベルト曲線と近い。これは、垂直方向の移動（「拡大／縮小」）が不利にならないように、上／下のレベルのマップをかなりの頻度で訪れる。この条件により、マルチ解像度システムにおいて水平方向、垂直方向、又はその両方に移動する際に、新たな曲線がよいすべてのタイルを通るようなふるまいを有することが確実になる。
【００５０】
一例において、以下のように働くソフトウェアコンポーネントが提供される。一旦（マップ／画像のマルチ解像度システムの）データベースが設定され、更新されないと、ソフトウェアコンポーネントはデータベースを詳細に検討する。画像ファイルは、空間充足曲線に従ってインデックス化される。対応するデータを含むクラスタは、インデックス化の順序を反映するため、寄せ集められ、整理される。データベースが更新されない限り、ソフトウェアコンポーネントは再度、呼び出される必要がある。データベースを用いて地形レンダリングを使用するいかなる３Ｄアプリケーションも、パフォーマンスが強化されたように見える。水平方向の移動及び垂直方向の移動が組み合わせられた場合、又はこれらの組み合わせが認められた場合、特定の空間充填曲線を用いたインデックス化により、よいパフォーマンスが得られる。
【００５１】
一例として、画像のセット（一例において、地形レンダリングの目的で用いられるマップのマルチ解像度システム）を効率的に記憶するためのコンピュータ化された方法が提供される。このコンピュータ化された方法は、データベースが更新されず維持されていれば、地形レンダリングアプリケーションが実行されている間、又は使用と使用との間において実行される必要がない。
【００５２】
このような方法は、データアクセスを最適化するためにクラスタを移動するのでディスクデフラグメンターのように機能するかもしれない。しかし、これは、地形レンダリングするアプリケーションのパフォーマンスを最適化するための処理に専念する。マップ／画像のマルチ解像度システム（これはディスク上に画像ファイルとして記憶される）が与えられると、この方法はマルチ解像度システムを詳細に検討する。画像ファイルは、特定の空間充填曲線を用いてインデックス化される。対応するデータ含むクラスタは、インデックスによって与えられた順序を反映するため、寄せ集められ、整理される。特定の空間充填曲線は、前述のとおり組み立てられてもよい。空間充填曲線は、マルチ解像度システムをリニア空間にマッピングする。空間充填曲線は、ヒルベルト曲線に近い状態を保つ。これにより、水平方向の移動において最適なパフォーマンスが保証される。空間充填曲線は、垂直方向の移動（「拡大／縮小」）が不利にならないよう、上／下のレベルをかなり頻繁に訪れる。
【００５３】
以下において、効率的な「空間充填曲線」の別の例を２つ、図１０−１３を参照して説明する。
【００５４】
第１の例において、空間充填曲線は、対応するタイルを横断する前に、ゾーンを共にカバーする第２解像度を有するマップのすべてのタイルを横断する。すなわち、前述のマルチ解像度システムのクワッドツリー表現を参照すると、あるノードのすべての子が、その親ノードが横断される前に（あるいは、横断された後でも等価である）、空間充填曲線により横断される。これは結局、（図１０に示されるように）ヒルベルト曲線を用いた各レベルのソートを最初にするということになる。そしてさらに、あるレベルの各画像がマルチ解像度システムにおけるブランチのすべての画像により支持されるように、（図１１に示されるように）その結果を飛び越すことになる。
【００５５】
第２の例において、空間充填曲線は、関連するタイルへ横断する前に、ゾーンを共にカバーする第２解像度を有するマップのタイルの一部（正確には半分）を横断する。すなわち、親ノードが横断される前に（あるいは、横断された後でも等価である）あるノードの子ノードの半分が空間充填曲線により横断され、その後、残りの半分が横断される。これは結局、（図１２に示されるように）ヒルベルト曲線を用いた各レベルのソートを最初にすることになる。そしてさらに、あるレベルの各画像がマルチ解像度システムにおけるブランチの途中に挿入されるように、（図１３に示されるように）その結果を飛び越すことになる。
【図１】
2017174393.tif 000003
【図２】
2017174393.tif 000004
【図３】
2017174393.tif 000005
【図４】
2017174393.tif 000006
【図５】
2017174393.tif 000007
【図６】
2017174393.tif 000008
【図７】
2017174393.tif 000009
【図８】
2017174393.tif 000010
【図９】
2017174393.tif 000011
【図１０】
2017174393.tif 000012
【図１１】
2017174393.tif 000013
【図１２】
2017174393.tif 000014
【図１３】
2017174393.tif 000015
【外国語明細書】
2017174393.tif 000016
2017174393.tif 000017
2017174393.tif 000018
2017174393.tif 000019
2017174393.tif 000020
2017174393.tif 000021
2017174393.tif 000022
2017174393.tif 000023
2017174393.tif 000024
2017174393.tif 000025
2017174393.tif 000026
2017174393.tif 000027
2017174393.tif 000028
2017174393.tif 000029
2017174393.tif 000030
2017174393.tif 000031
2017174393.tif 000032
2017174393.tif 000033
2017174393.tif 000034
【図１】
2017174393.tif 000035
【図２】
2017174393.tif 000036
【図３】
2017174393.tif 000037
【図４】
2017174393.tif 000038
【図５】
2017174393.tif 000039
【図６】
2017174393.tif 000040
【図７】
2017174393.tif 000041
【図８】
2017174393.tif 000042
【図９】
2017174393.tif 000043
【図１０】
2017174393.tif 000044
【図１１】
2017174393.tif 000045
【図１２】
2017174393.tif 000046
【図１３】
2017174393.tif 000047