经纬度,墨卡托等坐标转换
- 1.经纬度转墨卡托
- 1.1Java:
- 1.2Scala:
- 2.墨卡托转经纬度
- 3.proj4方式
1.经纬度转墨卡托
1.1Java:
public static double[] lngLat2Mercator(double lng, double lat) {double[] xy = new double[2];double x = lng * 20037508.342789 / 180;double y = Math.log(Math.tan((90 + lat) * M_PI / 360)) / (M_PI / 180);y = y * 20037508.34789 / 180;xy[0] = x;xy[1] = y;return xy;}
1.2Scala:
/*** 坐标转换*/
object CoorTransfom {private val M_PI = Math.PI//经纬度转墨卡托def lngLat2Mercator(lng: Double, lat: Double): Array[Double] = {val xy = new Array[Double](2)val x = lng * 20037508.342789 / 180var y = Math.log(Math.tan((90 + lat) * M_PI / 360)) / (M_PI / 180)y = y * 20037508.34789 / 180xy(0) = xxy(1) = yxy}}
2.墨卡托转经纬度
public static double[] mercator2LngLat(double mercatorX, double mercatorY) {double[] xy = new double[2];double x = mercatorX / 20037508.34 * 180;double y = mercatorY / 20037508.34 * 180;y = 180 / M_PI * (2 * Math.atan(Math.exp(y * M_PI / 180)) - M_PI / 2);xy[0] = x;xy[1] = y;return xy;}
3.proj4方式
原文地址:坐标系转换成墨卡托 java 实现,最好使用成熟proj4或proj470
Maven:
<dependency><groupId>org.osgeo</groupId><artifactId>proj4j</artifactId><version>0.1.0</version></dependency>
源码:
import org.osgeo.proj4j.CRSFactory;
import org.osgeo.proj4j.CoordinateReferenceSystem;
import org.osgeo.proj4j.CoordinateTransform;
import org.osgeo.proj4j.CoordinateTransformFactory;
import org.osgeo.proj4j.ProjCoordinate;public class Test {static final String WGS84_PARAM = "+title=long/lat:WGS84 +proj=longlat +datum=WGS84 +units=degrees";CoordinateReferenceSystem WGS84 = crsFactory.createFromParameters("WGS84",WGS84_PARAM);private static final CoordinateTransformFactory ctFactory = new CoordinateTransformFactory();private static final CRSFactory crsFactory = new CRSFactory();private static CoordinateReferenceSystem createCRS(String crsSpec) {CoordinateReferenceSystem crs = null;// test if name is a PROJ4 specif (crsSpec.indexOf("+") >= 0 || crsSpec.indexOf("=") >= 0) {crs = crsFactory.createFromParameters("Anon", crsSpec);} else {crs = crsFactory.createFromName(crsSpec);}// crs = crsFactory.createFromParameters("Anon", crsSpec);return crs;}public static void main(String[] args) {// new CoordinateTransformTester(true).checkTransform("EPSG:4269",// 117.19625, 31.83879,// "+proj=tmerc +lat_0=0 +lon_0=117 +y_0=0 +x_0=500000 +k=0.9996 +pm=0// +zone=50 +to_meter=1 +a=6378137 +rf=298.257223563 +nodefs",// 1640416.667, 916074.825, 0.1);// lonlat2m();m2lonlat();}private static void lonlat2m() {System.out.println("....");// 117.19625 31.83879 518568.9 3522583.9double x1 = 117.19625d;double y1 = 31.83879d;// double x2 = 518568.9d;// double y2 = 3522583.9d;// String srcCRS = "EPSG:4269";String WGS84_PARAM = "+title=long/lat:WGS84 +proj=longlat +datum=WGS84 +units=degrees";String tgtCRS = "+proj=tmerc +lat_0=0 +lon_0=117 +y_0=0 +x_0=500000 +k=0.9996 +zone=50 +to_meter=1 +a=6378137 +ellps=WGS84 +units=m +no_defs";CoordinateTransform trans = ctFactory.createTransform(createCRS(WGS84_PARAM), createCRS(tgtCRS));ProjCoordinate pout = new ProjCoordinate();ProjCoordinate p = new ProjCoordinate(x1, y1);trans.transform(p, pout);System.out.println(p.x);System.out.println(p.y);System.out.println(pout.x);System.out.println(pout.y);System.out.println("------- // 117.19625 31.83879 518568.9 3522583.9 ");p = new ProjCoordinate(y1, x1);trans.transform(p, pout);// System.out.println(p.x);
// System.out.println(p.y);
// System.out.println(pout.x);
// System.out.println(pout.y);}private static void m2lonlat() {System.out.println("....");// 117.19625 31.83879 518568.9 3522583.9
// double x2 = 117.19625d;
// double y2 = 31.83879d;double x1 = 518568.9d;double y1 = 3522583.9d;// String srcCRS = "EPSG:4269";String WGS84_PARAM = "+title=long/lat:WGS84 +proj=longlat +datum=WGS84 +units=degrees";String tgtCRS = "+proj=tmerc +lat_0=0 +lon_0=117 +y_0=0 +x_0=500000 +k=0.9996 +zone=50 +to_meter=1 +a=6378137 +ellps=WGS84 +units=m +no_defs";CoordinateTransform trans = ctFactory.createTransform( createCRS(tgtCRS),createCRS(WGS84_PARAM));ProjCoordinate pout = new ProjCoordinate();ProjCoordinate p = new ProjCoordinate(x1, y1);trans.transform(p, pout);System.out.println(p.x);System.out.println(p.y);System.out.println(pout.x);System.out.println(pout.y);System.out.println("------- // 117.19625 31.83879 518568.9 3522583.9 ");p = new ProjCoordinate(y1, x1);trans.transform(p, pout);// System.out.println(p.x);
// System.out.println(p.y);
// System.out.println(pout.x);
// System.out.println(pout.y);}
}
经纬度,墨卡托等坐标转换相关推荐
- 经纬度与WGS84坐标转换
经纬度与WGS84坐标转换 经纬度与WGS84坐标转换 经纬度与WGS84坐标转换 本代码实现在WGS84系统的大地坐标(BLH)和空间直角坐标(XYZ)的互相转换,符合标准语法,可直接使用 Modu ...
- java 墨卡托转经纬度_经纬度,墨卡托等坐标转换
1.经纬度转墨卡托 1.1Java: public static double[] lngLat2Mercator(double lng, double lat) { double[] xy = ne ...
- c语言经纬度和大地坐标转换,经纬度坐标与大地坐标转换表
*子午线角度值纬度值b经度值l角度值角度值f2-b2 114114 114114 114114 114114 1 234.565411113.59429634.94836113.9953-0.0047 ...
- python——经纬度坐标和平面投影坐标的相互转换
美赛建模需要使用到平面坐标系去做基于时间序列的运动范围模型,所以需要对经纬度进行坐标系转换,转换到XY坐标系下.同时,在机器人的路径规划等方面依然会经常使用到坐标系的转换,所以记录一下. 文章目录 经 ...
- java jts获取线上任意一点到起点的距离
java jts获取线上任意一点到起点的距离 近期项目要求计算某段公路上一辆车的运行轨迹,通过路上的设备实时获取车辆的经纬度信息并发送到后台接收. 抽象出来就是获取线上任意一点到起点的距离,按照一定每 ...
- AR+LBS街景实景红包PokemonGo游戏捉妖夺宝营销解决方案定制开发暨百度高德地图Unity插件SDK
AR+LBS街景实景红包PokemonGo游戏捉妖夺宝营销解决方案定制开发暨百度高德地图Unity插件SDK 作者 komstone https://blog.csdn.net/komstone/ar ...
- WEB端显示三维地形模型
注:正常在WEB上显示三维地形首选Cesium,本文内容仅作为研究,展示文章用DEM制作通用三维地形模型中制作的局部三维地形模型 Cesium是可以很容易的实现在WEB端三维地形的,下面的图是分别是使 ...
- 【算法系列】卡尔曼滤波算法
系列文章目录 ·[算法系列]卡尔曼滤波算法 ·[算法系列]非线性最小二乘求解-直接求解法 ·[算法系列]非线性最小二乘求解-梯度下降法 ·[算法系列]非线性最小二乘-高斯牛顿法 ·[算法系列]非线性最 ...
- AR+LBS街景实景红包PokemonGo游戏捉妖夺宝营销解决方案暨百度高德地图Unity插件SDK
1.AR+LBS街景实景红包.游戏.营销等解决方案 2.AR街景实景+百度高德LBS地图Unity插件SDK [3D/AR/VR/全息互动投影视觉开发] 近年来,全球玩家对于知名游戏Pokemon G ...
最新文章
- dns在企业网络中的应用
- BASIC-23_蓝桥杯_芯片测试
- 【51nod】2590 持续讨伐
- 【luogu 3811】【模板】乘法逆元
- Spark任务调度流程及调度策略分析
- Google单季度,营收超过753亿美元
- NYOJ 84 阶乘的0 数论
- 【Linux导论】Linux引导流程(The Boot Process)
- NCRE四级网络工程师考题详解----三级索引结构
- JavaScript复习笔记(3)——数据类型(null、undefined、NaN)与深度克隆
- 移动端ajax分页,移动端分页加载 - 花乐天的个人空间 - OSCHINA - 中文开源技术交流社区...
- github API 实例 python源码 爬取用户信息
- 有关设计网站的收藏集合
- C++11中的原子操作(atomic operation)和自旋锁
- Zynga的数据分析
- 汉王科技在人民大会堂响起自主品牌的高亢之声
- Redis的使用【Redis】
- 真 · 神经网络发明人福岛邦彦获奖,Schmidhuber、李飞飞点赞
- 量化交易 米筐 策略回测总结
- RDD实战电影点评系统案例
热门文章
- nimm博弈必胜方可操作种数HDU - 1850
- Leetcode每日一题:24.swap-nodes-in-pairs(两两交换链表中的节点)
- 蓝桥杯 基础练习 时间转换
- 线性回归—梯度下降python实现
- 剑指offer (05):替换字符串中空格 (C++ Python 实现)
- 额的神啊~~可爱的Visual Studio把项目模板扔了
- 第二十三:Appium+Pytest实现app并发测试
- python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
- 全连接层的作用_全连接层实现
- es客户端工具_超越 Cookie:当今的客户端数据存储