From 80b2c91a39a098ba0e1c78dabd7d5d584b240c5d Mon Sep 17 00:00:00 2001 From: Gautier Hattenberger Date: Thu, 11 Feb 2021 15:45:13 +0100 Subject: [PATCH] [ocaml] fix SRTM download path (#2659) SRTM data are no more available for direct download, using ESA data instead. The new SRTM data are SRTM3 GL1 (1 arcsec instead of 3 previously), so the code is now adapted to support both formats, the most accurate available will be used first. The only way to force the update of new files is to remove the previous ones from data/srtm folder. close #2642 --- data/srtm/srtm.data.bz2 | Bin 19122 -> 0 bytes sw/lib/ocaml/mapCanvas.ml | 4 +-- sw/lib/ocaml/srtm.ml | 57 +++++++++++++++++++------------------- sw/lib/ocaml/srtm.mli | 2 -- 4 files changed, 30 insertions(+), 33 deletions(-) delete mode 100644 data/srtm/srtm.data.bz2 diff --git a/data/srtm/srtm.data.bz2 b/data/srtm/srtm.data.bz2 deleted file mode 100644 index c32f8c72fa23f9f11c8f40fdd62cfd897f4d8770..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19122 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 diff --git a/sw/lib/ocaml/mapCanvas.ml b/sw/lib/ocaml/mapCanvas.ml index 604e4534a5..c14b697b68 100644 --- a/sw/lib/ocaml/mapCanvas.ml +++ b/sw/lib/ocaml/mapCanvas.ml @@ -794,8 +794,8 @@ class widget = fun ?(height=800) ?(srtm=false) ?width ?projection ?georef () -> match GToolbox.question_box "SRTM" ["Download"; "Cancel"] msg with | 1 -> begin try - let tile_zip = x^".hgt.zip" in - let url = Srtm.srtm_url // (Srtm.area_of_tile x) // tile_zip in + let tile_zip = x^".SRTMGL1.hgt.zip" in + let url = Srtm.srtm_url // tile_zip in let dest = Env.paparazzi_home // "data" // "srtm" // tile_zip in let tmp_dest = Env.paparazzi_home // "var" // tile_zip in ignore(Http.file_of_url ~dest:tmp_dest url); diff --git a/sw/lib/ocaml/srtm.ml b/sw/lib/ocaml/srtm.ml index 3bea42e88f..3a53428bea 100644 --- a/sw/lib/ocaml/srtm.ml +++ b/sw/lib/ocaml/srtm.ml @@ -30,12 +30,14 @@ let (//) = Filename.concat type error = string exception Tile_not_found of string -let srtm_url = "http://dds.cr.usgs.gov/srtm/version2_1/SRTM3" +let srtm_url = "http://step.esa.int/auxdata/dem/SRTMGL1" let error = fun string -> - Printf.sprintf "download %s/???/%s.hgt.zip in data/srtm/" srtm_url string + Printf.sprintf "download %s/%s.SRTMGL1.hgt.zip in data/srtm/" srtm_url string -let tile_size = 1201 +let tile_coef = 1200. (* size for GL3, multiply by 3 for GL1 *) +let tile_size_gl3 = 1201 +let tile_size_gl1 = 3601 (* Previously opened tiles *) let htiles = Hashtbl.create 13 @@ -54,19 +56,31 @@ let find = fun tile -> let (bottom, left) = tile in let tile_name = Printf.sprintf "%c%.0f%c%03.0f" (if bottom >= 0. then 'N' else 'S') (abs_float bottom) (if left >= 0. then 'E' else 'W') (abs_float left) in - try - let f = open_compressed (tile_name ^".hgt") in - let n = tile_size*tile_size*2 in - let buf = Bytes.create n in - really_input f buf 0 n; - Hashtbl.add htiles tile buf; - buf - with Not_found -> - raise (Tile_not_found tile_name) + let f, n, factor = + try + let f = open_compressed (tile_name ^".SRTMGL1.hgt") in + let n = tile_size_gl1*tile_size_gl1*2 in + f, n, 3. + with Not_found -> begin + try + let f = open_compressed (tile_name ^".hgt") in + let n = tile_size_gl3*tile_size_gl3*2 in + f, n, 1. + with Not_found -> + raise (Tile_not_found tile_name) + end + in + let buf = Bytes.create n in + really_input f buf 0 n; + Hashtbl.add htiles tile (buf, factor); + buf, factor let get = fun tile y x -> - let tile = find tile in + let tile, factor = find tile in + let x = truncate (x*.factor*.tile_coef+.0.5) + and y = truncate (y*.factor*.tile_coef+.0.5) + and tile_size = truncate (factor*.tile_coef+.1.) in let pos = (2*((tile_size-y)*tile_size+x)) in (((Char.code (Bytes.get tile pos) land 127) lsl 8) lor Char.code (Bytes.get tile (pos+1))) - ((Char.code (Bytes.get tile pos) lsr 7) * 256 * 128) @@ -75,7 +89,7 @@ let of_wgs84 = fun geo -> and long = (Rad>>Deg)geo.posn_long in let bottom = floor lat and left = floor long in let tile = (bottom, left) in - get tile (truncate ((lat-.bottom)*.1200.+.0.5)) (truncate ((long-.left)*.1200.+.0.5)) + get tile (lat-.bottom) (long-.left) let of_utm = fun utm -> of_wgs84 (Latlong.of_utm WGS84 utm) @@ -83,21 +97,6 @@ let of_utm = fun utm -> let available = fun geo -> try ignore(of_wgs84 geo); true with _ -> false -let area_of_tile = fun tile -> - let area = open_compressed "srtm.data.bz2" in - let rec _area_of_tile = fun () -> - try - let ib = Scanf.Scanning.from_channel area in - Scanf.bscanf ib "%s %s\n" (fun t a -> - if t = tile then a - else _area_of_tile ()) - with - | End_of_file -> raise (Tile_not_found tile) - | _ -> _area_of_tile () - in - _area_of_tile () - - (* field size in bytes *) let field_size = 2 (* srtm file line size in bytes *) diff --git a/sw/lib/ocaml/srtm.mli b/sw/lib/ocaml/srtm.mli index 8c0a9becc7..1c1dc586f7 100644 --- a/sw/lib/ocaml/srtm.mli +++ b/sw/lib/ocaml/srtm.mli @@ -42,7 +42,5 @@ val of_utm : Latlong.utm -> int val of_wgs84 : Latlong.geographic -> int (** [of_wgs84 wgs84_pos] Returns the altitude of the given geographic position *) -val area_of_tile : string -> string - val horizon_slope : Latlong.geographic -> int -> float -> float -> float -> float (** [horizon_slope geo alt route half_aperture horizon] *)