rpc 参数求解
This commit is contained in:
@@ -38,7 +38,7 @@ func (d *Dem1Km) Load() error {
|
||||
|
||||
structure := band.Structure()
|
||||
|
||||
for y := 1; y <= structure.SizeY; y++ {
|
||||
for y := 0; y < structure.SizeY; y++ {
|
||||
scanline := make([]float32, structure.SizeX)
|
||||
err = band.Read(0, y, scanline, structure.SizeX, 1)
|
||||
if err != nil {
|
||||
@@ -68,3 +68,34 @@ func (d *Dem1Km) Elevation(lng, lat float64) float32 {
|
||||
return d.LT[h][w]
|
||||
|
||||
}
|
||||
|
||||
func (d *Dem1Km) MinMaxElevationInRect(lng1, lat1, lng2, lat2 float64) (float64, float64) {
|
||||
minElev := math.MaxFloat32
|
||||
maxElev := -math.MaxFloat32
|
||||
|
||||
lng1 = math.Abs(lng1 + 180.0)
|
||||
lat1 = math.Abs(lat1 - 90.0)
|
||||
w1 := int(lng1 / float64(d.wUnit))
|
||||
h1 := int(lat1 / float64(d.hUnit))
|
||||
|
||||
lng2 = math.Abs(lng2 + 180.0)
|
||||
lat2 = math.Abs(lat2 - 90.0)
|
||||
w2 := int(lng2 / float64(d.wUnit))
|
||||
h2 := int(lat2 / float64(d.hUnit))
|
||||
|
||||
if w1 > d.width-1 || h1 > d.height-1 || w2 > d.width-1 || h2 > d.height-1 {
|
||||
return 0.0, 0.0
|
||||
}
|
||||
|
||||
for w := w1; w <= w2; w++ {
|
||||
for h := h1; h <= h2; h++ {
|
||||
if d.LT[h][w] < float32(minElev) {
|
||||
minElev = float64(d.LT[h][w])
|
||||
}
|
||||
if d.LT[h][w] > float32(maxElev) {
|
||||
maxElev = float64(d.LT[h][w])
|
||||
}
|
||||
}
|
||||
}
|
||||
return minElev, maxElev
|
||||
}
|
||||
|
||||
23
pkg/dem/dem_test.go
Normal file
23
pkg/dem/dem_test.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package dem_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/airbusgeo/godal"
|
||||
"starwiz.cn/sjy01/image-proc/pkg/dem"
|
||||
)
|
||||
|
||||
func init() {
|
||||
godal.RegisterAll()
|
||||
}
|
||||
|
||||
func TestDem(t *testing.T) {
|
||||
t.Log("TestDem")
|
||||
d := dem.NewDem1Km("../../dem/gdlebm.tif")
|
||||
// 珠穆朗玛 经纬度:27°59′17″ N ;86°55′31″ E
|
||||
elv := d.Elevation(86+55.0/60.0+31.0/3600.0, 27+59.0/60.0+17.0/3600.0)
|
||||
t.Log("elv:", elv)
|
||||
if elv < 8000 {
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user