投影坐标系统,实质上便是平面坐标系统,其地图单位通常为米。
投影的意义:将球面坐标转化为平面坐标的过程便称为投影。
地理坐标系右下角显示Degrees(度)表示经纬度;投影显示的是Meters(米)
平常看到的WGS84、高德、百度坐标系都是地理坐标系,当我们需要计算距离、面积、长度时需要用投影坐标系
利用一定数学法则把地球表面转换到平面上的理论和方法称为地图投影。由于地球表面是一个不可展平的曲面,所以运用任何数学方法进行投影转换都会产生误差和变形,为按照不同的需求缩小误差,就产生了各种投影方式,如圆柱投影、圆锥投影、等角投影、等面积投影、切投影、割投影等。
一种正轴等角切圆柱投影。
-
等角:保证对象形状不变以及方向位置正确。
-
圆柱:保证纬线经线平行相互垂直且经线间隔相同。
-
缺点:纬线间隔从赤道向两级逐渐增大,面积变形大。
-
Web墨卡托:Google首创,把地球模拟为球体而非椭球体,近似等角。
==============================================================
WGS84坐标系
地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系。
GCJ02坐标系
火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。
BD09坐标系
百度地图使用坐标系,GCJ02坐标系经加密后的坐标系。
转换方法
国际通用的转换做法:
百度的做法:
======================================================================
需要2个依赖库,这里要注意org.geotool
库的下载源。
org.locationtech.jts
jts-core
1.18.1
org.geotools
gt-epsg-hsql
22-RC
org.geotools
gt-main
22-RC
geotools
geotools
http://maven.icm.edu.pl/artifactory/repo/
true
转换代码示例
// WGS84(一般项目中常用的是CSR:84和EPSG:4326)
CoordinateReferenceSystem sourceCRS = CRS.decode(“CRS:84”);
// Pseudo-Mercator(墨卡托投影)
CoordinateReferenceSystem targetCRS = CRS.decode(“EPSG:3857”);
MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS, false);
Geometry geometryMercator = JTS.transform(geometry, transform);
// 面积、周长
System.out.println(geometryMercator.getArea());
System.out.printl