Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xplot_server
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
digit_plot
xplot_server
Commits
7bca95c7
Commit
7bca95c7
authored
Nov 12, 2024
by
dliangx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
76c8e915
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
34 additions
and
12 deletions
+34
-12
geo/area.go
+23
-8
handler/http_handler.go
+11
-4
No files found.
geo/area.go
View file @
7bca95c7
...
...
@@ -438,7 +438,7 @@ func GetRelatedAdmArea(obj model.GeoJson) ([]model.GeoJson, error) {
return
results
,
err
}
func
CalcAreasCenter
(
ids
[]
string
)
(
float64
,
float64
,
error
)
{
func
CalcAreasCenter
(
ids
[]
string
,
opt
int
)
(
float64
,
float64
,
error
)
{
db
,
err
:=
connectDB
()
if
err
!=
nil
{
return
0
,
0
,
fmt
.
Errorf
(
"database connection failed: %v"
,
err
)
...
...
@@ -449,14 +449,29 @@ func CalcAreasCenter(ids []string) (float64, float64, error) {
idList
:=
strings
.
Join
(
ids
,
","
)
var
wktPoint
string
err
=
db
.
QueryRow
(
`
SELECT
ST_AsText(ST_Centroid(ST_Collect(geom))) AS overall_centroid
FROM
geojson_data
WHERE id in (`
+
idList
+
`)
`
)
.
Scan
(
&
wktPoint
)
var
query
string
if
opt
==
1
{
query
=
`
SELECT ST_AsText(ST_Centroid(ST_Collect(geometry))) AS overall_centroid
FROM opt_routes WHERE id in (`
+
idList
+
`)`
}
else
if
opt
==
2
{
query
=
`
SELECT ST_AsText(ST_Centroid(ST_Collect(geometry))) AS overall_centroid
FROM opt_fly_routes WHERE id in (`
+
idList
+
`)`
}
else
if
opt
==
3
{
query
=
`
SELECT ST_AsText(ST_Centroid(ST_Collect(geometry))) AS overall_centroid
FROM opt_areas WHERE id in (`
+
idList
+
`)`
}
else
if
opt
==
4
{
query
=
`
SELECT ST_AsText(ST_Centroid(ST_Collect(geom))) AS overall_centroid
FROM geojson_data WHERE id in (`
+
idList
+
`)`
}
else
{
return
0
,
0
,
errors
.
New
(
"opt value is not allow! "
)
}
err
=
db
.
QueryRow
(
query
)
.
Scan
(
&
wktPoint
)
if
err
!=
nil
{
if
err
==
sql
.
ErrNoRows
{
return
0
,
0
,
fmt
.
Errorf
(
"no areas found"
)
...
...
handler/http_handler.go
View file @
7bca95c7
...
...
@@ -183,19 +183,26 @@ func CalcAreasCenter(ctx context.Context, c *app.RequestContext) {
// 获取 ids 参数
idsStr
:=
c
.
Query
(
"ids"
)
if
idsStr
==
""
{
c
.
JSON
(
consts
.
StatusBadRequest
,
utils
.
H
{
"message"
:
"ids parameter required"
})
c
.
JSON
(
consts
.
StatusBadRequest
,
utils
.
H
{
"code"
:
10001
,
"message"
:
"ids parameter required"
})
return
}
// 获取 opt 参数
opt
,
err
:=
strconv
.
Atoi
(
c
.
Query
(
"opt"
))
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusBadRequest
,
utils
.
H
{
"code"
:
10003
,
"message"
:
"opt parameter required"
})
return
}
// 分割 ids 字符串为数组
ids
:=
strings
.
Split
(
idsStr
,
","
)
if
len
(
ids
)
==
0
{
c
.
JSON
(
consts
.
StatusBadRequest
,
utils
.
H
{
"message"
:
"invalid ids format"
})
c
.
JSON
(
consts
.
StatusBadRequest
,
utils
.
H
{
"
code"
:
10001
,
"
message"
:
"invalid ids format"
})
return
}
// 调用 geo.CalcAreasCenter 计算中心点
lat
,
lon
,
err
:=
geo
.
CalcAreasCenter
(
ids
)
// 调用 geo.CalcAreasCenter 计算中心点
,传入 opt 参数
lat
,
lon
,
err
:=
geo
.
CalcAreasCenter
(
ids
,
opt
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusOK
,
utils
.
H
{
"code"
:
10012
,
"message"
:
err
.
Error
()})
return
...
...
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