forked from MTSR/mapserver
perf tests
This commit is contained in:
parent
bf841f6ba0
commit
064c5f11ff
@ -16,6 +16,7 @@ func GetTileCoordsFromMapBlock(mbc MapBlockCoords, layers []layer.Layer) *TileCo
|
|||||||
for _, l := range layers {
|
for _, l := range layers {
|
||||||
if (mbc.Y*16) >= l.From && (mbc.Y*16) <= l.To {
|
if (mbc.Y*16) >= l.From && (mbc.Y*16) <= l.To {
|
||||||
layerid = &l.Id
|
layerid = &l.Id
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,15 @@ func NewTileCoords(x, y, zoom int, layerId int) *TileCoords {
|
|||||||
return &TileCoords{X: x, Y: y, Zoom: zoom, LayerId: layerId}
|
return &TileCoords{X: x, Y: y, Zoom: zoom, LayerId: layerId}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (tc *TileCoords) ZoomOut(n int) *TileCoords {
|
||||||
|
var nc *TileCoords = tc
|
||||||
|
for i := 1; i<n; i++ {
|
||||||
|
nc = nc.GetZoomedOutTile()
|
||||||
|
}
|
||||||
|
|
||||||
|
return nc
|
||||||
|
}
|
||||||
|
|
||||||
func (tc *TileCoords) GetZoomedOutTile() *TileCoords {
|
func (tc *TileCoords) GetZoomedOutTile() *TileCoords {
|
||||||
return &TileCoords{
|
return &TileCoords{
|
||||||
X: int(math.Floor(float64(tc.X) / 2.0)),
|
X: int(math.Floor(float64(tc.X) / 2.0)),
|
||||||
|
@ -4,10 +4,15 @@ import (
|
|||||||
"mapserver/app"
|
"mapserver/app"
|
||||||
"mapserver/coords"
|
"mapserver/coords"
|
||||||
"time"
|
"time"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func getTileKey(tc *coords.TileCoords) string {
|
||||||
|
return strconv.Itoa(tc.X) + "/" + strconv.Itoa(tc.Y) + "/" + strconv.Itoa(tc.Zoom)
|
||||||
|
}
|
||||||
|
|
||||||
func Job(ctx *app.App) {
|
func Job(ctx *app.App) {
|
||||||
|
|
||||||
fields := logrus.Fields{}
|
fields := logrus.Fields{}
|
||||||
@ -59,17 +64,23 @@ func Job(ctx *app.App) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Render zoom 11-1
|
tileRenderedMap := make(map[string]bool)
|
||||||
for _, mb := range mblist {
|
|
||||||
//13
|
|
||||||
tc := coords.GetTileCoordsFromMapBlock(mb.Pos, ctx.Config.Layers)
|
|
||||||
|
|
||||||
//12
|
for i := 11; i<=1; i-- {
|
||||||
tc = tc.GetZoomedOutTile()
|
for _, mb := range mblist {
|
||||||
|
//13
|
||||||
|
tc := coords.GetTileCoordsFromMapBlock(mb.Pos, ctx.Config.Layers)
|
||||||
|
|
||||||
for tc.Zoom > 1 {
|
|
||||||
//11-1
|
//11-1
|
||||||
tc = tc.GetZoomedOutTile()
|
tc = tc.ZoomOut(13 - i)
|
||||||
|
|
||||||
|
key := getTileKey(tc)
|
||||||
|
|
||||||
|
if tileRenderedMap[key] {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
tileRenderedMap[key] = true
|
||||||
|
|
||||||
fields = logrus.Fields{
|
fields = logrus.Fields{
|
||||||
"X": tc.X,
|
"X": tc.X,
|
||||||
|
@ -235,6 +235,7 @@ func (tr *TileRenderer) RenderImage(tc *coords.TileCoords, recursionDepth int) (
|
|||||||
"Y": tc.Y,
|
"Y": tc.Y,
|
||||||
"Zoom": tc.Zoom,
|
"Zoom": tc.Zoom,
|
||||||
"LayerId": tc.LayerId,
|
"LayerId": tc.LayerId,
|
||||||
|
"size": len(tile.Data),
|
||||||
"quadrender": quadrender,
|
"quadrender": quadrender,
|
||||||
"quadresize": quadresize,
|
"quadresize": quadresize,
|
||||||
"encode": encode,
|
"encode": encode,
|
||||||
|
Loading…
Reference in New Issue
Block a user