package com.uav.service.impl;
import com.alibaba.fastjson.JSON;
import com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureDSA;
import com.uav.entity.ScanData;
import com.uav.service.IScanService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;
@Service
public class ScanServiceImpl implements IScanService {
//注入远程请求
@Autowired
RestTemplate restTemplate;
@Value("${nasa.api.url}")
private String baseUrl;
@Override
public List<ScanData> findNasaFireData(Map<String, Object> params) throws NoSuchAlgorithmException {
//获取数据的csv格式
String csvData=getRemoteNasaDataCsv(params);
System.err.println(csvData);
//解析csv格式并封装为ScanData
//从第二行开始进行字符串解析
return covCsvDataToEntity(csvData);
}
private List<ScanData> covCsvDataToEntity(String csvData) throws NoSuchAlgorithmException {
String[] lines = csvData.split("\n");
if (lines.length==1){
return null;
}
List<Map<String,Object>> mapList=covCsvDataToMap(lines);
List<ScanData> scanDataList=new ArrayList<>();
mapList.forEach(map->{
ScanData scanData = JSON.parseObject(JSON.toJSONString(map), ScanData.class);
scanDataList.add(scanData);
});
return scanDataList;
}
private List<Map<String, Object>> covCsvDataToMap(String[] lines) throws NoSuchAlgorithmException {
List<Map<String,Object>> dataList=new ArrayList<>();
String header = lines[0];
String[] keys = header.split(",");
List<String[]> valueList=new ArrayList<>();
for (int i=1;i<lines.length;i++){
String[] values = lines[i].split(",");
valueList.add(values);
}
for (int i=0;i<valueList.size();i++){
Map<String,Object> map=new HashMap<>();
String[] value = valueList.get(i);
for (int j=0;j<keys.length;j++){
map.put(keys[j],value[j]);
}
map.put("id", strToHex(Arrays.toString(value)));
dataList.add(map);
}
return dataList;
}
//请求并获取卫星监测的火点数据
@Override
public String getRemoteNasaDataCsv(Map<String, Object> params) {
String url = getRequestUrl(baseUrl, params);
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class, "");
return response.getBody();
}
//url和参数拼接,如果为空则拼接空字符串
public static String getRequestUrl(String baseUrl,Map<String,Object> params){
return baseUrl+"/"+params.getOrDefault("MAP-KEY","")+"/"
+params.getOrDefault("TYPE","")+"/"+
params.getOrDefault("Area","")+"/"+
params.getOrDefault("DayRange","")+"/"+
params.getOrDefault("Date","");
}
private static String strToHex(String data) throws NoSuchAlgorithmException {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(data.getBytes(StandardCharsets.UTF_8));
StringBuilder hexString = new StringBuilder(2 * hash.length);
for (byte b : hash) {
String hex = Integer.toHexString(0xff & b);
if (hex.length() == 1) {
hexString.append('0');
}
hexString.append(hex);
}
return hexString.toString();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Nasa高分卫星火点监测数据接入源码
共27个文件
xml:9个
java:8个
class:7个
需积分: 0 0 下载量 20 浏览量
2024-05-18
09:48:48
上传
评论
收藏 28KB ZIP 举报
温馨提示
该资源主要是Nasa高分卫星数据请求和解析的源代码,适用于使用其完成卫星火点监测的用户。
资源推荐
资源详情
资源评论
收起资源包目录
NasaFireScanService.zip (27个子文件)
NasaFireScanService
pom.xml 1KB
src
test
java
com
uav
NasaFireScanTest.java 945B
main
resources
application.yml 156B
java
com
uav
NasaFireScanApplication.java 322B
service
impl
ScanServiceImpl.java 4KB
IScanService.java 346B
entity
ScanData.java 3KB
util
ConvertUtils.java 1KB
config
NasaFireScanConfig.java 374B
scheduled
NasaFireScheduled.java 375B
.idea
jarRepositories.xml 861B
codeStyles
codeStyleConfig.xml 149B
uiDesigner.xml 9KB
workspace.xml 3KB
misc.xml 528B
inspectionProfiles
Project_Default.xml 260B
compiler.xml 540B
.gitignore 47B
encodings.xml 261B
target
classes
application.yml 188B
com
uav
service
impl
ScanServiceImpl.class 6KB
IScanService.class 525B
NasaFireScanApplication.class 709B
entity
ScanData.class 5KB
util
ConvertUtils.class 2KB
config
NasaFireScanConfig.class 649B
test-classes
com
uav
NasaFireScanTest.class 2KB
generated-test-sources
test-annotations
generated-sources
annotations
共 27 条
- 1
资源评论
Codeblocks
- 粉丝: 352
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功