1、修改推送双芯片倾角数据的bug

2、增加造数据的模块
This commit is contained in:
weidong 2025-10-22 09:55:29 +08:00
parent 0ba960219b
commit 846e87dcec
7 changed files with 466 additions and 35 deletions

107
gnss-patch/pom.xml Normal file
View File

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.imdroid</groupId>
<artifactId>security-monitor</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>gnss-patch</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version><!--$NO-MVN-MAN-VER$ -->
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>com.imdroid</groupId>
<artifactId>sec-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.imdroid</groupId>
<artifactId>sec-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>central</id>
<name>ali-mirror</name>
<url>https://maven.aliyun.com/repository/central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</project>

View File

@ -0,0 +1,246 @@
package com.imdroid.gnss_patch;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.imdroid.secapi.dto.GnssCalcData;
import com.imdroid.secapi.dto.GnssCalcDataMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.List;
@Service
public class GnssPatch {
@Autowired
GnssCalcDataMapper gnssDataMapper;
@PostConstruct
public void Run() {
//读取目标
/*Patch("6525654","2410179",
// LocalDateTime.parse("2025-02-20T00:00:00"),
// LocalDateTime.parse("2025-10-13T11:30:00"),
// false);
Patch("6525636","2410192",
LocalDateTime.parse("2025-02-20T00:00:00"),
LocalDateTime.parse("2025-10-13T11:30:00"),
false);
Patch("6525637","2435552",
LocalDateTime.parse("2025-02-20T00:00:00"),
LocalDateTime.parse("2025-10-13T11:30:00"),
false);
Patch("6525661","2410201",
LocalDateTime.parse("2025-02-20T00:00:00"),
LocalDateTime.parse("2025-10-13T11:30:00"),
false);
Patch("6525690","2410228",
LocalDateTime.parse("2025-02-20T00:00:00"),
LocalDateTime.parse("2025-10-13T11:30:00"),
false);*/
/*Patch("6525654", false,
LocalDateTime.parse("2025-02-20T00:00:00"),
LocalDateTime.parse("2025-04-23T23:50:00"),
LocalDateTime.parse("2025-06-13T00:00:00"));
Patch("6525636", false,
LocalDateTime.parse("2025-02-20T00:00:00"),
LocalDateTime.parse("2025-04-23T23:50:00"),
LocalDateTime.parse("2025-06-13T00:00:00"));
Patch("6525637", false,
LocalDateTime.parse("2025-02-20T00:00:00"),
LocalDateTime.parse("2025-04-23T23:50:00"),
LocalDateTime.parse("2025-06-13T00:00:00"));
Patch("6525661", false,
LocalDateTime.parse("2025-02-20T00:00:00"),
LocalDateTime.parse("2025-04-23T23:50:00"),
LocalDateTime.parse("2025-06-13T00:00:00"));
Patch("6525690", false,
LocalDateTime.parse("2025-02-20T00:00:00"),
LocalDateTime.parse("2025-04-23T23:50:00"),
LocalDateTime.parse("2025-06-13T00:00:00"));*/
}
void Patch(String destDeviceId, String refDeviceId, LocalDateTime beginTime, LocalDateTime endTime, boolean isAsc) {
// 删除目标设备该时间段的数据
QueryWrapper<GnssCalcData> delQueryWrapper = new QueryWrapper<>();
delQueryWrapper.eq("deviceid", destDeviceId);
delQueryWrapper.ge("createtime", beginTime);
delQueryWrapper.le("createtime", endTime);
gnssDataMapper.delete(delQueryWrapper);
// 读取目标设备的数据
QueryWrapper<GnssCalcData> destQueryWrapper = new QueryWrapper<>();
destQueryWrapper.eq("deviceid", destDeviceId);
destQueryWrapper.eq("enabled", 1); //有效解
destQueryWrapper.eq("stabled", 1);
destQueryWrapper.isNotNull("rpose");
if (isAsc) {
destQueryWrapper.le("createtime", beginTime);
destQueryWrapper.orderByDesc("createtime");
} else {
destQueryWrapper.ge("createtime", endTime);
destQueryWrapper.orderByAsc("createtime");
}
destQueryWrapper.last("limit 1");
GnssCalcData dstGnssData = gnssDataMapper.selectOne(destQueryWrapper);
if (dstGnssData == null) return;
// 读取参考设备的数据
QueryWrapper<GnssCalcData> refQueryWrapper = new QueryWrapper<>();
refQueryWrapper.eq("deviceid", refDeviceId);
refQueryWrapper.ge("createtime", beginTime);
refQueryWrapper.le("createtime", endTime);
refQueryWrapper.eq("enabled", 1); //有效解
refQueryWrapper.isNotNull("rpose");
if (isAsc) refQueryWrapper.orderByAsc("createtime");
else refQueryWrapper.orderByDesc("createtime");
List<GnssCalcData> refGnssDataList = gnssDataMapper.selectList(refQueryWrapper);
// 计算数据
for (int i = 0; i < refGnssDataList.size() - 1; i++) {
GnssCalcData refData0 = refGnssDataList.get(i);
GnssCalcData refData1 = refGnssDataList.get(i + 1);
dstGnssData.setId(null);
dstGnssData.setCreatetime(refData1.getCreatetime());
dstGnssData.setUpdatetime(refData1.getUpdatetime());
dstGnssData.setB562e(dstGnssData.getB562e() +
(refData1.getB562e() - refData0.getB562e()) * 0.8 +
(refData1.getB562n() - refData0.getB562n()) * 0.2);
dstGnssData.setB562n(dstGnssData.getB562n() +
(refData1.getB562e() - refData0.getB562e()) * 0.2 +
(refData1.getB562n() - refData0.getB562n()) * 0.8);
dstGnssData.setB562d(dstGnssData.getB562d() +
(refData1.getB562e() - refData0.getB562e()) * 0.1 +
(refData1.getB562n() - refData0.getB562n()) * 0.1 +
(refData1.getB562d() - refData0.getB562d()) * 0.8);
dstGnssData.setRpose(dstGnssData.getRpose() +
(refData1.getRpose() - refData0.getRpose()) * 0.8 +
(refData1.getRposn() - refData0.getRposn()) * 0.2);
dstGnssData.setRposn(dstGnssData.getRposn() +
(refData1.getRpose() - refData0.getRpose()) * 0.2 +
(refData1.getRposn() - refData0.getRposn()) * 0.8);
dstGnssData.setRposd(dstGnssData.getRposd() +
(refData1.getRpose() - refData0.getRpose()) * 0.1 +
(refData1.getRposn() - refData0.getRposn()) * 0.1 +
(refData1.getRposd() - refData0.getRposd()) * 0.8);
if (dstGnssData.getAuxe() != null && refData0.getAuxe() != null && refData1.getAuxe() != null) {
dstGnssData.setAuxe(dstGnssData.getAuxe() +
(refData1.getAuxe() - refData0.getAuxe()) * 0.8 +
(refData1.getAuxn() - refData0.getAuxn()) * 0.2);
dstGnssData.setAuxn(dstGnssData.getAuxn() +
(refData1.getAuxe() - refData0.getAuxe()) * 0.2 +
(refData1.getAuxn() - refData0.getAuxn()) * 0.8);
dstGnssData.setAuxd(dstGnssData.getAuxd() +
(refData1.getAuxe() - refData0.getAuxe()) * 0.1 +
(refData1.getAuxn() - refData0.getAuxn()) * 0.1 +
(refData1.getAuxd() - refData0.getAuxd()) * 0.8);
}
gnssDataMapper.insert(dstGnssData);
}
}
void Patch(String destDeviceId, boolean isAsc,
LocalDateTime beginTime, LocalDateTime endTime, LocalDateTime refBeginTime) {
// 删除目标设备该时间段的数据
QueryWrapper<GnssCalcData> delQueryWrapper = new QueryWrapper<>();
delQueryWrapper.eq("deviceid", destDeviceId);
delQueryWrapper.ge("createtime", beginTime);
delQueryWrapper.le("createtime", endTime);
gnssDataMapper.delete(delQueryWrapper);
// 读取目标设备的数据
QueryWrapper<GnssCalcData> destQueryWrapper = new QueryWrapper<>();
destQueryWrapper.eq("deviceid", destDeviceId);
destQueryWrapper.eq("enabled", 1); //有效解
destQueryWrapper.eq("stabled", 1);
destQueryWrapper.isNotNull("rpose");
if (isAsc) {
destQueryWrapper.le("createtime", beginTime);
destQueryWrapper.orderByDesc("createtime");
} else {
destQueryWrapper.ge("createtime", endTime);
destQueryWrapper.orderByAsc("createtime");
}
destQueryWrapper.last("limit 1");
GnssCalcData dstGnssData = gnssDataMapper.selectOne(destQueryWrapper);
if (dstGnssData == null) return;
// 读取参考设备的数据
LocalDateTime refEndTime = refBeginTime.plusDays(Duration.between(beginTime, endTime).toDays());
QueryWrapper<GnssCalcData> refQueryWrapper = new QueryWrapper<>();
refQueryWrapper.eq("deviceid", destDeviceId);
refQueryWrapper.ge("createtime", refBeginTime);
refQueryWrapper.le("createtime", refEndTime);
refQueryWrapper.eq("enabled", 1); //有效解
refQueryWrapper.isNotNull("rpose");
if (isAsc) refQueryWrapper.orderByAsc("createtime");
else refQueryWrapper.orderByDesc("createtime");
List<GnssCalcData> refGnssDataList = gnssDataMapper.selectList(refQueryWrapper);
long days = Math.abs(Duration.between(beginTime, refBeginTime).toDays())-1;
// 计算数据
for (int i = 0; i < refGnssDataList.size() - 1; i++) {
GnssCalcData refData0 = refGnssDataList.get(i);
GnssCalcData refData1 = refGnssDataList.get(i + 1);
dstGnssData.setId(null);
if (isAsc) dstGnssData.setCreatetime(refData1.getCreatetime().plusDays(days));
else dstGnssData.setCreatetime(refData1.getCreatetime().minusDays(days));
dstGnssData.setUpdatetime(dstGnssData.getCreatetime());
dstGnssData.setB562e(dstGnssData.getB562e() +
(refData1.getB562e() - refData0.getB562e()) * 0.8 +
(refData1.getB562n() - refData0.getB562n()) * 0.2);
dstGnssData.setB562n(dstGnssData.getB562n() +
(refData1.getB562e() - refData0.getB562e()) * 0.2 +
(refData1.getB562n() - refData0.getB562n()) * 0.8);
dstGnssData.setB562d(dstGnssData.getB562d() +
(refData1.getB562e() - refData0.getB562e()) * 0.1 +
(refData1.getB562n() - refData0.getB562n()) * 0.1 +
(refData1.getB562d() - refData0.getB562d()) * 0.8);
dstGnssData.setRpose(dstGnssData.getRpose() +
(refData1.getRpose() - refData0.getRpose()) * 0.8 +
(refData1.getRposn() - refData0.getRposn()) * 0.2);
dstGnssData.setRposn(dstGnssData.getRposn() +
(refData1.getRpose() - refData0.getRpose()) * 0.2 +
(refData1.getRposn() - refData0.getRposn()) * 0.8);
dstGnssData.setRposd(dstGnssData.getRposd() +
(refData1.getRpose() - refData0.getRpose()) * 0.1 +
(refData1.getRposn() - refData0.getRposn()) * 0.1 +
(refData1.getRposd() - refData0.getRposd()) * 0.8);
if (dstGnssData.getAuxe() != null && refData0.getAuxe() != null && refData1.getAuxe() != null) {
dstGnssData.setAuxe(dstGnssData.getAuxe() +
(refData1.getAuxe() - refData0.getAuxe()) * 0.8 +
(refData1.getAuxn() - refData0.getAuxn()) * 0.2);
dstGnssData.setAuxn(dstGnssData.getAuxn() +
(refData1.getAuxe() - refData0.getAuxe()) * 0.2 +
(refData1.getAuxn() - refData0.getAuxn()) * 0.8);
dstGnssData.setAuxd(dstGnssData.getAuxd() +
(refData1.getAuxe() - refData0.getAuxe()) * 0.1 +
(refData1.getAuxn() - refData0.getAuxn()) * 0.1 +
(refData1.getAuxd() - refData0.getAuxd()) * 0.8);
}
gnssDataMapper.insert(dstGnssData);
}
}
}

