-
大小: 923KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-05-14
- 語(yǔ)言: Java
- 標(biāo)簽: 火星坐標(biāo)??轉(zhuǎn)換??糾偏??
資源簡(jiǎn)介
利用Java代碼及參考文件,將火星坐標(biāo)轉(zhuǎn)換為WGS84坐標(biāo),親測(cè)可用,于是共享。

代碼片段和文件信息
import?java.io.InputStream;
import?java.io.objectInputStream;
/**
?*?地圖坐標(biāo)修偏
?*?@author?wangtong
?*
?*/
public?class?ModifyOffset?{
????static?double[]?X?=?new?double[660?*?450];
????static?double[]?Y?=?new?double[660?*?450];
????
/**
?*?@param?args
?*/
public?static?void?main(String[]?args)?throws?Exception?{
init(ModifyOffset.class.getResourceAsStream(“axisoffset.dat“));
System.out.println(c2s(new?PointDouble(118.7715263?32.0789851)));
//System.out.println(s2c(new?PointDouble(118.7715263?32.0789851)));
System.out.println(s2c(new?PointDouble(112.99370321?28.13702654)));
}
????public?static?void?init(InputStream?inputStream)?throws?Exception?{
???? objectInputStream?in?=?new?objectInputStream(inputStream);
???? try?{
???? int?i?=?0;
???? while(in.available()?>?0)?{
???? if((i?&?1)?==?1)?{
???? Y[(i?-?1)?>>?1]?=?in.readInt()?/?100000.0d;;
???? }?else?{
???? X[i?>>?1]?=?in.readInt()?/?100000.0d;;
???? }
???? i++;
???? }
???? }?finally?{
???? if(in?!=?null)
???? in.close();
???? }
????}
????
????//?standard?->?china
????public?static?PointDouble?s2c(PointDouble?pt)?{
????????int?cnt?=?10;
????????double?x?=?pt.x?y?=?pt.y;
????????while(cnt--?>?0)?{
????????????if?(x?71.9989d?||?x?>?137.8998d?||?y?9.9997d?||?y?>?54.8996d)
????????????????return?pt;
????????????int?ix?=?(int)(10.0d?*?(x?-?72.0d));
????????????int?iy?=?(int)(10.0d?*?(y?-?10.0d));
????????????double?dx?=?(x?-?72.0d?-?0.1d?*?ix)?*?10.0d;
????????????double?dy?=?(y?-?10.0d?-?0.1d?*?iy)?*?10.0d;
????????????x?=?(x?+?pt.x?+?(1.0d?-?dx)?*?(1.0d?-?dy)?*?X[ix?+?660?*?iy]?+?dx?*?(1.0d?-?dy)?*?X[ix?+?660?*?iy?+?1]?+?dx?*?dy?*?X[ix?+?660?*?iy?+?661]?+?(1.0d?-?dx)?*?dy?*?X[ix?+?660?*?iy?+?660]?-?x)?/?2.0d;
????????????y?=?(y?+?pt.y?+?(1.0d?-?dx)?*?(1.0d?-?dy)?*?Y[ix?+?660?*?iy]?+?dx?*?(1.0d?-?dy)?*?Y[ix?+?660?*?iy?+?1]?+?dx?*?dy?*?Y[ix?+?660?*?iy?+?661]?+?(1.0d?-?dx)?*?dy?*?Y[ix?+?660?*?iy?+?660]?-?y)?/?2.0d;
????????}
????????return?new?PointDouble(x?y);
????}
????
????//?china?->?standard
????public?static?PointDouble?c2s(PointDouble?pt)?{
???? int?cnt?=?10;
???? double?x?=?pt.x?y?=?pt.y;
???? while(cnt--?>?0)?{
???? if?(x?71.9989d?||?x?>?137.8998d?||?y?9.9997d?||?y?>?54.8996d)
???? return?pt;
???? int?ix?=?(int)(10.0d?*?(x?-?72.0d));
???? int?iy?=?(int)(10.0d?*?(y?-?10.0d));
???? double?dx?=?(x?-?72.0d?-?0.1d?*?ix)?*?10.0d;
???? double?dy?=?(y?-?10.0d?-?0.1d?*?iy)?*?10.0d;
???? x?=?(x?+?pt.x?-?(1.0d?-?dx)?*?(1.0d?-?dy)?*?X[ix?+?660?*?iy]?-?dx?*?(1.0d?-?dy)?*?X[ix?+?660?*?iy?+?1]?-?dx?*?dy?*?X[ix?+?660?*?iy?+?661]?-?(1.0d?-?dx)?*?dy?*?X[ix?+?660?*?iy?+?660]?+?x)?/?2.0d;
???? y?=?(y?+?pt.y?-?(1.0d?-?dx)?*?(1.0d?-?dy)?*?Y[ix?+?660?*?iy]?-?dx?*?(1.0d?-?dy)?*?Y[ix?+?660?*?iy?+?1]?-?dx?*?dy?*?Y[ix?+?660?*?iy?+?661]?-?(1.0d?-?dx)?*?dy?*?Y[ix?+?660?*?iy?+?660]?+?y)?/?2.0d;
???? }
???? return?new?PointDouble(x?y);
????}
????
}
class?PointDouble?{
double?x?y;
Poi
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????2387609??2012-09-21?16:15??axisoffset.dat
?????文件???????3141??2014-10-04?16:51??ModifyOffset.java
-----------?---------??----------?-----??----
??????????????2390750????????????????????2
評(píng)論
共有 條評(píng)論