package com.jyt.infant.core.common; import java.util.HashMap; import java.util.Map; /** * * @ClassName: MarsCoordinateUtil * @Description: TODO(火星坐标转换) */ public class MarsCoordinateUtil { private double pi = 3.14159265358979324; private double a = 6378245.0; private double ee = 0.00669342162296594323; private double x_pi = 3.14159265358979324 * 3000.0 / 180.0; /** * * @Title: outOfChina * @Description: TODO(天朝范围内) * @param lat * @param lon * @return */ public boolean outOfChina(double lat, double lon) { if (lon < 72.004 || lon > 137.8347) return true; if (lat < 0.8293 || lat > 55.8271) return true; return false; } /** * * @Title: transformLat * @Description: TODO(偏移调整) * @param x * @param y * @return */ public double transformLat(double x, double y) { double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x)); ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0; ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0; ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0; return ret; } /** * * @Title: transformLon * @Description: TODO(偏移调整) * @param x * @param y * @return */ public double transformLon(double x, double y) { double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x)); ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0; ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0; ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0; return ret; } /** * * @Title: transform2Mars * @Description: TODO(地球坐标转换为火星坐标 ) * @param lat * @param lon * @return */ public Map<String, Double> transform2Mars(double lat, double lon) { Map<String, Double> map = new HashMap<String, Double>(); if (!outOfChina(lat, lon)) { double dLat = transformLat(-105.0, lat - 35.0); double dLon = transformLon(lon - 105.0, lat - 35.0); double radLat = lat / 180.0 * pi; double magic = Math.sin(radLat); magic = 1 - ee * magic * magic; double sqrtMagic = Math.sqrt(magic); dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi); dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi); lat = lat + dLat; lon = lon + dLon; } map.put("latitude", lat); map.put("longitude", lon); return map; } /** * * @Title: bdEncrypt * @Description: TODO(火星坐标转换为百度坐标) * @param lat * @param lon * @return */ public Map<String, Double> bdEncrypt(double lat, double lon) { Map<String, Double> map = new HashMap<String, Double>(); double x = lon, y = lat; double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi); double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi); lon = z * Math.cos(theta) + 0.0065; lat = z * Math.sin(theta) + 0.006; map.put("latitude", lat); map.put("longitude", lon); return map; } /** * * @Title: bdDecrypt * @Description: TODO(百度转火星) * @param lat * @param lon * @return */ public Map<String, Double> bdDecrypt(double lat, double lon) { Map<String, Double> map = new HashMap<String, Double>(); double x = lon - 0.0065, y = lat - 0.006; double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi); double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi); lon = z * Math.cos(theta); lat = z * Math.sin(theta); map.put("latitude", lat); map.put("longitude", lon); return map; } }
相关推荐
百度坐标转火星坐标软件,附源码及生成软件,可以转换成火星的坐标和度分秒,附带源码,准确率高,建议使用
最近公司做了一点儿地图,从网上找到了火星坐标转换方式,分享给大家:用于转换火星坐标到正常坐标,及正常坐标转换到火星坐标,自带数据文件
c# vs 2010 GPS坐标与火星坐标互转 google坐标 GPS坐标纠偏 GPS坐标是WGS坐标 高德地图坐标和google坐标是火星坐标 程序支持互转
百度坐标、火星坐标、WGS84坐标转换工具全部升级为脱离ArcGIS环境,可在本人博客文末找到链接试用,链接呈上https://blog.csdn.net/yhiki/article/details/86476276
CGCS2000、WGS84、百度高德等火星坐标、深圳独立坐标等常见坐标格式批量转换软件。 一、本软件为博主本人开发,所有坐标转换精度均经实测验证,可放心使用。 二、本软件支持常见坐标,如CGCS2000、百度坐标、高德...
delphi写的关于gps-火星-百度等坐标相互转换的源码,fmx和vcl都可用 by 漠北
百度坐标系转换火星坐标转换wgs84.py
火星坐标转换经纬度,火星坐标系转换软件工具【支持批量】 火星坐标转换工具,支持批量转换 火星坐标转换到地球坐标 地球坐标转换到火星坐标 批量转换工具
纯本地运算的一个坐标转换工具,地球坐标(WGS-84),火星坐标(jcg-02),百度坐标之间可以相互转换
Gps坐标系转换Java工具类WGS坐标与Google和百度坐标互转,偏差很小,与百度Api调用转换几乎相差无几,程序为Java程序,工具类直接传经纬度调用相应转换方法即可获取转换后的返回值
本软件为博主本人开发,转换精度已验证,目前仅支持百度、高德火星坐标与CGCS2000、WGS84之间的互相转换,可实现单点转换及部分批量转换。 另有收费版可支持深圳坐标与wgs84坐标的转换,并全部支持批量转换并提供...
经纬度坐标系之间相互转换,主要有wgs84坐标系、火星坐标系(国测局)、百度坐标系。用户只需通过一个html网页即可做到经纬度互转,方便快捷高效,强力推荐呐~。
对火星坐标和中国坐标之间的转换,导入到项目中即可
将国内POI数据坐标(百度或火星坐标)转为WGS84坐标工具(exe程序文件)
WGS84坐标间距离计算,WGS84转火星坐标gcj02,火星坐标转百度坐标BD09. function gcj02ToBd09(gg_lat, gg_lon: double): TLaLoDegPoint; //火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 将 GCJ-02 坐标转换...
百度坐标转地球坐标,火星坐标转地球坐标
Java实现百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
js实现百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
GPS坐标与火星坐标互转JAVA版源代码!