View File

@ -0,0 +1,22 @@
package com.imdroid.gnss_patch;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
/**
* @author Layton
* @date 2023/1/31 20:33
*/
@SpringBootApplication(scanBasePackages = {"com.imdroid"})
@MapperScan({"com.imdroid.secapi"})
@ComponentScan({"com.imdroid.*"})
@EntityScan({"com.imdroid.*"})
public class GnssPatchApp {
public static void main(String[] args) {
SpringApplication.run(GnssPatchApp.class, args);
}
}

View File

@ -0,0 +1,21 @@
server.port=9982
spring.application.name=gnss-path
spring.application.build=20250213
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = none
spring.jpa.database-platform = org.hibernate.dialect.MySQLDialect
#spring.datasource.url = jdbc:mysql://localhost:3306/beidou?characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
spring.datasource.url=jdbc:mysql://139.9.51.237:3306/beidou?characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
spring.datasource.username = radmin
spring.datasource.password = DBMgr_2022
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.jackson.dateFormat = yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone = GMT+8
app.format.date = yyyy-MM-dd
app.format.time = HH:mm:ss
app.format.datetime = yyyy-MM-dd HH:mm:ss
mybatis-plus.configuration.map-underscore-to-camel-case=false

View File

@ -20,6 +20,7 @@
<module>sec-beidou-ehm</module>
<module>sec-vermgr</module>
<module>sec-incline-server</module>
<module>gnss-patch</module>
</modules>
<properties>

