Skip to content

Commit

Permalink
refactor: fmt code
Browse files Browse the repository at this point in the history
  • Loading branch information
lvisei committed Dec 8, 2020
1 parent 0456453 commit 8a312e8
Show file tree
Hide file tree
Showing 6 changed files with 234 additions and 144 deletions.
71 changes: 25 additions & 46 deletions examples/csv/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@ func main() {
//memProfile.Close()
}()

//var wg sync.WaitGroup
//wg.Add(1)
data, err := readCsvFile("examples/csv/data/2045.csv")
if err != nil {
log.Fatal(err)
Expand All @@ -50,51 +48,27 @@ func main() {

ordinaryKriging := ordinary.NewOrdinary(data["values"], data["lons"], data["lats"])
_ = ordinaryKriging.Train(ordinary.Spherical, 0, 100)
//writeFile("variogram.json", variogram)

gridPlot(ordinaryKriging, polygon)

//var wg sync.WaitGroup
//wg.Add(1)
//go func() {
// defer wg.Done()
// generateGridData(ordinaryKriging, polygon)
// gridPlot(ordinaryKriging, polygon)
//}()
generateGridData(ordinaryKriging, polygon)

//go func() {
// defer wg.Done()
// generatePng(ordinaryKriging)
// contourRectanglePng(ordinaryKriging)
//}()

//wg.Wait()
}

func generateGridData(ordinaryKriging *ordinary.Variogram, polygon ordinary.PolygonCoordinates) {
defer timeCost()("插值生成成功图片耗时")
func gridPlot(ordinaryKriging *ordinary.Variogram, polygon ordinary.PolygonCoordinates) {
defer timeCost()("插值生成网格图片耗时")
gridMatrices := ordinaryKriging.Grid(polygon, 0.01)
//colors := []color.RGBA{
// color.RGBA{R: 52, G: 146, B: 199, A: 255},
// color.RGBA{R: 104, G: 166, B: 179, A: 255},
// color.RGBA{R: 149, G: 189, B: 158, A: 255},
// color.RGBA{R: 191, G: 212, B: 138, A: 255},
// color.RGBA{R: 231, G: 237, B: 114, A: 255},
// color.RGBA{R: 250, G: 228, B: 90, A: 255},
// color.RGBA{R: 248, G: 179, B: 68, A: 255},
// color.RGBA{R: 247, G: 133, B: 50, A: 255},
// color.RGBA{R: 242, G: 86, B: 34, A: 255},
// color.RGBA{R: 232, G: 21, B: 19, A: 255},
//}

colors := []ordinary.GridLevelColor{
ordinary.GridLevelColor{Color: ordinary.RGBA{40, 146, 199, 255}, Value: [2]float64{-30, -15}},
ordinary.GridLevelColor{Color: ordinary.RGBA{96, 163, 181, 255}, Value: [2]float64{-15, -10}},
ordinary.GridLevelColor{Color: ordinary.RGBA{140, 184, 164, 255}, Value: [2]float64{-10, -5}},
ordinary.GridLevelColor{Color: ordinary.RGBA{177, 204, 145, 255}, Value: [2]float64{-5, 0}},
ordinary.GridLevelColor{Color: ordinary.RGBA{215, 227, 125, 255}, Value: [2]float64{0, 5}},
ordinary.GridLevelColor{Color: ordinary.RGBA{250, 250, 100, 255}, Value: [2]float64{5, 10}},
ordinary.GridLevelColor{Color: ordinary.RGBA{252, 207, 81, 255}, Value: [2]float64{10, 15}},
ordinary.GridLevelColor{Color: ordinary.RGBA{252, 164, 63, 255}, Value: [2]float64{15, 20}},
ordinary.GridLevelColor{Color: ordinary.RGBA{242, 77, 31, 255}, Value: [2]float64{25, 30}},
ordinary.GridLevelColor{Color: ordinary.RGBA{232, 16, 20, 255}, Value: [2]float64{30, 40}},
}
ctx := ordinaryKriging.Plot(gridMatrices, 500, 500, gridMatrices.Xlim, gridMatrices.Ylim, colors)
ctx := ordinaryKriging.Plot(gridMatrices, 500, 500, gridMatrices.Xlim, gridMatrices.Ylim, ordinary.DefaultGridLevelColor)

subTitle := &canvas.TextConfig{
Text: "球面半变异函数模型",
Expand All @@ -109,22 +83,24 @@ func generateGridData(ordinaryKriging *ordinary.Variogram, polygon ordinary.Poly
log.Fatalf("DrawText %v", err)
}

//writeFile("gridMatrices.json", gridMatrices)
buffer, err := ctx.Output()
if err != nil {
log.Fatal(err)
} else {
saveBuffer("grid.png", buffer)
}

//writeFile("gridMatrices.json", gridMatrices)
}

func generatePng(ordinaryKriging *ordinary.Variogram) {
defer timeCost()("生成插值图片耗时")
func contourRectanglePng(ordinaryKriging *ordinary.Variogram) {
defer timeCost()("插值生成矩形图片耗时")
xWidth, yWidth := 800, 800
krigingValue, rangeMaxPM, colorperiod := ordinaryKriging.GeneratePngGrid(xWidth, yWidth)
contourRectangle := ordinaryKriging.Contour(xWidth, yWidth)
pngPath := fmt.Sprintf("%v/%v.png", dirPath, time.Now().Format("2006-01-02 15:04:05"))
img := ordinaryKriging.GeneratePng(krigingValue, rangeMaxPM, colorperiod, xWidth, yWidth)
ctx := ordinaryKriging.PlotRectangleContour(contourRectangle, 500, 500, contourRectangle.Xlim, contourRectangle.Ylim, ordinary.DefaultLegendColor)
img := ordinaryKriging.PlotPng(contourRectangle)

err := os.MkdirAll(filepath.Dir(pngPath), os.ModePerm)
if err != nil {
return
Expand All @@ -135,14 +111,17 @@ func generatePng(ordinaryKriging *ordinary.Variogram) {
}
defer file.Close()
png.Encode(file, img)
}

func generateRectangleGrid() {
//bound := polygon.Bound()
//bbox := [4]float64{bound.Min.Lat(), bound.Min.Lon(), bound.Max.Lat(), bound.Max.Lon()}
//gridDate := ordinaryKriging.RectangleGrid(bbox, 0.01)
//writeFile("gridDate.json", gridDate)
buffer, err := ctx.Output()
if err != nil {
log.Fatal(err)
} else {
saveBuffer("rectangle.png", buffer)
}
}

func ContourWithBBoxPng(bbox [4]float64) {
//contourRectangle := ordinaryKriging.ContourWithBBox(bbox, 0.01)
}

func readCsvFile(filePath string) (map[string][]float64, error) {
Expand Down
19 changes: 10 additions & 9 deletions internal/ordinary/example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package ordinary_test

import (
"fmt"

"github.com/liuvigongzuoshi/go-kriging/internal/ordinary"
)

Expand Down Expand Up @@ -38,29 +39,29 @@ func (t FloatList) max() float64 {
func Example_OrdinaryKriging_Exponential() {
ordinaryKriging := ordinary.NewOrdinary(values, lats, lons)
ordinaryKriging.Train(ordinary.Exponential, 0, 100)
krigingValue, _, _ := ordinaryKriging.GeneratePngGrid(200, 200)
fmt.Printf("%#v", krigingValue[:10])
contourRectangle := ordinaryKriging.Contour(200, 200)
fmt.Printf("%#v", contourRectangle.Contour[:10])
// Output:
// []float64{31.832037963867943, 32.2958798424233, 32.83227510797089, 33.38759955944839, 33.946936215772, 34.50483331478148, 35.05891641620112, 35.60803760024491, 36.15161335849867, 36.68934894716563}
// []float64{31.062802427638875, 31.674435068380763, 32.278056119942775, 32.873804573541605, 33.461820447530116, 34.04224482718795, 34.615219901523936, 35.18088899653787, 35.73939660436959, 36.29088840795853}

}

func Example_OrdinaryKriging_Spherical() {
ordinaryKriging := ordinary.NewOrdinary(values, lats, lons)
ordinaryKriging.Train(ordinary.Spherical, 0, 100)
krigingValue, _, _ := ordinaryKriging.GeneratePngGrid(200, 200)
fmt.Printf("%#v", krigingValue[:10])
contourRectangle := ordinaryKriging.Contour(200, 200)
fmt.Printf("%#v", contourRectangle.Contour[:10])
// Output:
// []float64{31.42123794010535, 31.644499557807247, 31.90817908629488, 32.185341522126315, 32.46845610328156, 32.75473696943352, 33.042940816984725, 33.33243905472105, 33.622885866814954, 33.91408001569965}
// []float64{31.062802427638914, 31.355686136987902, 31.64907050717433, 31.94263698074654, 32.23631166433025, 32.5301127079549, 32.82405871070649, 33.11816872323253, 33.41246224930141, 33.70695924637675}

}

func Example_OrdinaryKriging_Gaussian() {
ordinaryKriging := ordinary.NewOrdinary(values, lats, lons)
ordinaryKriging.Train(ordinary.Gaussian, 0, 100)
krigingValue, _, _ := ordinaryKriging.GeneratePngGrid(200, 200)
fmt.Printf("%#v", krigingValue[:10])
contourRectangle := ordinaryKriging.Contour(200, 200)
fmt.Printf("%#v", contourRectangle.Contour[:10])
// Output:
// []float64{31.3237814741247, 31.456757078398557, 31.593073987805035, 31.73269631764414, 31.875587884114843, 32.02171222008403, 32.17103259071844, 32.32351200912366, 32.47911325177369, 32.63779887397147}
// []float64{31.062802429121923, 31.194182744748254, 31.328955440993354, 31.467084512481577, 31.60853363388739, 31.75326617591121, 31.90124522123483, 32.05243358038846, 32.206793807474796, 32.36428821590181}

}
Loading

0 comments on commit 8a312e8

Please sign in to comment.