オープンレイヤーでレーダーデータをアニメーション化する最良の方法


9

地図にレーダーデータを表示するOpenLayersを使用するプロジェクトがあります。レーダーデータ自体は、それぞれが6つの可能な色の1つで塗りつぶされたポリゴンの集まりです。目標は、地図上でレーダーをアニメーション化することです。各ファイルには一定時間のレーダーデータが含まれており、ファイルは約5分間隔で区切られているため、現在のアプローチではすべてのファイルをループして1つずつ新しい個別のレイヤーに読み込みます。各レイヤーが作成されると、その可視性はfalseに設定され、マップに追加されます。次に、1つのレイヤーの表示をオンにし、前のレイヤーの表示をオフにするタイマーを使用して、レイヤーをアニメーション化します。現在、レイヤーはすべてベクターレイヤーであり、データはKMLファイルから読み込まれますが、データファイルは、このプロジェクトに最適なほとんどすべての形式にすることができます。

このアプローチの問題は、かなり長い時間(約3時間程度)のデータ(約36レイヤーに相当)に達すると、メモリー消費がかなり高くなる(約250MB)ことです。最終製品は、1つのループで最大18時間のデータを処理できると想定されています。上記の数値に基づくと、アニメーションのためだけに1 GB以上のメモリが必要であり、ブラウザをクラッシュさせるか、少なくとも非常に遅くなります。

レイヤーごとにWMSレイヤーを使用して同じことを試みましたが、再描画が遅すぎ(アニメーションは100ミリ秒ごとにレイヤーを変更しました)、メモリの消費量はベクターバージョンよりも優れていませんでした。

私はこれを行う方法のいくつかの例を見つけるためにネットを精査しましたが、これまでのところ手ぶらで手にしています。これを行う方法について何か提案はありますか?私は何週間もこれに立ち往生していて、答えが見えないので、この時点であなたが持っているアイデアを取り上げます。

回答:


9

一種のスライディングウィンドウを試してください。一度に10レイヤーをバッファリングできます。10個のレイヤーに達したら、レイヤーを破棄し、DOMとメモリから削除します。したがって、レイヤー10にヒットすると、レイヤー0〜9が破棄され、レイヤー20〜30に可視性がfalseでロードされます。これにより、約10レイヤーのバッファーが得られますが、パフォーマンスに適すると思われる許容範囲を変更できます。20レイヤーの方がうまく機能していると感じた場合は、20にしてください。

          {Destroy Layers} |10|11...19|20| {Start Loading Layers}
|---------------------------------------------------------------------------|
                           
        Timespan           Current Possition

あなたは天才です!実際にはまだこれを実践していませんが、機能しない理由はありません。調整可能なバッファーは、さまざまな環境に合わせてこれをさらにカスタマイズできることを意味します。この提案に感謝します!
TheOx

ありがとう、それが実際に機能することを願っています。それがどのように機能するか教えてください。
CaptDragon

初期テストが完了し、うまく機能しています。コードにはまだ最適化の余地がありますが、この方法はメモリフットプリントを低く抑え、クライアントマシンのメモリと帯域幅に基づいて構成できます。素晴らしい提案をありがとう!
TheOx 2012年

すばらしいですね。
CaptDragon 2012年

@CaptDragon:(またはTheOx)実際の例に投稿することはできますか?私はある程度の解決策を理解していますが、簡単な例とコードを見ると、ほとんど同じ問題があるので非常に役立ちます。ありがとう!
teknocreator 2014年

1

ベクターレイヤーを単純化してファイルサイズを小さくすることを検討しましたか?ポリゴンに表示の目的で必要な数よりも多くの頂点が含まれている場合、ポリゴンを単純化(スムージング)すると、ファイルサイズが小さくなり、ディテールが減少します。どのソフトウェアを使用できるかわかりませんが、いくつかのGISデスクトップアプリケーションには、フィーチャを簡略化するジオプロセシング機能が含まれています。


それは良い考えですが、残念ながらプロジェクトではデータをフル解像度で表示する必要があります。ただし、そのトリックを使用できるようになる可能性がある他のいくつかのデータレイヤーについては、そのことを覚えておきます。
TheOx

1

データを単純化する以外に(少しでも多くのスペースを節約できる可能性があります)MapServerまたはデータを透明度のあるタイルに変換し、マップレイヤーを作成して背景レイヤーの上に配置する他の方法を試しましたか?数百から数十万のポリゴン(またはマーカー)を含むコロプレスマップでこのアプローチを見てきましたが、まだ(サーバー側の要件のため)自分で試すことはできません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.