問題タブ [topography]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 既知のオーバーラップに基づいて地形プロファイルをつなぎ合わせる
一連の地形プロファイル スキャンを組み合わせて、単一の連続プロファイルを作成したいと考えています。唯一の問題は、各スキャンが異なる高さから取得された場合とされていない場合があることです。そのため、異なるファイルにはカバーされる領域に関してかなりの量の重複がありますが、異なるデータには共通の基準点がない場合があります。絶対高さ。
以下は、4 つの異なるスキャンです。各スキャンには約 30 の測定値が含まれており、最後のいくつかの測定値は新しいデータを表し、残りは前のスキャンと重複しています。最初のスキャンには既知の絶対値のみが含まれているため、最初のスキャンは「ゴールド スタンダード」です。2 番目のスキャンはたまたま同じ高さから取得されるため、オーバーラップは (ほぼ) 完全に一致し、前のスキャンに 4 つの新しいポイントのみが追加されます。3 番目と 4 番目のスキャンは異なる高さから撮影されているため、オーバーラップが (相対的に) 同じ領域をカバーしていますが、前の 2 つのスキャンに単純につなぎ合わせることができません。
R を使用して、これら 4 つのスキャンをつなぎ合わせて連続した地形プロファイルを作成する方法はありますか? 絶対的な高さは、最初のスキャンに基づいて、連続する各スキャンが前のスキャンにステッチされる必要があります。IE- スキャン 2 がスキャン 1 にステッチされ、4 つのデータ ポイントが追加されます。次に、スキャン 3 からの新しいデータがスキャン 1 とスキャン 2 の組み合わせに追加され、スキャン 4 からの新しいデータがスキャン 1、2、および 3 の組み合わせに追加されます。 、 等々....
何らかのパターン認識を使用して、Scan3 が Scan1 と約 8 単位異なり、Scan4 が約 11 単位ずれていることを特定して、スキャン間の大きなオーバーラップを照合することにより、すべてのデータを正規化する方法があると想定しています。ただし、私のデータには「ノイズ」があり、オーバーラップのパターンが完全に適合しないことに注意してください。
最終結果には、4 つのスキャンすべてを含む完全な地形プロファイルが含まれている必要があり、実際の数値が異なる場合は何らかの調整が行われます。次のようなもの:
gpgpu - Delaunay 三角形分割内の整数座標での双一次補間
約 100 万個の三角形からなる平面 Delaunay 三角形分割があります。各頂点にはいくつかのスカラー メトリックがタグ付けされており [1]、同じ規則的なグリッド上でこれらの各メトリックの高速で単純な補間を確認したいと考えています。参考までに、私の三角形の結合は、(整数) 座標を持つ約 1000 万のグリッド セルをカバーしています。[2]
シンプルと言えばシンプル。バイリニアは大丈夫です!私の理解では、これは (a) 基本的に GPU が生計を立てていることであり、(b) おそらく数え切れないほどの宿題の対象であるということです。私自身は公衆衛生の政府研究者なので、宿題ではありません。:-)
私の遅いが正しい参照実装では、約 10 分で次の計算を行うことができます。
各三角形 T について:
- T の境界ボックス内のすべての (整数) デカルト座標の集合 G。
- G の各 (x、y) の重心座標 (u、v、w)。
- すべてが正ではない (u, v, w) の棄却 — つまり、T 内。
- T の残りの各座標の加重合計 (u z_1 + v z_2 + w*z_3)。z_1、z_2、および z_3 は、特定のメトリック [1] の T の頂点でのスカラー値です。
高速にするには、ステップ 1 ~ 3 が本当に必要です。ステップ 4 は些細なことですが、それが私の最終目標です。理想的には、ソリューションは次のいずれかの形式になります。
- 非常にシンプルな API を備えた、適切にライセンスされた (GPL で問題ありません) ライブラリ。また
- 中級プログラマーが Fortran、R、Python、または C でコーディングする方法が明らかなほど明確な説明。
このタスクの古典的な定式化は、「TIN から DEM へ」の地形モデリング ジョブです。しかし、最近はその逆がより一般的に必要とされているようです (?)
ポイントが 2 つ以上の三角形によって共有されるエッジまたは頂点に正確に位置する場合に重複を削除するなど、いくつかの基本的なクリーンアップも問題ありません。
お時間とご関心をお寄せいただきありがとうございます。電車を降りたら、フォーマットをクリーンアップし、提案ごとに編集します!
脚注:
[1] 標高、温度、湿度。[2] UTM グリッド上で 20x20m 離れているという意味での整数。したがって、20倍に拡大してください。