文章目录
概要
项目架构:前端Vue3、ts
后端:springboot+mongoDB
需要将GDB文件的CGCS2000坐标转为GCJ02,然后在前端的高德地图api上进行显示
包括MultiLineString、MultiPolygon、Point等类型的转换
教程包括批量geojson文件转为gcj02,并上传到后端的示例
需要用到前端的 coordtransform
注意事项:因为CGCS2000坐标大部分精度非常大,所以如果以Number类型导入或输入,简单的前端处理会遇到问题 ,需要使用 json-bigint库配和处理
GDB文件导出
首先使用QGIS软件打开.GDB文件,然后导出图层
这里选择WGS84
导出后得到geojson文件
tip:geometryType定义
导出的坐标有多种类型
Point:一维数组[]
MultiLineString:三维数组[[[]]]
MultiPolygon:四维数组[]
转换步骤
- 前端安装 coordtransform、 json-bigint
npm install coordtransform
npm install json-bigint
(看情况安装) - 时刻注意数据精度细节问题
注:我的geojson文件结构为:
{
"features": [
{
"type": "Feature", "properties": {
"XXX": 1, ...},
"geometry": {
"type": "Point", "coordinates": [ 123456.132465789012345, 123456.132465789012345 ] } },
{
....}
]
}
1. Point类型转换代码:
const convertedFeaturesAll: Ref<any[]> = ref([]);
const convertedFeatures = geojsonData.features.map((feature: any) => {
const {
coordinates } = feature.geometry;
const [lon, lat] = coordinates;
const [gcjLon, gcjLat] = coordtransform.wgs84togcj02(lon, lat);
return {
coordinates: [gcjLon, gcjLat],
};
});