簡體   English   中英

如何根據其他坐標的高程樣本集估計高程

[英]How to estimate elevation based on sample set of elevations for other coordinates

給定 3D 空間中的一組 (x, y, z) 點,我希望能夠估計新的 (x, y) 對的 z。

例如:給我一張地理特征的高度圖,例如農村的一些山丘。 這意味着對於某些緯度和經度,我知道該點的地面高度。 我想估計一個人站在(緯度,經度)的高度,這很可能不在樣本集中。

我怎樣才能在 Java 中做到這一點?

我已經研究了樣條曲線,但我正在努力以這種方式取得任何進展,而且我也只是嘗試使用 graphhopper 的ElevationInterpolator,但它給出了明顯錯誤的結果——它似乎根本沒有給出准確的估計,除非提供(lat,long)在樣本集中,那么它是正確的,但如果它只是稍微偏移,它會給出截然不同的高程,並且它為不在樣本集中的所有位置提供相同的高程。

如果您在所討論的點周圍有高程,我能看到的最好方法是找到最近的封閉三角形或四邊形,並在它們之間進行線性插值。 我不認為你能得到比這更好的。

如果您只有一個點的一側有高程,您所能做的就是假設它相對平坦,或者嘗試從您擁有的點計算某種梯度,但基本上這只是一個瘋狂的猜測。

根據您覆蓋的區域有多大,您可能還需要考慮一個大地水准面

至於您的“直觀”公式,它在問題點周圍使用了太多數據,因此肯定會產生錯誤的結果。 事實是,更遠的點與海拔無關,您只需要估計幾個最接近的點,並且由於您對表面一無所知,因此其他點並不重要. 好吧,也許除非您喜歡ML ,否則也許您可以從中得到一些東西...

我在 Apache Commons 中找到了一個MicrosphereInterpolator

我想這實際上是一個非常困難的問題,並且沒有標准的解決方案。 該解決方案似乎基於 William Dudziak 的 2007 年碩士論文。

MicrosphereInterpolator 目前對我來說效果很好。

我嘗試過的其他解決方案,例如直觀的公式,不會給出直觀的結果。

唯一的缺點是 MicrosphereInterpolator 很慢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM