OpenLayersで画像をレンダリングしますか?


11

私の組織には、世界および地域の気候データを表示するためのWebアプリケーションがあり、その改善を検討しています。私たちの主なアイデアは、OpenLayersベースのアプリケーションを作成して、OSMやGoogleマップなどのベースレイヤー上に気候ラスターを表示することです。マップには、他のいくつかのアプリケーション固有のベクターレイヤーと、データを説明するカラーバーまたはその他の凡例機能も含まれます。私の知る限りでは、これはすべてOpenLayersで実行できるようです。

ただし、プロジェクトの要件の1つは、(理想的にはWebアプリから)パブリケーション品質の(多かれ少なかれ)マップをエクスポートできることです。典型的なユースケースは次のようなものです:

  1. ユーザーは、ベースレイヤーをガイドとして使用して、関心のある領域に移動します。
  2. ユーザーは気候パラメータ(例:2040年代の平均気温)またはパラメータセットを選択します
  3. ユーザーは「エクスポート」ボタンを押してから、最初の段落で説明したすべての要素を含む良質のマップをダウンロードします。

OpenLayersで画像へのレンダリングについて何も見つけることができませんでした。これが可能かどうか誰か知っていますか?そして、そうでなければ、レンダリングのために他にどのようなアプローチを取ることができますか?すべてのマップパラメーター(bbox、プロジェクション、インクルードレイヤーなど)を外部レンダリングエンジンに渡す必要があると思います。どんなオープンソースのレンダリングエンジンがありますか?


私はpng / pdfとしてエクスポートし、ここwww.mapsdata.coでopenlayersマップの印刷を実装しました。登録して確認できます。
Rayiez 2013年

回答:


12

私が知っているopenlayersのきれいな印刷マップを表示する主な方法は次のとおりです。

-Geoextを備えたジオサーバー

-GeoextによるMapfish

どちらのソリューションもJavaパーツに依存しています(例:http : //geoserver.org/display/GEOS/Printing+in+GeoServerまたはhttp://www.mapfish.org/doc/print/

-Openlayersスタンドアロン(公式ドキュメントhttp://trac.openlayers.org/wiki/Printingを参照)

最近では、PhantomJS(コマンドラインからブラウザをシミュレートするソフトウェア)で画像をレンダリングする手法が表示されています http://acuriousanimal.com/blog/2012/09/17/creating-static-maps-in-openlayers-using-phantomjs/

最近の一部のライブラリーは、ブラウザーのCanvasレンダリング機能を使用して、このOpenLayers 3の例このLeafletの例のような画像を「キャッチ」します。



2

「パブリケーション品質」を得るには300dpiが必要なので、スクリーンレンダリング用に開いているレイヤーに渡すマップを使用するのは、たぶん最初ではありません。

OpenStreetMapのエクスポートタブは、OpenLayersを使用してエクスポートするものを選択しますが、それを個別のバックエンドサーバープロセス(実際にはいくつかの選択肢)でレンダリングします。これはおそらくあなたが取らなければならないアプローチです。このためにGoogleマップを使用することはできません。


まあ、「出版品質」とは、svgやその他のベクトル形式を意味する可能性が高いでしょう。そして、私がそれをこれらの用語で表すと、私はおそらく、Mapnikまたは何かを使用して、planet.osmファイルからベースマップをレンダリングしたいと思うでしょう。次に、いくつかの画像ライブラリを使用して、他の要素(気候ラスター、凡例要素、属性)をオーバーレイできます。Gmapsはおそらくエクスポーター向けではないでしょう(技術的および非技術的なさまざまな理由から)。とにかく、すべての応答に感謝します。
Hiebert
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.