From 433b18fddbdb38f0c2a0a2358bc74fe46e10c9ba Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Thu, 17 Aug 2023 11:07:41 +0800
Subject: [PATCH] chore:测试提交
---
screen-manage/src/main/java/com/moral/api/controller/TestController.java | 41 +++++
screen-manage/src/main/java/com/moral/api/service/HistorySecondCruiserService.java | 2
screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java | 92 ++++++++++++
screen-manage/src/main/java/com/moral/api/controller/CruiserController.java | 4
screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java | 28 +++
screen-manage/src/main/java/com/moral/api/service/ManageCoordinateDetailService.java | 10 +
screen-manage/src/main/java/com/moral/api/util/RoadUtils.java | 157 ++++++++++++++++++++++
screen-manage/src/main/java/com/moral/api/pojo/dto/cruiser/CruiserDTO.java | 3
screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java | 29 +++
screen-manage/src/main/java/com/moral/api/entity/ManageCoordinateDetail.java | 5
10 files changed, 355 insertions(+), 16 deletions(-)
diff --git a/screen-manage/src/main/java/com/moral/api/controller/CruiserController.java b/screen-manage/src/main/java/com/moral/api/controller/CruiserController.java
index 2c34812..651b23f 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/CruiserController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/CruiserController.java
@@ -69,9 +69,9 @@
if (!params.containsKey("mac") || !params.containsKey("time1")|| !params.containsKey("time2")) {
return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
}
- List<CruiserDTO> data = historySecondCruiserService.getCruiserInFo(params);
+ Map<String, Object> cruiserInFo = historySecondCruiserService.getCruiserInFo(params);
- return ObjectUtils.isEmpty(data)? ResultMessage.ok() : ResultMessage.ok(data);
+ return ObjectUtils.isEmpty(cruiserInFo)? ResultMessage.ok() : ResultMessage.ok(cruiserInFo);
}
diff --git a/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java b/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java
index d819dd2..97ed93a 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/ManageCoordinateDetailController.java
@@ -2,6 +2,8 @@
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -9,6 +11,8 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.moral.api.entity.ManageCoordinateDetail;
@@ -49,7 +53,18 @@
* @return
*/
@PostMapping("batch")
- public ResultMessage getInserts(){
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
+ @ApiImplicitParam(name = "coordinateId", value = "������id", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "time1", value = "���������2021-08-18", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "time2", value = "���������2021-08-18", required = true, paramType = "query", dataType = "String")
+ })
+ public ResultMessage getInserts(@RequestBody Map<String,Object> params){
+ if (!params.containsKey("coordinateId") || !params.containsKey("time1")|| !params.containsKey("time2")) {
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
+
+
return null;
}
@@ -84,7 +99,17 @@
* @return
*/
@GetMapping("select")
- public ResultMessage selectAll(){
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
+ @ApiImplicitParam(name = "coordinateId", value = "������id", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "time1", value = "���������2021-08-18", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "time2", value = "���������2021-08-18", required = true, paramType = "query", dataType = "String")
+ })
+ public ResultMessage selectAll(@RequestBody Map<String,Object> params){
+ if (!params.containsKey("coordinateId") || !params.containsKey("time1")|| !params.containsKey("time2")) {
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
+ Map<String, Object> map = manageCoordinateDetailService.selectCoordinate(params);
return null;
}
}
diff --git a/screen-manage/src/main/java/com/moral/api/controller/TestController.java b/screen-manage/src/main/java/com/moral/api/controller/TestController.java
index 35bd368..6222d6d 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/TestController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/TestController.java
@@ -8,6 +8,10 @@
import com.moral.api.entity.Test;
import com.moral.api.entity.UnitConversion;
import com.moral.api.mapper.SysDictDataMapper;
+import com.moral.api.pojo.dto.account.AccountDTO;
+import com.moral.api.pojo.dto.accountRole.AccountRoleDTO;
+import com.moral.api.pojo.dto.adjust.AdjustDTO;
+import com.moral.api.service.DeviceService;
import com.moral.api.service.SensorService;
import com.moral.api.service.SysDictDataService;
import com.moral.api.service.TestService;
@@ -212,18 +216,43 @@
@Autowired
SysDictDataMapper sysDictDataMapper;
+ @Autowired
+ private DeviceService deviceService;
+
@ApiOperation(value = "������������", notes = "������������")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
})
@RequestMapping(value = "getSensor", method = RequestMethod.GET)
public void getSensor() {
- QueryWrapper<Sensor> queryWrapper = new QueryWrapper<>();
- queryWrapper.select("code").eq("is_delete", Constants.NOT_DELETE);
- List<Object> list = sensorService.listObjs(queryWrapper);
- for (Object o : list) {
- System.out.println(o);
- }
+ HashMap<String, Object> deviceData = new HashMap<>();
+ deviceData.put("time","1691996716839");
+ deviceData.put("DataTime","20230814150000");
+ deviceData.put("mac","p5dnd7a0245362");
+ deviceData.put("a00e12","11479.2");
+ deviceData.put("a00e13","44.0");
+ deviceData.put("a21005","0.0264");
+ deviceData.put("a21004","20.0");
+ deviceData.put("a21026","30.5");
+ deviceData.put("a01001","38.1");
+ deviceData.put("a05024","279.6");
+ deviceData.put("a01002","54.2");
+ deviceData.put("a01007","2.45");
+ deviceData.put("a01006","805.834");
+ deviceData.put("a01008","102.0");
+ deviceData.put("a34002","4.9");
+ deviceData.put("a34004","4.9");
+ deviceData.put("a00e03","798.5");
+ deviceData.put("a00e04","2.9");
+ deviceData.put("a99054","0.0348");
+ deviceData.put("a31001","0.1");
+ Map<String, Object> map = deviceService.adjustDeviceData(deviceData, "2");
+// QueryWrapper<Sensor> queryWrapper = new QueryWrapper<>();
+// queryWrapper.select("code").eq("is_delete", Constants.NOT_DELETE);
+// List<Object> list = sensorService.listObjs(queryWrapper);
+// for (Object o : list) {
+// System.out.println(o);
+// }
}
}
diff --git a/screen-manage/src/main/java/com/moral/api/entity/ManageCoordinateDetail.java b/screen-manage/src/main/java/com/moral/api/entity/ManageCoordinateDetail.java
index c87c537..ac6cc22 100644
--- a/screen-manage/src/main/java/com/moral/api/entity/ManageCoordinateDetail.java
+++ b/screen-manage/src/main/java/com/moral/api/entity/ManageCoordinateDetail.java
@@ -7,6 +7,7 @@
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
@@ -55,4 +56,8 @@
private String updayeUserName;
+ @TableField(exist = false)
+ private String code;
+
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/dto/cruiser/CruiserDTO.java b/screen-manage/src/main/java/com/moral/api/pojo/dto/cruiser/CruiserDTO.java
index af4c2ed..76364ec 100644
--- a/screen-manage/src/main/java/com/moral/api/pojo/dto/cruiser/CruiserDTO.java
+++ b/screen-manage/src/main/java/com/moral/api/pojo/dto/cruiser/CruiserDTO.java
@@ -28,6 +28,9 @@
private Double flyLon;
+ private String data;
+
+
@Override
public boolean equals(Object o) {
diff --git a/screen-manage/src/main/java/com/moral/api/service/HistorySecondCruiserService.java b/screen-manage/src/main/java/com/moral/api/service/HistorySecondCruiserService.java
index 37b16df..00c00c1 100644
--- a/screen-manage/src/main/java/com/moral/api/service/HistorySecondCruiserService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/HistorySecondCruiserService.java
@@ -25,5 +25,5 @@
List<SpecialDevice> selectCruisers();
//���������������������
- List<CruiserDTO> getCruiserInFo(Map<String, Object> params);
+ Map<String,Object> getCruiserInFo(Map<String, Object> params);
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateDetailService.java b/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateDetailService.java
index ae2d9a4..1ef383b 100644
--- a/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateDetailService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/ManageCoordinateDetailService.java
@@ -1,5 +1,7 @@
package com.moral.api.service;
+import java.util.Map;
+
import com.baomidou.mybatisplus.extension.service.IService;
import com.moral.api.entity.ManageCoordinateDetail;
@@ -10,4 +12,12 @@
void deleteCoordinate(Integer id);
+
+
+
+ Map<String,Object> selectCoordinate(Map<String,Object> params);
+
+
+ Integer batchAll(Map<String,Object> params);
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
index 0b2e9af..4e5e34d 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
@@ -12,6 +12,7 @@
import com.moral.api.service.HistorySecondCruiserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.service.SpecialDeviceService;
+import com.moral.api.util.RoadUtils;
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import com.moral.util.DateUtils;
@@ -24,9 +25,13 @@
import org.springframework.util.ObjectUtils;
import java.sql.Wrapper;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
@@ -97,6 +102,7 @@
@Override
public List<SpecialDevice> selectCruisers() {
QueryWrapper<SpecialDevice> wrapper = new QueryWrapper<>();
+ wrapper.select("name","mac");
wrapper.eq("is_delete",Constants.NOT_DELETE);
List<SpecialDevice> specialDevices = specialDeviceMapper.selectList(wrapper);
return specialDevices;
@@ -108,7 +114,8 @@
* @return
*/
@Override
- public List<CruiserDTO> getCruiserInFo(Map<String, Object> params) {
+ public Map<String,Object> getCruiserInFo(Map<String, Object> params) {
+ HashMap<String, Object> map = new HashMap<>();
params.put("dateFormat", "%Y-%m-%d %H:%i:%s");
List<CruiserDTO> data = historySecondCruiserMapper.getCruiserInfo(params);
List<CruiserDTO> rsCruiser = data.stream().distinct().collect(Collectors.toList());
@@ -118,6 +125,18 @@
}
double lon = o.getFlyLon();
double lat = o.getFlyLat();
+ double[] doubles = RoadUtils.transformWGS84ToBD09(lon, lat);
+ Matcher matcher = Pattern.compile("\\d*\\.\\d{8}").matcher(""+doubles[0]);
+ matcher.find();
+ String s = matcher.group();
+ Matcher matcher1 = Pattern.compile("\\d*\\.\\d{8}").matcher(""+doubles[1]);
+ matcher1.find();
+ String s1 = matcher1.group();
+ o.setFlyLon(Double.parseDouble(s));
+ o.setFlyLat(Double.parseDouble(s1));
+ o.setData(lon+"_"+lat);
+// o.setFlyLon(doubles[0]);
+// o.setFlyLat(doubles[1]);
if (lon < 70 || lon > 150 || lat < 20 || lat > 60) {
return true;
}
@@ -126,8 +145,13 @@
if(CollectionUtils.isEmpty(data)){
return null;
}
+ map.put("rsData",rsCruiser);
log.info(data.size()+"");
log.info(rsCruiser.size()+"");
- return rsCruiser;
+ return map;
}
+
+
+
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java
index 66fc777..45c3471 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java
@@ -1,23 +1,34 @@
package com.moral.api.service.impl;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
import java.util.Date;
-
+import java.util.List;
+import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.entity.ManageCoordinateDetail;
+import com.moral.api.mapper.HistorySecondCruiserMapper;
import com.moral.api.mapper.ManageCoordinateDetailMapper;
+import com.moral.api.pojo.dto.cruiser.CruiserDTO;
import com.moral.api.service.ManageCoordinateDetailService;
+import com.moral.api.util.RoadUtils;
@Service
+@Slf4j
public class ManageCoordinateDetailServiceImpl extends ServiceImpl<ManageCoordinateDetailMapper, ManageCoordinateDetail> implements ManageCoordinateDetailService {
@Autowired
private ManageCoordinateDetailMapper manageCoordinateDetailMapper;
+
+ @Autowired
+ private HistorySecondCruiserMapper historySecondCruiserMapper;
/**
* ���������������
* @param manageCoordinateDetail
@@ -25,14 +36,18 @@
*/
@Override
public Integer insertCoordinate(ManageCoordinateDetail manageCoordinateDetail) {
+ double[] doubles = RoadUtils.transformBD09ToWGS84(manageCoordinateDetail.getLongitude(), manageCoordinateDetail.getLatitude());
+ log.info(doubles[0]+"_"+doubles[1]);
QueryWrapper<ManageCoordinateDetail> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("coordinate_id",manageCoordinateDetail.getCoordinateId());
- queryWrapper.eq("longitude",manageCoordinateDetail.getLongitude());
- queryWrapper.eq("latitude",manageCoordinateDetail.getLatitude());
+ queryWrapper.eq("longitude",doubles[0]);
+ queryWrapper.eq("latitude",doubles[1]);
Integer integer = manageCoordinateDetailMapper.selectCount(queryWrapper);
if (integer<1){
manageCoordinateDetail.setCreateTime(new Date());
manageCoordinateDetail.setUpdateTime(new Date());
+ manageCoordinateDetail.setLongitude(doubles[0]);
+ manageCoordinateDetail.setLatitude(doubles[1]);
int insert = manageCoordinateDetailMapper.insert(manageCoordinateDetail);
return insert;
}
@@ -47,4 +62,75 @@
public void deleteCoordinate(Integer id) {
manageCoordinateDetailMapper.deleteById(id);
}
+
+
+ /**
+ * ���������������
+ * @param params
+ * @return
+ */
+ @Override
+ public Map<String, Object> selectCoordinate(Map<String, Object> params) {
+ params.put("dateFormat", "%Y-%m-%d %H:%i:%s");
+ String coordinateId = params.get("coordinateId").toString();
+ QueryWrapper<ManageCoordinateDetail> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("coordinate_id",coordinateId);
+ List<ManageCoordinateDetail> manageCoordinateDetails = manageCoordinateDetailMapper.selectList(queryWrapper);
+ ArrayList<String> list1 = new ArrayList<>();
+ ArrayList<String> list2 = new ArrayList<>();
+ for (ManageCoordinateDetail manageCoordinateDetail : manageCoordinateDetails) {
+ Double latitude = manageCoordinateDetail.getLatitude();
+ Double longitude = manageCoordinateDetail.getLongitude();
+ String s = longitude + "_" + latitude;
+ list1.add(s);
+ }
+ List<CruiserDTO> cruiserInfo = historySecondCruiserMapper.getCruiserInfo(params);
+ for (CruiserDTO cruiserDTO : cruiserInfo) {
+ String s = cruiserDTO.getFlyLat().toString();
+ String s1 = cruiserDTO.getFlyLon().toString();
+ String rs = s1 + "_" + s;
+ list2.add(rs);
+ }
+ //���������
+ list1.retainAll(list2);
+ //���������
+ list2.removeAll(list1);
+
+ return null;
+ }
+
+
+ /**
+ * ������������
+ * @param params
+ * @return
+ */
+ @Override
+ @Transactional
+ public Integer batchAll(Map<String, Object> params) {
+ params.put("dateFormat", "%Y-%m-%d %H:%i:%s");
+ String coordinateId = params.get("coordinateId").toString();
+ QueryWrapper<ManageCoordinateDetail> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("coordinate_id",coordinateId);
+ List<ManageCoordinateDetail> manageCoordinateDetails = manageCoordinateDetailMapper.selectList(queryWrapper);
+ ArrayList<String> list1 = new ArrayList<>();
+ ArrayList<String> list2 = new ArrayList<>();
+ for (ManageCoordinateDetail manageCoordinateDetail : manageCoordinateDetails) {
+ Double latitude = manageCoordinateDetail.getLatitude();
+ Double longitude = manageCoordinateDetail.getLongitude();
+ String s = longitude + "_" + latitude;
+ list1.add(s);
+ }
+ List<CruiserDTO> cruiserInfo = historySecondCruiserMapper.getCruiserInfo(params);
+ for (CruiserDTO cruiserDTO : cruiserInfo) {
+ String s = cruiserDTO.getFlyLat().toString();
+ String s1 = cruiserDTO.getFlyLon().toString();
+ String rs = s1 + "_" + s;
+ list2.add(rs);
+ }
+ //���������
+ list2.removeAll(list1);
+
+ return null;
+ }
}
diff --git a/screen-manage/src/main/java/com/moral/api/util/RoadUtils.java b/screen-manage/src/main/java/com/moral/api/util/RoadUtils.java
new file mode 100644
index 0000000..c0cbf62
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/util/RoadUtils.java
@@ -0,0 +1,157 @@
+package com.moral.api.util;
+
+
+/**
+ * ���������������
+ */
+
+public class RoadUtils {
+
+ private static final double x_PI = 3.14159265358979324 * 3000.0 / 180.0;
+ private static final double PI = 3.1415926535897932384626;
+ private static final double a = 6378245.0;
+ private static final double ee = 0.00669342162296594323;
+ /**
+ * WGS84 ������ ��� GCJ02
+ *
+ * @param lng ������
+ * @param lat ������
+ * @return GCJ02 ���������[���������������]
+ */
+ public static double[] transformWGS84ToGCJ02(double lng, double lat) {
+ if (outOfChina(lng, lat)) {
+ return new double[]{lng, lat};
+ } else {
+ double dLat = transformLat(lng - 105.0, lat - 35.0);
+ double dLng = transformLng(lng - 105.0, lat - 35.0);
+ double redLat = lat / 180.0 * PI;
+ double magic = Math.sin(redLat);
+ magic = 1 - ee * magic * magic;
+ double sqrtMagic = Math.sqrt(magic);
+ dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * PI);
+ dLng = (dLng * 180.0) / (a / sqrtMagic * Math.cos(redLat) * PI);
+ double mgLat = lat + dLat;
+ double mgLng = lng + dLng;
+ return new double[]{mgLng, mgLat};
+ }
+ }
+
+ private static double transformLat(double lng, double lat) {
+ double ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));
+ ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
+ ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;
+ ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;
+ return ret;
+ }
+
+ private static double transformLng(double lng, double lat) {
+ double ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));
+ ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
+ ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;
+ ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;
+ return ret;
+ }
+ /**
+ * ������������������������������
+ *
+ * @param lng ������
+ * @param lat ������
+ * @return ���������������������
+ */
+ public static boolean outOfChina(double lng, double lat) {
+ return (lng < 72.004 || lng > 137.8347) || (lat < 0.8293 || lat > 55.8271);
+ }
+
+ /**
+ * GCJ02 ���������������
+ *
+ * @param lng GCJ02 ������
+ * @param lat GCJ02 ������
+ * @return ���������������[���������������]
+ */
+ public static double[] transformGCJ02ToBD09(double lng, double lat) {
+ double z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);
+ double theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);
+ double bd_lng = z * Math.cos(theta) + 0.0065;
+ double bd_lat = z * Math.sin(theta) + 0.006;
+ return new double[]{bd_lng, bd_lat};
+ }
+
+
+ /**
+ * WGS84 ��� ������������BD09
+ *
+ * @param lng ������
+ * @param lat ������
+ * @return BD09 ���������[���������������]
+ */
+ public static double[] transformWGS84ToBD09(double lng, double lat) {
+ double[] lngLat = transformWGS84ToGCJ02(lng, lat);
+
+ return transformGCJ02ToBD09(lngLat[0], lngLat[1]);
+ }
+
+
+
+ /**
+ * ���������������BD09������ GCJ02
+ *
+ * @param lng ������������
+ * @param lat ������������
+ * @return GCJ02 ���������[���������������]
+ */
+ public static double[] transformBD09ToGCJ02(double lng, double lat) {
+ double x = lng - 0.0065;
+ double y = lat - 0.006;
+ double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_PI);
+ double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_PI);
+ double gcj_lng = z * Math.cos(theta);
+ double gcj_lat = z * Math.sin(theta);
+ return new double[]{gcj_lng, gcj_lat};
+
+ }
+
+ /**
+ * ������������BD09 ��� WGS84
+ *
+ * @param lng ������
+ * @param lat ������
+ * @return WGS84 ���������[���������������]
+ */
+ public static double[] transformBD09ToWGS84(double lng, double lat) {
+ double[] lngLat = transformBD09ToGCJ02(lng, lat);
+
+ return transformGCJ02ToWGS84(lngLat[0], lngLat[1]);
+ }
+
+
+ /**
+ * GCJ02 ��� WGS84
+ *
+ * @param lng ������
+ * @param lat ������
+ * @return WGS84���������[���������������]
+ */
+ public static double[] transformGCJ02ToWGS84(double lng, double lat) {
+ if (outOfChina(lng, lat)) {
+ return new double[]{lng, lat};
+ } else {
+ double dLat = transformLat(lng - 105.0, lat - 35.0);
+ double dLng = transformLng(lng - 105.0, lat - 35.0);
+ double radLat = lat / 180.0 * PI;
+ double magic = Math.sin(radLat);
+ magic = 1 - ee * magic * magic;
+ double sqrtMagic = Math.sqrt(magic);
+ dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * PI);
+ dLng = (dLng * 180.0) / (a / sqrtMagic * Math.cos(radLat) * PI);
+ double mgLat = lat + dLat;
+ double mgLng = lng + dLng;
+ return new double[]{lng * 2 - mgLng, lat * 2 - mgLat};
+ }
+ }
+
+
+
+
+
+}
--
Gitblit v1.8.0