我有一個線形字符串DbGeography對象,我想沿線索找到一些點,給出總距離的一個小數值。例如,如果我給0.5,我應該將該行的中點作爲具有點WKT(已知文本)的DbGeography對象。如何使用DbGeography插入沿線串的點?
我試過挖掘DbGeography文檔,但沒有明顯的「簡單」方法似乎存在。
我想這種方法會類似於Google Maps JS API球形幾何插值方法。有什麼建議麼?
我有一個線形字符串DbGeography對象,我想沿線索找到一些點,給出總距離的一個小數值。例如,如果我給0.5,我應該將該行的中點作爲具有點WKT(已知文本)的DbGeography對象。如何使用DbGeography插入沿線串的點?
我試過挖掘DbGeography文檔,但沒有明顯的「簡單」方法似乎存在。
我想這種方法會類似於Google Maps JS API球形幾何插值方法。有什麼建議麼?
我做這個使用下面的方法之前:直到你找到對相鄰點之間的目標點必須位於
迭代通過線段形式的點(目標距離要麼給予或可以很容易地從你提到的距離分數中計算出來);然後
在每個兩分的使用DbGeography.Buffer
,提供"remaining distance to the target" + "small distance padding"
*與第一和"distance between the two points" - "remaining distance to the target" + "small distance padding"
與第二;然後
使用DbGeography.Intersection
上的兩點,得到一個小多邊形,不是一個點;然後
將該多邊形轉換爲DbGeometry
對象並取其Centroid
;那麼
如果需要,將該結果點轉換回DbGeography
對象。
請注意,這在技術上並不是最精確的,因爲幾何質心通常不與地理中心相同。然而,在這種情況下,這幾乎肯定是足夠好的,因爲從中取得質心的多邊形可以很小(例如,通過使用1米作爲緩衝距離填充)。
*:提供距離填充是爲了避免由於浮點數的舍入錯誤導致的「接近未命中」。如果我們有無限的精度,顯然你只需要緩衝區沒有填充,然後交叉口會給你你正在尋找的確切點。