Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
traffic-signal-platform
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
signal
traffic-signal-platform
Commits
374dffcb
Commit
374dffcb
authored
Jun 25, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 路口管理,根据多边形框选路口
parent
56b9b8e7
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
148 additions
and
0 deletions
+148
-0
PolygonBO.java
...ize-service/src/main/java/net/wanji/opt/bo/PolygonBO.java
+16
-0
CrossController.java
...c/main/java/net/wanji/opt/controller/CrossController.java
+47
-0
CrossManageService.java
...c/main/java/net/wanji/opt/service/CrossManageService.java
+15
-0
CrossManageServiceImpl.java
...va/net/wanji/opt/service/impl/CrossManageServiceImpl.java
+54
-0
CrossIdAndNameVO.java
...vice/src/main/java/net/wanji/opt/vo/CrossIdAndNameVO.java
+16
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/bo/PolygonBO.java
0 → 100644
View file @
374dffcb
package
net
.
wanji
.
opt
.
bo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author Kent HAN
* @date 2023/6/9 13:52
*/
@Data
@ApiModel
(
value
=
"PolygonBO"
,
description
=
"多边形区域"
)
public
class
PolygonBO
{
@ApiModelProperty
(
value
=
"格式:112.965880,28.182881;112.969825,28.182416;112.972285,28.180470;112.972093,28.179978;112.969762,28.181896;112.965816,28.182285"
)
private
String
wkt
;
}
signal-optimize-service/src/main/java/net/wanji/opt/controller/CrossController.java
0 → 100644
View file @
374dffcb
package
net
.
wanji
.
opt
.
controller
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.opt.bo.PolygonBO
;
import
net.wanji.opt.service.impl.CrossManageServiceImpl
;
import
net.wanji.opt.vo.CrossIdAndNameVO
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.ws.rs.core.MediaType
;
import
java.util.List
;
/**
* 路口管理
*
* @author Kent HAN
*/
@Api
(
value
=
"CrossController"
,
description
=
"路口管理"
)
@RequestMapping
(
"/crossManage"
)
@RestController
public
class
CrossController
{
private
final
CrossManageServiceImpl
crossManageService
;
public
CrossController
(
CrossManageServiceImpl
crossManageService
)
{
this
.
crossManageService
=
crossManageService
;
}
@ApiOperation
(
value
=
"框选路口"
,
notes
=
"框选路口"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/selectCrossesByPolygon"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
JsonViewObject
.
class
),
})
public
JsonViewObject
selectCrossesByPolygon
(
@RequestBody
PolygonBO
polygonBO
)
{
List
<
CrossIdAndNameVO
>
res
=
crossManageService
.
selectCrossesByPolygon
(
polygonBO
);
return
JsonViewObject
.
newInstance
().
success
(
res
);
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossManageService.java
0 → 100644
View file @
374dffcb
package
net
.
wanji
.
opt
.
service
;
import
net.wanji.opt.bo.PolygonBO
;
import
net.wanji.opt.vo.CrossIdAndNameVO
;
import
java.util.List
;
/**
* @desc 路口管理服务
*/
public
interface
CrossManageService
{
List
<
CrossIdAndNameVO
>
selectCrossesByPolygon
(
PolygonBO
polygonBO
);
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossManageServiceImpl.java
0 → 100644
View file @
374dffcb
package
net
.
wanji
.
opt
.
service
.
impl
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.gts.GeometryUtil
;
import
net.wanji.common.utils.tool.CrossUtil
;
import
net.wanji.databus.dao.mapper.BaseCrossInfoMapper
;
import
net.wanji.databus.po.BaseCrossInfoPO
;
import
net.wanji.opt.bo.PolygonBO
;
import
net.wanji.opt.service.CrossManageService
;
import
net.wanji.opt.vo.CrossIdAndNameVO
;
import
org.locationtech.jts.geom.Geometry
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author Kent HAN
* @date 2023/6/25 8:56
*/
@Service
@Slf4j
public
class
CrossManageServiceImpl
implements
CrossManageService
{
private
final
BaseCrossInfoMapper
crossInfoMapper
;
public
CrossManageServiceImpl
(
BaseCrossInfoMapper
crossInfoMapper
)
{
this
.
crossInfoMapper
=
crossInfoMapper
;
}
@Override
public
List
<
CrossIdAndNameVO
>
selectCrossesByPolygon
(
PolygonBO
polygonBO
)
{
List
<
CrossIdAndNameVO
>
res
=
new
ArrayList
<>();
String
wkt
=
polygonBO
.
getWkt
();
List
<
BaseCrossInfoPO
>
crossList
=
crossInfoMapper
.
selectAll
();
for
(
BaseCrossInfoPO
cross
:
crossList
)
{
String
location
=
cross
.
getLocation
();
double
[]
lonLat
=
CrossUtil
.
getLonLat
(
location
);
String
crossLonLat
=
lonLat
[
0
]
+
","
+
lonLat
[
1
];
Geometry
wktGeo
=
GeometryUtil
.
str2Geometry
(
wkt
);
Geometry
crossGeo
=
GeometryUtil
.
str2Geometry
(
crossLonLat
);
// 判断点和多边形是否相交
boolean
isIntersect
=
wktGeo
.
intersects
(
crossGeo
);
if
(
isIntersect
)
{
CrossIdAndNameVO
crossIdAndNameVO
=
new
CrossIdAndNameVO
();
crossIdAndNameVO
.
setCrossId
(
cross
.
getId
());
crossIdAndNameVO
.
setCrossName
(
cross
.
getName
());
res
.
add
(
crossIdAndNameVO
);
}
}
return
res
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/vo/CrossIdAndNameVO.java
0 → 100644
View file @
374dffcb
package
net
.
wanji
.
opt
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@NoArgsConstructor
@Data
@ApiModel
(
value
=
"CrossIdAndNameVO"
,
description
=
"路口ID和路口名称"
)
public
class
CrossIdAndNameVO
{
@ApiModelProperty
(
value
=
"路口ID"
)
private
String
crossId
;
@ApiModelProperty
(
value
=
"路口名称"
)
private
String
crossName
;
}
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