cleanup
This commit is contained in:
parent
7a4691e3e4
commit
d07f3485fc
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -11,7 +11,6 @@ use std::time::SystemTime;
|
|||
use actix_web::{App, HttpServer};
|
||||
use actix_web::web::Data;
|
||||
use crate::grib2::{LookupTable2D};
|
||||
use crate::sources::noaa::mrms_cref;
|
||||
|
||||
#[global_allocator]
|
||||
static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc;
|
||||
|
@ -39,7 +38,7 @@ async fn main() -> std::io::Result<()> {
|
|||
});
|
||||
HttpServer::new(move || {
|
||||
App::new()
|
||||
.service(mrms_cref)
|
||||
.service(sources::noaa::noaa_mrms_merged_composite_reflectivity_qc)
|
||||
.app_data(data.clone())
|
||||
})
|
||||
.bind(("::", 8080))?
|
||||
|
|
|
@ -166,3 +166,27 @@ pub fn render(xtile: f64, ytile: f64, z: i32, tilesize: usize, pal: Palette, map
|
|||
|
||||
buf
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! grib2_handler {
|
||||
(mount $f:ident, at: $path:expr, from: $from:expr, needs_gzip: $needs_gzip:expr, valid_for: $valid_for:expr, lut_with: $lut_key:expr, palette: $pal:expr) => {
|
||||
#[::actix_web::get($path)]
|
||||
async fn $f(path: ::actix_web::web::Path<(i32,u32,u32)>, data: ::actix_web::web::Data<crate::AppState>) -> ::actix_web::HttpResponse {
|
||||
crate::sources::grib2::reload_if_required(
|
||||
$from,
|
||||
$needs_gzip,
|
||||
$valid_for,
|
||||
$lut_key,
|
||||
&data.lut_cache_timestamps,
|
||||
&data.lut_cache
|
||||
).await;
|
||||
if let Some(map) = data.lut_cache.read().await.get(&$lut_key) {
|
||||
::actix_web::HttpResponse::Ok()
|
||||
.insert_header(::actix_web::http::header::ContentType(::mime::IMAGE_PNG))
|
||||
.body(crate::sources::grib2::render(path.1 as f64, path.2 as f64, path.0, 256, $pal, map))
|
||||
} else {
|
||||
::actix_web::HttpResponse::new(::actix_web::http::StatusCode::NOT_FOUND)
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
|
@ -1,2 +1,3 @@
|
|||
pub mod noaa;
|
||||
mod grib2;
|
||||
#[macro_use]
|
||||
pub mod grib2;
|
|
@ -1,40 +1,12 @@
|
|||
use std::collections::BTreeMap;
|
||||
use std::f64::consts::PI;
|
||||
use std::io::{BufWriter, Cursor, Read};
|
||||
use std::time::{SystemTime};
|
||||
use actix_web::{get, HttpResponse, web};
|
||||
use actix_web::http::{header, StatusCode};
|
||||
use actix_web::web::Data;
|
||||
use eccodes::{CodesHandle, FallibleStreamingIterator, ProductKind};
|
||||
use flate2::read::GzDecoder;
|
||||
use ndarray::{Zip};
|
||||
use ordered_float::{FloatCore, OrderedFloat};
|
||||
use png::{BitDepth, ColorType, Encoder};
|
||||
use wxbox_pal::{Color, ColorPalette, create_test_palette};
|
||||
use crate::{AppState, LutKey};
|
||||
use crate::grib2::{closest_key, LookupTable2D};
|
||||
use crate::pixmap::Pixmap;
|
||||
use crate::sources::grib2::{eccodes_remap, load, needs_reload, reload_if_required, render};
|
||||
use wxbox_pal::create_test_palette;
|
||||
use crate::{grib2_handler, LutKey};
|
||||
|
||||
#[get("/noaa_mrms_merged_composite_reflectivity_qc/{z}/{x}/{y}.png")]
|
||||
async fn mrms_cref(path: web::Path<(i32, u32, u32)>, data: Data<AppState>) -> HttpResponse {
|
||||
let pal = create_test_palette();
|
||||
|
||||
reload_if_required(
|
||||
"https://mrms.ncep.noaa.gov/data/2D/MergedReflectivityQCComposite/MRMS_MergedReflectivityQCComposite.latest.grib2.gz",
|
||||
true,
|
||||
120,
|
||||
LutKey::NoaaMrmsMergedCompositeReflectivityQc,
|
||||
&data.lut_cache_timestamps,
|
||||
&data.lut_cache
|
||||
).await;
|
||||
|
||||
if let Some(map) = data.lut_cache.read().await.get(&LutKey::NoaaMrmsMergedCompositeReflectivityQc) {
|
||||
HttpResponse::Ok()
|
||||
.insert_header(header::ContentType(mime::IMAGE_PNG))
|
||||
.body(render(path.1 as f64, path.2 as f64, path.0, 256, pal, map))
|
||||
} else {
|
||||
HttpResponse::new(StatusCode::NOT_FOUND)
|
||||
}
|
||||
grib2_handler! {
|
||||
mount noaa_mrms_merged_composite_reflectivity_qc,
|
||||
at: "/noaa_mrms_merged_composite_reflectivity_qc/{z}/{x}/{y}.png",
|
||||
from: "https://mrms.ncep.noaa.gov/data/2D/MergedReflectivityQCComposite/MRMS_MergedReflectivityQCComposite.latest.grib2.gz",
|
||||
needs_gzip: true,
|
||||
valid_for: 120,
|
||||
lut_with: LutKey::NoaaMrmsMergedCompositeReflectivityQc,
|
||||
palette: create_test_palette()
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite dev",
|
||||
"host": "vite dev --host",
|
||||
"build": "vite build",
|
||||
"preview": "vite preview",
|
||||
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
||||
|
|
Loading…
Reference in New Issue