• 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);}
}

经纬度,墨卡托等坐标转换相关推荐

  1. 经纬度与WGS84坐标转换

    经纬度与WGS84坐标转换 经纬度与WGS84坐标转换 经纬度与WGS84坐标转换 本代码实现在WGS84系统的大地坐标(BLH)和空间直角坐标(XYZ)的互相转换,符合标准语法,可直接使用 Modu ...

  2. java 墨卡托转经纬度_经纬度,墨卡托等坐标转换

    1.经纬度转墨卡托 1.1Java: public static double[] lngLat2Mercator(double lng, double lat) { double[] xy = ne ...

  3. c语言经纬度和大地坐标转换,经纬度坐标与大地坐标转换表

    *子午线角度值纬度值b经度值l角度值角度值f2-b2 114114 114114 114114 114114 1 234.565411113.59429634.94836113.9953-0.0047 ...

  4. python——经纬度坐标和平面投影坐标的相互转换

    美赛建模需要使用到平面坐标系去做基于时间序列的运动范围模型,所以需要对经纬度进行坐标系转换,转换到XY坐标系下.同时,在机器人的路径规划等方面依然会经常使用到坐标系的转换,所以记录一下. 文章目录 经 ...

  5. java jts获取线上任意一点到起点的距离

    java jts获取线上任意一点到起点的距离 近期项目要求计算某段公路上一辆车的运行轨迹,通过路上的设备实时获取车辆的经纬度信息并发送到后台接收. 抽象出来就是获取线上任意一点到起点的距离,按照一定每 ...

  6. AR+LBS街景实景红包PokemonGo游戏捉妖夺宝营销解决方案定制开发暨百度高德地图Unity插件SDK

    AR+LBS街景实景红包PokemonGo游戏捉妖夺宝营销解决方案定制开发暨百度高德地图Unity插件SDK 作者 komstone https://blog.csdn.net/komstone/ar ...

  7. WEB端显示三维地形模型

    注:正常在WEB上显示三维地形首选Cesium,本文内容仅作为研究,展示文章用DEM制作通用三维地形模型中制作的局部三维地形模型 Cesium是可以很容易的实现在WEB端三维地形的,下面的图是分别是使 ...

  8. 【算法系列】卡尔曼滤波算法

    系列文章目录 ·[算法系列]卡尔曼滤波算法 ·[算法系列]非线性最小二乘求解-直接求解法 ·[算法系列]非线性最小二乘求解-梯度下降法 ·[算法系列]非线性最小二乘-高斯牛顿法 ·[算法系列]非线性最 ...

  9. AR+LBS街景实景红包PokemonGo游戏捉妖夺宝营销解决方案暨百度高德地图Unity插件SDK

    1.AR+LBS街景实景红包.游戏.营销等解决方案 2.AR街景实景+百度高德LBS地图Unity插件SDK [3D/AR/VR/全息互动投影视觉开发] 近年来,全球玩家对于知名游戏Pokemon G ...

最新文章

  1. dns在企业网络中的应用
  2. BASIC-23_蓝桥杯_芯片测试
  3. 【51nod】2590 持续讨伐
  4. 【luogu 3811】【模板】乘法逆元
  5. Spark任务调度流程及调度策略分析
  6. Google单季度,营收超过753亿美元
  7. NYOJ 84 阶乘的0 数论
  8. 【Linux导论】Linux引导流程(The Boot Process)
  9. NCRE四级网络工程师考题详解----三级索引结构
  10. JavaScript复习笔记(3)——数据类型(null、undefined、NaN)与深度克隆
  11. 移动端ajax分页,移动端分页加载 - 花乐天的个人空间 - OSCHINA - 中文开源技术交流社区...
  12. github API 实例 python源码 爬取用户信息
  13. 有关设计网站的收藏集合
  14. C++11中的原子操作(atomic operation)和自旋锁
  15. Zynga的数据分析
  16. 汉王科技在人民大会堂响起自主品牌的高亢之声
  17. Redis的使用【Redis】
  18. 真 · 神经网络发明人福岛邦彦获奖,Schmidhuber、李飞飞点赞
  19. 量化交易 米筐 策略回测总结
  20. RDD实战电影点评系统案例

热门文章

  1. nimm博弈必胜方可操作种数HDU - 1850
  2. Leetcode每日一题:24.swap-nodes-in-pairs(两两交换链表中的节点)
  3. 蓝桥杯 基础练习 时间转换
  4. 线性回归—梯度下降python实现
  5. 剑指offer (05):替换字符串中空格 (C++ Python 实现)
  6. 额的神啊~~可爱的Visual Studio把项目模板扔了
  7. 第二十三:Appium+Pytest实现app并发测试
  8. python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
  9. 全连接层的作用_全连接层实现
  10. es客户端工具_超越 Cookie:当今的客户端数据存储