Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
map-parent
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
常超
map-parent
Commits
e57dd828
Commit
e57dd828
authored
Nov 17, 2023
by
yangyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
时空相关提交(湖南)
parent
c3a8d0d6
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
137 additions
and
60 deletions
+137
-60
common/common_utils/src/main/java/com/founder/commonutils/util/HttpClient.java
+51
-0
common/common_utils/src/main/java/com/founder/commonutils/util/map/Coordinate.java
+4
-0
common/common_utils/src/main/java/com/founder/commonutils/util/map/LCSS.java
+67
-38
service/publicapi/src/main/java/com/founder/publicapi/controller/SkDataOperation/SkRxController.java
+15
-22
No files found.
common/common_utils/src/main/java/com/founder/commonutils/util/HttpClient.java
View file @
e57dd828
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
;
}
}
common/common_utils/src/main/java/com/founder/commonutils/util/map/Coordinate.java
View file @
e57dd828
...
...
@@ -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
;
}
common/common_utils/src/main/java/com/founder/commonutils/util/map/LCSS.java
View file @
e57dd828
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
()
!=
0
D
&&
a
.
getY
()
!=
0
D
&&
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
service/publicapi/src/main/java/com/founder/publicapi/controller/SkDataOperation/SkRxController.java
View file @
e57dd828
...
...
@@ -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
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment