4

私は、滑りやすい地図の上にさまざまな水域の水深の視覚化を表示したいアプリケーションに取り組んでいます。本質的に、これらは、補間された DEM データに基づく、地理的に含まれる地形の視覚化です。私が求めている結果は、次のようなものです。

ここに画像の説明を入力

深度サンプルから DEM を補間するコードを作成し、PostGIS のタイル化されていないラスター (水域ごとに 1 つのラスター) にこれらを格納する概念実証を行いました。これはかなりうまく機能します。

ただし、水域はほぼ任意のサイズになる可能性があり、ズームレベルなどに基づいて視覚的な側面を調整する必要があるため、この概念をある種のタイルベースのソリューションに置き換える必要があると思います.

これだけあれば、多くの場合 Mapnik に基づいて、さまざまな場所で説明されている通常の標高ラスター生成の概念を模倣することになるでしょう。しかし、ここからが楽しみの始まりです..

理想的には、ラスター データではなく、ベクター (または 2 つの組み合わせ) を提示したいと考えています。ラスター データで一般的に可能であるよりも、マップをよりインタラクティブにしたいと考えています (ラスター データが引き裂かれ、たとえば D3 を使用して分析されない限り、これについては後で詳しく説明します)。ユーザーの操作に基づいて、等距離 (等高線の距離と値) を動的に変更できるようにしたいと考えています。

このスタックをどのように配置するかについて、いくつかの賢明な意見をいただければ幸いです。私が換気したいいくつかのアイデア:

1. ラスター タイルのみ 標高 DEM ラスターは、従来の 256x256 メルカトル図法の概念に基づいて生成されます。これらはクライアント ブラウザによって動的にダウンロードされ、そのまま表示されるか、canvas/D3 を使用してカラー マップされます。さらに、canvas API を使用して、D3 を使用してベクター輪郭を抽出します。これはかなりきれいな解決策ですが、遅くなると思います(画像検査の部分)。

2. ベクター タイルと組み合わせたラスター タイル 標高 DEM ラスターは、補間されたデータを表現および格納するための適切な方法を構成するため、引き続き生成されます。ラスター タイルは引き続きマップ上のグラフィカル オーバーレイを構成する場合がありますが、基本的に標高等高線は (GeoJSON または TopoJSON に基づいて) 個別に取得されたベクター タイルで構成されます。これらのタイルは、ラスター ルールに基づいて生成されます。

その場で等距離を変更できるようにしたいので、たとえば D3 を使用して、ベクトルを統合および結合できる必要があります。d3.geom.contour プラグインを調べましたが、少し制限されているようです。たとえば、ローカル ピークはなく、ピラミッドのようなトポロジがあるようです。

大事なことを言い忘れましたが、美学のために軽いクライアント側のライン補間 (または同様のもの) を実行したいと考えています。つまり、海底地形図の解像度は低くなる可能性があります (高解像度は実際には価値がないため) が、この解像度では通常、等高線がぎこちなくなります。おそらくこれは TopoJSON の議論であり、簡素化の可能性はありますか? D3 で作成した例を次に示します (サーバー側で生成されたタイル以外の GeoJSON を使用):

ここに画像の説明を入力 どんな提案も大歓迎です!

4

1 に答える 1