簡體   English   中英

對於相同位置的點,經緯度略有變化

[英]slight changes in long lat for varations of point with the same location

這有點奇怪。 我正在地圖上繪制數據集,需要分割長和緯度完全相同的點。 我的想法是將我的數據集按l​​ong和lat分組,它們在相同的地方稍有調整,以便它們在地圖上顯示為單獨的實體-而不是重疊。

我正在使用linq將它們分組,然后枚舉分組的項目,我想將調整后的點繞原點盤旋(這是一個要求,因為我可能有數百個地理上相同的點),以便它們從原點散開。

有誰知道一個簡單的計算,我可以添加到我的循環中,以這種方式調整項目。

謝謝,

這背后的數學非常簡單。 圓可以通過x軸上的正弦函數和y軸上的余弦函數表示。 這是一些偽代碼:

int num = OverlappingPoints.Length;
for(int i = 0; i < num; ++i)
{
    int radius = 50;

    // using 2*pi because most math functions use radians... change 2*pi to 360 if your math library uses 360 degrees instead of 2*pi radians to represent a circle.
    Map.Plot(OverlappingPoints[i].Latitude + radius*sin(2*pi*i/num),
        OverlappingPoints[i].Latitude + radius*cos(2*pi*i/num));
}

如果正確實現,該偽代碼將在原始點周圍畫出一個圓。 如果要增加圓的半徑,請將半徑乘數更改為正弦和余弦函數。 如果要使點逐漸成螺旋形而不是畫圓 ,請在每轉一圈中選擇一個點數,然后在sin / cos函數中將num替換為該數。 另外,在每次循環迭代之后,可以增加半徑,方法可能是使用數字並將其乘以循環索引。 (即,您可以將radius更改為50*i )。

希望這可以幫助。

暫無
暫無

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

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