rpc 参数求解

This commit is contained in:
nuknal
2024-08-20 18:17:22 +08:00
parent ea23839bf2
commit 239d2787e3
4 changed files with 493 additions and 11 deletions

View File

@@ -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
}