[英]slight changes in long lat for varations of point with the same location
這有點奇怪。 我正在地圖上繪制數據集,需要分割長和緯度完全相同的點。 我的想法是將我的數據集按long和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.