如何实现wgs84(ep4326)坐标系与百度坐标系,火星坐标系的互转,java与JavaScript都有
在Java和JavaScript中实现WGS84坐标系与百度坐(BD09)坐标系、火星坐标系(GCJ02)的互转,可以使用开源库如proj4j
或ol
(OpenLayers库)。以下是使用proj4j
库的示例代码。
首先,添加proj4j
依赖到你的项目中。
Java 示例代码:
import org.osgeo.proj4j.CRSFactory;
import org.osgeo.proj4j.CoordinateReferenceSystem;
import org.osgeo.proj4j.CoordinateTransform;
import org.osgeo.proj4j.ProjCoordinate;
public class CoordinateConverter {
public static void main(String[] args) {
CRSFactory crsFactory = new CRSFactory();
// 设置WGS84和GCJ02的坐标系
CoordinateReferenceSystem wgs84 = crsFactory.createFromName("EPSG:4326");
CoordinateReferenceSystem bd09 = crsFactory.createFromName("EPSG:3395");
CoordinateReferenceSystem gcj02 = crsFactory.createFromName("EPSG:3455");
// 创建转换对象
CoordinateTransform transformToBaidu = new CoordinateTransform(wgs84, bd09);
CoordinateTransform transformToGCJ02 = new CoordinateTransform(wgs84, gcj02);
// 原始WGS84坐标点
double lat = 40.0;
double lon = 116.0;
// 转换坐标
ProjCoordinate coord = new ProjCoordinate(lon, lat);
transformToBaidu.transform(coord, coord);
System.out.println("Baidu Coordinate: " + coord.x + ", " + coord.y);
transformToGCJ02.transform(coord, coord);
System.out.println("GCJ02 Coordinate: " + coord.x + ", " + coord.y);
}
}
JavaScript 示例代码(使用ol
库):
import 'ol/ol.css';
import { transform } from 'ol/proj';
// 原始WGS84坐标点
const lat = 40.0;
const lon = 116.0;
// 百度坐标系转换
const bd09 = transform([lon, lat], 'EPSG:4326', 'EPSG:3395');
console.log('Baidu Coordinate:', bd09);
// 火星坐标系转换
const gcj02 = transform([lon, lat], 'EPSG:4326', 'EPSG:3455');
console.log('GCJ02 Coordinate:', gcj02);
请确保在Java中有对应的EPSG:3395和EPSG:3455的坐标系定义,如果没有,可能需要自定义或者使用其他方法实现。在JavaScript中,ol
库通常内置了这些坐标系的定义,因此可以直接使用。
注意:这些代码示例仅用于说明如何进行坐标系转换,并不保证能够正确处理所有边界情况或特殊情况。在实际应用中,可能需要额外的错误处理和边界检查。
评论已关闭