Commit e57dd828 by yangyang

时空相关提交(湖南)

parent c3a8d0d6
package com.founder.commonutils.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
......@@ -14,6 +17,7 @@ import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
......@@ -211,4 +215,51 @@ public class HttpClient {
}
return jsonResult;
}
/**
* 将参数拼接为?key1=a&key2=b形式提交
* @param url
* @param headers
* @param jsonParam
* @return
*/
public static String doPostUrlEncodedFormEntity(String url, Map<String, String> headers, String jsonParam){
String resultString = "";
HttpPost httpPost = new HttpPost(url);
// 设置请求和传输超时时间
httpPost.setConfig(requestConfig);
try{
//给httpPost请求设置header
if(null!=headers&&headers.size()>0){
for(String key:headers.keySet()){
httpPost.addHeader(key,headers.get(key));
}
}
// 设置参数解决中文乱码
if (null != jsonParam){
List<NameValuePair> paramList=new ArrayList<>();
Map<String, String> paramMap=(Map<String, String>) JSON.parse(jsonParam);
paramMap.forEach((key,value) -> paramList.add(new BasicNameValuePair(key,value)));
//模拟表单
UrlEncodedFormEntity entity=new UrlEncodedFormEntity(paramList,"utf-8");
entity.setContentEncoding("UTF-8");
httpPost.setEntity(entity);
}
// 设置请求和传输超时时间
httpPost.setConfig(requestConfig);
//创建客户端连接请求
CloseableHttpClient httpClient = HttpClients.createDefault();
// 发送请求
CloseableHttpResponse result = httpClient.execute(httpPost);
System.out.println("StatusCode===="+result.getStatusLine().getStatusCode());
if (result.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
// 读取服务器返回的json数据(然后解析)
resultString = EntityUtils.toString(result.getEntity(), "utf-8");
}
}catch (Exception e){
e.printStackTrace();
}finally{
httpPost.releaseConnection();
}
return resultString;
}
}
......@@ -15,6 +15,10 @@ public class Coordinate {
private double x;
@ApiModelProperty(value = "y轴")
private double y;
@ApiModelProperty(value = "开始时间")
private String kssjtime;
@ApiModelProperty(value = "时间")
private String time;
@ApiModelProperty(value = "结束时间")
private String jssjtime;
}
package com.founder.commonutils.util.map;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import java.util.*;
......@@ -37,6 +38,9 @@ public class LCSS {
//轨迹相似度
public Map lcs(List<Coordinate> l1, List<Coordinate> l2, int radius,int minutes) {
long timeItervalMinutes = minutes * 60 * 1000;
// 弱轨迹转换
l1 = getRgjSjd(l1, timeItervalMinutes);
l2 = getRgjSjd(l2, timeItervalMinutes);
Map map = new HashMap();
Set<Coordinate> loneMz = new HashSet<>();
Set<Coordinate> ltwoMz = new HashSet<>();
......@@ -50,48 +54,31 @@ public class LCSS {
//内层遍历第二条轨迹
for (int j = 0; j < len2; j++) {
// 时间范围比较 俩个点之间的时差
if(StringUtils.isBlank(l1.get(i).getTime())||StringUtils.isBlank(l2.get(i).getTime())){
break;
if(StringUtils.isNotBlank(l1.get(i).getTime())&&StringUtils.isNotBlank(l2.get(j).getTime())){
long timeIterval = Long.parseLong(l1.get(i).getTime()) - Long.parseLong(l2.get(j).getTime());
//第一条轨迹的第i个点和第二条轨迹的第j个点是否在radius范围内 && 俩个点之间的时差小于等于minutes && 俩个点之间的时差大于等于-minutes
if ( isNearby(l1.get(i), l2.get(j),radius) && timeIterval<=timeItervalMinutes && timeIterval>=-timeItervalMinutes) {
loneMz.add(l1.get(i));
ltwoMz.add(l2.get(j));
c[i + 1][j + 1] = c[i][j] + 1;
flag[i + 1][j + 1] = 1;//1='ok' //1表示箭头为 左上
//for循环知道行数列数的情况
System.out.print("1++++"+flag[i + 1][j + 1] + " ");
} else if (c[i + 1][j] > c[i][j + 1]) {
c[i + 1][j + 1] = c[i + 1][j];
flag[i + 1][j + 1] = 2;//2='left' //2表示箭头向 上
//for循环知道行数列数的情况
System.out.print("2++++"+flag[i + 1][j + 1] + " ");
} else {
c[i + 1][j + 1] = c[i][j + 1];
flag[i + 1][j + 1] = 3;//3='up' //3表示箭头向 左
//for循环知道行数列数的情况
System.out.print("3++++"+flag[i + 1][j + 1] + " ");
}
}
long timeIterval = Long.parseLong(l1.get(i).getTime()) - Long.parseLong(l2.get(j).getTime());
//第一条轨迹的第i个点和第二条轨迹的第j个点是否在radius范围内 && 俩个点之间的时差小于等于minutes && 俩个点之间的时差大于等于-minutes
if ( isNearby(l1.get(i), l2.get(j),radius) && timeIterval<=timeItervalMinutes && timeIterval>=-timeItervalMinutes) {
loneMz.add(l1.get(i));
ltwoMz.add(l2.get(j));
c[i + 1][j + 1] = c[i][j] + 1;
flag[i + 1][j + 1] = 1;//1='ok' //1表示箭头为 左上
//for循环知道行数列数的情况
System.out.print("1++++"+flag[i + 1][j + 1] + " ");
} else if (c[i + 1][j] > c[i][j + 1]) {
c[i + 1][j + 1] = c[i + 1][j];
flag[i + 1][j + 1] = 2;//2='left' //2表示箭头向 上
//for循环知道行数列数的情况
System.out.print("2++++"+flag[i + 1][j + 1] + " ");
} else {
c[i + 1][j + 1] = c[i][j + 1];
flag[i + 1][j + 1] = 3;//3='up' //3表示箭头向 左
//for循环知道行数列数的情况
System.out.print("3++++"+flag[i + 1][j + 1] + " ");
}
}
}
System.out.println("打印flag:");
for (int[] ints : flag) {
for (int anInt : ints) {
System.out.print(anInt + "\t" );
}
System.out.println();
}
System.out.println("打印c:");
for (int[] ints : c) {
for (int anInt : ints) {
System.out.print(anInt + "\t" );
}
System.out.println();
}
printLcs(flag, l1, len1, len2);
System.out.println(lcs);
xsd=(lcs.size() * 1.0 / Math.min(len1, len2));
map.put("listOneMz",loneMz);
map.put("listTwoMz",ltwoMz);
......@@ -114,4 +101,45 @@ public class LCSS {
s = Math.round(s * 1000);
return s;
}
// 弱轨迹转换
public List<Coordinate> getRgjSjd(List<Coordinate> list,long timeItervalMillns){
List<Coordinate> resultList = new ArrayList<>();
list.stream().forEach(a->{
a.setKssjtime(a.getTime());
//如果是弱轨迹则传入时间段StartTime EndTime
if (a.getX() != 0D && a.getY() != 0D && StringUtils.isNotBlank(a.getKssjtime()) && StringUtils.isNotBlank(a.getJssjtime())) {
List<Long> timeList = getTimeSplitList(Long.valueOf(a.getKssjtime()), Long.valueOf(a.getJssjtime()), timeItervalMillns);
if (timeList != null && timeList.size() != 0) {
Iterator<Long> it = timeList.iterator();
while (it.hasNext()) {
Coordinate b = new Coordinate();
BeanUtils.copyProperties(a,b);
b.setTime(String.valueOf(it.next()));
resultList.add(b);
}
}
}
});
if(resultList.size()>0){
return resultList;
}
return list;
}
/**
* 将开始时间和结束时间的时间段转为时间点*/
public List<Long> getTimeSplitList(long startTime, long endTime, long timeItervalMillns) {
List resultList = new ArrayList();
resultList.add(startTime);
do {
startTime += timeItervalMillns;
if (startTime < endTime) {
resultList.add(startTime);
} else if (startTime >= endTime){
resultList.add(endTime);
break;
}
}
while (startTime < endTime);
return resultList;
}
}
\ No newline at end of file
......@@ -8,6 +8,7 @@ import com.founder.commonutils.model.newPublicEntity.MapRestResult;
import com.founder.commonutils.model.vo.param.SkTrailParam;
import com.founder.commonutils.util.Base64DecodeMultipartFile;
import com.founder.commonutils.util.Base64Util;
import com.founder.commonutils.util.HttpClient;
import com.founder.servicebase.logs.OperLog;
import com.founder.servicebase.logs.OperationType;
import io.swagger.annotations.Api;
......@@ -173,31 +174,23 @@ public class SkRxController extends ApiController {
}
public static String sendTask(String taskId,String ip) {
String url = "http://68.174.69.109:9101/feiShi/getFeiShiResult?taskId=" + taskId + "&userId=150147" + "&userIdNumber=441900198804262777" + "&userName=陈建昌" + "&userIp=" + ip ;
System.out.println("===================" + url);
String result = "";
String urlName = url;
String feiShiResult="";
try {
URL realURL = new URL(urlName);
URLConnection conn = realURL.openConnection();
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36");
conn.connect();
Map<String, List<String>> map = conn.getHeaderFields();
for (String s : map.keySet()) {
System.out.println(s + "-->" + map.get(s));
}
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
String line;
while ((line = in.readLine()) != null) {
result += "\n" + line;
}
} catch (IOException e) {
String url = "http://68.174.69.109:9101/feiShi/getFeiShiResult";
Map<String, String> param = new HashMap<>();
param.put("taskId", taskId);
param.put("userId", "281851");
param.put("userIdNumber", "441900198804262777");
param.put("userName", "陈建昌");
param.put("userIp", ip);
System.out.println("开始调用人像比对结果接口=============="+JSONObject.toJSONString(param));
feiShiResult = HttpClient.doPostUrlEncodedFormEntity(url, null, JSONObject.toJSONString(param));
System.out.println("人像比对结果接口返回信息===================" + feiShiResult);
} catch (Exception e) {
e.printStackTrace();
System.out.println("调用人像比对结果接口异常=============="+e.getMessage());
}
System.out.println("result===================" + url);
return result;
return feiShiResult;
}
public String upload(String url, File file, String threshold, String topNumber,String ip) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment