我想將gps座標(經度,緯度)轉換爲ENU(est,north,up)座標。將GPS座標轉換爲ENU座標的功能?
我知道這個問題的理論,但我沒有時間去實現它,所以我問是否存在java代碼來做到這一點!
感謝
我想將gps座標(經度,緯度)轉換爲ENU(est,north,up)座標。將GPS座標轉換爲ENU座標的功能?
我知道這個問題的理論,但我沒有時間去實現它,所以我問是否存在java代碼來做到這一點!
感謝
我已經在其他地方說過了,我會在這裏說:雖然這可能在理論上回答這個問題,[這將是更可取的](http://meta.stackexchange.com/q/8259)包括基本部分的答案,並提供參考鏈接。堆棧溢出不歡迎鏈接回答。 –
@JanDvorak這將是可取的,但缺乏公式編輯器,它是沒有意義的。只有鏈接的答案比沒有答案更好,隨時給自己的答案,沒有侵犯版權。 – AlexWien
如何遷移到其他支持公式的網站?適當重新編制,這很適合[Math.se] –
其他的解決辦法是:
public static double[] fatCoordinates(double lat,double lon){
double phi = Math.toRadians(lat);
double lambda = Math.toRadians(lon);
double e2 = Math.pow(WGS_E,2);
double Rn = WGS_A/Math.sqrt(1 - e2 * Math.pow(Math.sin(phi), 2));
double[] XYZ = new double[3];
XYZ[0] = Rn * Math.cos(phi) * Math.cos(lambda);
XYZ[1] = Rn * Math.cos(phi) * Math.sin(lambda);
XYZ[2] = Rn * (1 - e2) * Math.sin(phi);
return XYZ;
}
與
public static final double WGS_A = 6378137.0;
public static final double WGS_E = 0.0818191908426;
使用goGPS library,Coordinates.java
/**
* @param origin
* @return Local (ENU) coordinates
*/
public void computeLocal(Coordinates target) {
if(this.geod==null) computeGeodetic();
SimpleMatrix R = rotationMatrix(this);
enu = R.mult(target.minusXYZ(this));
}
public void computeTopocentric(Coordinates origin, Coordinates target) {
origin.computeLocal(target);
double E = origin.getE();//enu.get(0);
double N = origin.getN();//enu.get(1);
double U = origin.getU();//enu.get(2);
ENU座標,需要一個參考點。你有什麼? –
爲什麼這麼多downvotes?這不是一個壞問題... – Kamil
維基百科顯示了一個算法:http://en.wikipedia.org/wiki/East_north_up#ECEF_to.2Ffrom_ENU_coordinates –