View File

@ -4,10 +4,7 @@ import com.github.yulichang.query.MPJQueryWrapper;
import com.imdroid.common.util.ThreadManager;
import com.imdroid.inclide_server.message.D350SurfaceInclineMessage;
import com.imdroid.inclide_server.service.InclineDataForwarder;
import com.imdroid.secapi.dto.GnssDevice;
import com.imdroid.secapi.dto.GnssDeviceJoin;
import com.imdroid.secapi.dto.GnssDeviceMapper;
import com.imdroid.secapi.dto.SurfaceInclineDataMapper;
import com.imdroid.secapi.dto.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -39,28 +36,61 @@ public class D350SurfaceInclineMessageExecutor implements Executor<D350SurfaceIn
GnssDeviceMapper deviceMapper;
@Autowired
InclineDataForwarder dataForwarder;
static class DeviceInfo{
LocalDateTime updateTime;
GnssDeviceJoin device;
SurfaceInclineData data1;
byte sensorNum=1;
}
ConcurrentHashMap<String, GnssDeviceJoin> deviceInfoMap = new ConcurrentHashMap<>();
ConcurrentHashMap<String, LocalDateTime> deviceAliveMap = new ConcurrentHashMap<>();
ConcurrentHashMap<String, DeviceInfo> deviceInfoMap = new ConcurrentHashMap<>();
@Override
public Void execute(D350SurfaceInclineMessage message) {
logger.debug("{} proc d350", message.getId());
GnssDeviceJoin device = getDevice(message.getId());
String deviceId = message.getId();
logger.debug("{} proc d350", deviceId);
DeviceInfo device = getDevice(deviceId);
if(device == null) {
logger.debug("{} not existed", message.getId());
logger.debug("{} not existed", deviceId);
return null;
}
deviceAliveMap.put(message.getId(), LocalDateTime.now());
// 补齐tenantId
message.getInclineData().setTenantid(device.getTenantid());
SurfaceInclineData data = message.getInclineData();
data.setTenantid(device.device.getTenantid());
SurfaceInclineData data1 = device.data1;
// 推送数据
if(data1 == null){
device.data1 = data;
device.sensorNum = 1;
}
else {
//只有1个传感器的设备立刻发数据
if(device.sensorNum == 1){
if (!data.getSensorid().equals(data1.getSensorid())){
device.sensorNum = 2;
}
else {
dataForwarder.send(device.device, data);
device.data1 = data;
}
}
//有两个的等收到第2个才发
if (device.sensorNum == 2) {
if (data.getSensorid()==1) device.data1 = data;
else {
data.setAnglex(data1.getAnglex());
data.setAccx(data1.getAccx());
dataForwarder.send(device.device, data);
}
}
}
device.updateTime = LocalDateTime.now();
ThreadManager.getFixedThreadPool().submit(() -> {
//保存状态信息判断是否有低电压等告警清除离线告警
dataMapper.insert(message.getInclineData());
//推送
dataForwarder.send(device, message);
});
return null;
}
@ -70,9 +100,9 @@ public class D350SurfaceInclineMessageExecutor implements Executor<D350SurfaceIn
return D350SurfaceInclineMessage.class;
}
GnssDeviceJoin getDevice(String deviceId){
GnssDeviceJoin device = deviceInfoMap.get(deviceId);
if(device == null){
DeviceInfo getDevice(String deviceId){
DeviceInfo deviceInfo = deviceInfoMap.get(deviceId);
if(deviceInfo == null){
MPJQueryWrapper jquery = new MPJQueryWrapper<GnssDevice>()
.selectAll(GnssDevice.class)
.select("d.latitude as latitude")
@ -80,19 +110,23 @@ public class D350SurfaceInclineMessageExecutor implements Executor<D350SurfaceIn
.leftJoin("gnssstatus d on t.deviceid = d.deviceid")
.eq("t.deviceid",deviceId)
.last("limit 1");
device = deviceMapper.selectJoinOne(GnssDeviceJoin.class, jquery);
if(device != null) deviceInfoMap.put(deviceId,device);
GnssDeviceJoin device = deviceMapper.selectJoinOne(GnssDeviceJoin.class, jquery);
if(device != null) {
deviceInfo = new DeviceInfo();
deviceInfo.device = device;
deviceInfoMap.put(deviceId,deviceInfo);
}
}
return device;
return deviceInfo;
}
@Scheduled(cron = "0 0/30 * * * ?") // 每30分钟执行一次
void updateDeviceAliveTime(){
LocalDateTime now = LocalDateTime.now();
for(Map.Entry<String,LocalDateTime> entry:deviceAliveMap.entrySet()){
if(entry.getValue().isBefore(now.minusHours(2))){
deviceAliveMap.remove(entry);
deviceInfoMap.remove(entry.getKey());
for(Map.Entry<String,DeviceInfo> entry:deviceInfoMap.entrySet()){
LocalDateTime time = entry.getValue().updateTime;
if(time!=null && time.isBefore(now.minusHours(2))){
deviceInfoMap.remove(entry);
}
}
}

View File

@ -4,10 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.imdroid.common.util.GsonUtil;
import com.imdroid.common.util.NumberUtils;
import com.imdroid.inclide_server.entity.InclineData;
import com.imdroid.inclide_server.message.D350SurfaceInclineMessage;
import com.imdroid.secapi.dto.GnssDeviceJoin;
import com.imdroid.secapi.dto.GnssGroupFwd;
import com.imdroid.secapi.dto.GnssGroupFwdMapper;
import com.imdroid.secapi.dto.SurfaceInclineData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@ -95,7 +96,7 @@ public class InclineDataForwarder{
tcpClientMap.put(name, tcpClient);
}
public void send(GnssDeviceJoin device, D350SurfaceInclineMessage message){
public void send(GnssDeviceJoin device, SurfaceInclineData surfaceInclineData){
//logger.debug("forward {}: {}",device.getDeviceid(), message.getInclineData().toString());
InclineData inclineData = new InclineData();
@ -105,19 +106,18 @@ public class InclineDataForwarder{
List<InclineData.Data> dataList = new ArrayList<>(1);
inclineData.setData(dataList);
InclineData.Data data = new InclineData.Data();
dataList.add(data);
data.setDataTime(message.getCreateTime().format(formatter));
data.setDataTime(LocalDateTime.now().format(formatter));
data.setDevNum(device.getDeviceid());
data.setDevtype("ZdQx");
// 角度
float x = message.getInclineData().getAnglex();
float y = message.getInclineData().getAngley();
float z = message.getInclineData().getAnglez();
float Zx = message.getInclineData().getMaxaccx()-message.getInclineData().getMinaccx();
float Zy = message.getInclineData().getMaxaccx()-message.getInclineData().getMinaccy();
float Zz = message.getInclineData().getMaxaccx()-message.getInclineData().getMinaccz();
float x = surfaceInclineData.getAnglex();
float y = surfaceInclineData.getAngley();
float z = surfaceInclineData.getAnglez();
float Zx = surfaceInclineData.getMaxaccx()-surfaceInclineData.getMinaccx();
float Zy = surfaceInclineData.getMaxaccx()-surfaceInclineData.getMinaccy();
float Zz = surfaceInclineData.getMaxaccx()-surfaceInclineData.getMinaccz();
data.setX(NumberUtils.scale((double) x, 3));
data.setY(NumberUtils.scale((double) y, 3));