资源简介
利用Java代码及参考文件,将火星坐标转换为WGS84坐标,亲测可用,于是共享。

代码片段和文件信息
import java.io.InputStream;
import java.io.objectInputStream;
/**
* 地图坐标修偏
* @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
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2387609 2012-09-21 16:15 axisoffset.dat
文件 3141 2014-10-04 16:51 ModifyOffset.java
----------- --------- ---------- ----- ----
2390750 2
- 上一篇:java-web实习报告模板
- 下一篇:android SQLite数据库的增删改
相关资源
- java图状数据结构转换为树状数据结构
- 通过java将word文档转换成html页面
- 进制转换器(java)
- 简体繁体转换jar包
- java android 繁简体互转jar包
- Java字节码转换工具—Retrotranslato
- 利用七参数进行CGCS2000坐标系到西安
- java汇率转换小应用程序有美元
- list map转换成json格式以及相关jar包(
- .proto 各种语言转换
- 华为CDR话单二进制文件转换成对应的
- MP3转换为PCM文件,转换为WAV文件
- aspose.words.15-8-0.jar
- 使用Java开发的OCR程序 根据图像识别转
- JSON转换所需的各种jar包
- android 把一个view视图转换成bitmap 保存
- doc文档转PDF文档所需的jar包
- jar2 jar转换成exe工具
- java代码实现word转换成pdf
- 最新POI Lib Java Excel转换成Txt
- keystore转换成pem和pk8工具apltoolsignjar
- pdf转换成为图片需要的两个jar
-
Testli
nk用例转换工具最新版本 - 编程语言转换器!!!编程语言转换
- kabeja0.4将CAD格式文件转换,内附demo
- dbf转换成xls
- aspose.words for java文档转换工具类
- java地址转换经纬度
- java实现wordpptexcel等转换
- java 对象与json字符串互相转换工具类
评论
共有 条评论