根據經緯度獲取點與區域,點與道路的距離

2021-10-08 19:33:13 字數 2254 閱讀 8167

二、點與道路,根據點與線段的距離判斷,獲取點到所有線段的最小距離

1.實體類,存放點資料

public class point

public point()

public point(float point)

public point(double point)

public point(double x, double y)

public double getx()

public void setx(double x)

public double gety()

public void sety(double y)

}

2.列舉類,存放預設引數

public enum pointrelationenum 

public int getcode()

public void setcode(int code)

public string getdescription()

public void setdescription(string description)

}

3.工具類

public class testutil

// 點與相鄰頂點連線的夾角

double angle = math.atan2(sy - py, sx - px)

- math.atan2(ty - py, tx - px);

// 確保夾角不超出取值範圍(-π 到 π)

if (angle >= math.pi) else if (angle <= -math.pi)

sum += angle;

}// 計算迴轉數並判斷點和多邊形的幾何關係

return math.round(sum / math.pi) == 0 ? pointrelationenum.point_out_scope: pointrelationenum.point_in_scope;

}// 計算地球上兩點的距離

private static double gettwopointsdistance(point pointa, point pointb)

return distance;

}/** 計算地球上一點與區域邊界的最小距離 **/

private static double getpointrangedistance(point point, listpoints) else

dis = pointtoline(a, b, c);

if (mindis < 0) else if (dis < mindis) }}

return mindis;

}/**

* 計算地球上一點與一段道路的最小距離

*/public static double getpointlinedistance(point point, listpoints) else if (dis < mindis) }}

return mindis;

}/**

* 計算點到線的距離

*/private static double pointtoline(double a, double b, double c)

if (c * c >= a * a + b * b)

if (b * b >= a * a + c * c)

/** 半周長 */

double p = (a + b + c) / 2;

/** 海**式算面積 **/

double s = math.sqrt(p * (p - a) * (p - b) * (p - c));

space = 2 * s / a;

return space;

}// 經度用

private static double getloop(double lng, double a, double b)

while (lng < a)

return lng;

}// 緯度用

private static double getrange(double lat, double a, double b)

if (b != 0)

return lat;

}// 將弧度轉化為度

private static double degreetorad(double n)

}

給定經緯度計算距離 根據兩點經緯度計算距離

根據兩點經緯度計算距離 這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉 地軸是一根通過地 球南北兩極和地球中心的 假想線 在地球中腰畫乙個與地軸垂直的大圓圈,使圈上的每一點都和南北兩 極的距離相等,這個圓圈 就叫作 赤道 在赤道的南北兩邊,畫出許多和赤道平行的圓圈,就是 緯 圈 構成這些圓圈的...

根據兩點經緯度計算距離

這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉 地軸是一根通過地球南北兩極和地球中心的 假想線 在地球中腰畫乙個與地軸垂直的大圓圈,使圈上的每一點都和南北兩極的距離相等,這個圓圈 就叫作 赤道 在赤道的南北兩邊,畫出許多和赤道平行的圓圈,就是 緯圈 構成這些圓圈的線段,叫做緯線。我們把赤道定為...

根據兩點經緯度計算距離

android sdk 中提供了location類裡面有計算兩點之間的距離這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉 地軸是一根通過地球南北兩極和地球中心的 假想線 在地球中腰畫乙個與地軸垂直的大圓圈,使圈上的每一點都和南北兩極的距離相等,這個圓圈 就叫作 赤道 在赤道的南北兩邊,畫出許多...