From f5f0aa6873203d8e60887f8883e67f7271efdc43 Mon Sep 17 00:00:00 2001 From: gaelforget Date: Mon, 27 May 2024 10:20:25 -0400 Subject: [PATCH] add SeaLevelAnomaly type --- Project.toml | 2 ++ ext/OceanRobotsMakieExt.jl | 14 ++++++++++---- src/OceanRobots.jl | 8 +++++--- src/files.jl | 25 +++++++++++++++++++++++++ src/types.jl | 8 ++++++++ test/runtests.jl | 11 +++++++++-- 6 files changed, 59 insertions(+), 9 deletions(-) diff --git a/Project.toml b/Project.toml index c2ada4f..ff06181 100644 --- a/Project.toml +++ b/Project.toml @@ -8,6 +8,7 @@ CFTime = "179af706-886a-5703-950a-314cd64e0468" CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +Dataverse = "9c0b9be8-e31e-490f-90fe-77697562404d" Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" Downloads = "f43a241f-c20a-4ad4-852c-f6b1247861c6" FTPClient = "01fcc997-4f28-56b8-8a06-30002c134abb" @@ -32,6 +33,7 @@ CFTime = "0.1" CSV = "0.10" DataFrames = "1" DataStructures = "0.18" +Dataverse = "0.2" Downloads = "1" FTPClient = "1" Glob = "1.3" diff --git a/ext/OceanRobotsMakieExt.jl b/ext/OceanRobotsMakieExt.jl index 05a4ae1..538c7bf 100644 --- a/ext/OceanRobotsMakieExt.jl +++ b/ext/OceanRobotsMakieExt.jl @@ -115,8 +115,14 @@ cmems_all_dates=cmems_date.(1:10632) sla_dates(fil) = ( fil=="sla_podaac.nc" ? podaac_all_dates : cmems_all_dates) -function prep_movie(ds, topo; colormap=:PRGn, color=:black, - time=1, dates=[], showTopo=true, resolution = (600, 400)) +plot(b::SeaLevelAnomaly; dates=[], kwargs...) = begin + ds=(isempty(dates) ? sla_dates(b.file) : dates) + fig,_,_=prep_movie(b.data; dates=ds, kwargs...) + fig +end + +function prep_movie(ds; topo=[], colormap=:PRGn, color=:black, + time=1, dates=[], resolution = (600, 400)) lon=ds["lon"][:] lat=ds["lat"][:] store=ds["SLA"][:,:,:] @@ -132,7 +138,7 @@ function prep_movie(ds, topo; colormap=:PRGn, color=:black, ax=Axis(fig[1,1]) hm=heatmap!(lon,lat,SLA2,colorrange=0.25.*(-1.0,1.0),colormap=colormap) - if showTopo + if !isempty(topo) lon[1]>0.0 ? lon_off=360.0 : lon_off=0.0 contour!(lon_off.+topo.lon,topo.lat,topo.z,levels=-300:100:300,color=color,linewidth=1) contour!(lon_off.+topo.lon,topo.lat,topo.z,levels=-2500:500:-500,color=color,linewidth=0.25) @@ -213,7 +219,7 @@ end function plot_standard(wmo,arr,spd,T_std,S_std; markersize=2,pol=Any[]) xlims=xrng(arr.lon) - ylims=xrng(arr.lat) + ylims=yrng(arr.lat) fig1=Figure(size=(900,900)) diff --git a/src/OceanRobots.jl b/src/OceanRobots.jl index da87612..854637b 100644 --- a/src/OceanRobots.jl +++ b/src/OceanRobots.jl @@ -8,11 +8,13 @@ import Base: read include("types.jl") include("thredds_servers.jl") include("files.jl") -include("gridded_data.jl") export GDP, GDP_CloudDrift, NOAA, GliderFiles, ArgoFiles, OceanSites, OceanOPS -export THREDDS, cmems_sla, podaac_sla +#export THREDDS + +include("gridded_data.jl") +export cmems_sla, podaac_sla -export NOAAbuoy, NOAAbuoy_monthly, ArgoFloat, SurfaceDrifter, Gliders, OceanSite, CloudDrift +export NOAAbuoy, NOAAbuoy_monthly, ArgoFloat, SurfaceDrifter, Gliders, OceanSite, CloudDrift, SeaLevelAnomaly end # module diff --git a/src/files.jl b/src/files.jl index b668b52..4ae7eb4 100644 --- a/src/files.jl +++ b/src/files.jl @@ -879,3 +879,28 @@ list_platform_types() = begin end end + +## + +module SLA + +using Dataverse, NCDatasets +import OceanRobots: SeaLevelAnomaly +import Base: read + +#fil=["sla_podaac.nc","sla_cmems.nc"] +function read(x::SeaLevelAnomaly,ID=:sla_podaac,path=tempdir()) + DOI="doi:10.7910/DVN/OYBLGK" + lst=Dataverse.file_list(DOI) + + fil=string(ID)*".nc" + sla_file=joinpath(path,fil) + !isdir(path) ? mkdir(path) : nothing + !isfile(sla_file) ? Dataverse.file_download(lst,fil,path) : nothing + + ds=Dataset(sla_file) + #data=(lon=ds["lon"],lat=ds["lat"],SLA=ds["SLA"]) + SeaLevelAnomaly(Symbol(fil[1:end-3]),ds,sla_file) +end + +end \ No newline at end of file diff --git a/src/types.jl b/src/types.jl index 031055c..dea9ca7 100644 --- a/src/types.jl +++ b/src/types.jl @@ -62,3 +62,11 @@ struct OceanSite <: AbstractOceanRobotData end OceanSite() = OceanSite(:unknown,NamedTuple(),NamedTuple()) + +struct SeaLevelAnomaly <: AbstractOceanRobotData + ID::Symbol + data::Union{Array,Dataset} + file::String +end + +SeaLevelAnomaly() = SeaLevelAnomaly(:unknown,[],"") diff --git a/test/runtests.jl b/test/runtests.jl index 3bb1304..48cd8aa 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -4,7 +4,7 @@ using Test @testset "OceanRobots.jl" begin url="https://dods.ndbc.noaa.gov/thredds/catalog/oceansites/long_timeseries/WHOTS/catalog.xml" - files,folders=THREDDS.parse_catalog(url) + files,folders=OceanRobots.THREDDS.parse_catalog(url) @test isa(files[1],String) @test isempty(folders) @@ -86,7 +86,7 @@ using Test b=plot(a;option=:demo) @test isa(b,Figure) - files_year,files_url=THREDDS.parse_catalog_NOAA_buoy() + files_year,files_url=OceanRobots.THREDDS.parse_catalog_NOAA_buoy() @test !isempty(files_url) ## @@ -102,4 +102,11 @@ using Test tmp=OceanOPS.list_platform_types() @test isa(tmp.name,Vector) + + ## + + b=read(SeaLevelAnomaly(),:sla_podaac) + f3=plot(b) + @test isa(f3,Figure) + end