The Global Ocean Observing System

The Global Ocean Observing System#

Here we use the OceanOPS module from the OceanRobots.jl package that is helfpul to monitor current and planned deployments of observing networks.

See the OceanRobots.jl package docs here for a deeper look at data collections for which additional support is provided.

Source : https://www.ocean-ops.org/board, https://www.ocean-ops.org/share/

#Let's start a temporary environment for this notebook, and add julia packages that we will 
if !isdefined(Main,:Shapefile)
    using Pkg; Pkg.activate(temp=true)
    Pkg.add.(["OceanRobots", "CairoMakie", "MeshArrays","Shapefile",
        "Shapefile", "GeoJSON", "DataDeps", "PrettyTables", "Proj"])
end

using OceanRobots, CairoMakie, MeshArrays
using Shapefile, GeoJSON, DataDeps, PrettyTables, Proj

OceanRobotsMakieExt=Base.get_extension(OceanRobots, :OceanRobotsMakieExt)
OceanRobotsMakieExt

Datasets#

nam=:Drifter
list_data=OceanOPS.get_list(nam);
id=list_data[1000]
meta=OceanOPS.get_platform(id)
(id = "4602742", country = "United States", status = "OPERATIONAL", deployed = "2021-11-02T09:28:00", ship = "SALLY RIDE")
fil=demo.download_polygons("ne_110m_admin_0_countries.shp")
#fil=demo.download_polygons("countries.geojson")
pol=MeshArrays.read_polygons(fil);
list_platform_types=OceanOPS.list_platform_types();

nam_platform_types="TROPICAL_MB"
more_platform_ii=findall(list_platform_types.nameShort.==nam_platform_types)[1]
more_platform_name=list_platform_types[more_platform_ii,:name]

more_operational=OceanOPS.get_list_pos(Symbol(nam_platform_types));
argo_operational=OceanOPS.get_list_pos(:Argo)

a0=OceanOPS.get_list_pos(:Argo,status=:PROBABLE)
a1=OceanOPS.get_list_pos(:Argo,status=:CONFIRMED)
a2=OceanOPS.get_list_pos(:Argo,status=:REGISTERED)

argo_planned=( lon=vcat(a0.lon,a1.lon,a2.lon),
            lat=vcat(a0.lat,a1.lat,a2.lat),
            flag=vcat(a0.flag,a1.flag,a2.flag))

drifter_operational=OceanOPS.get_list_pos(:Drifter);

Visualisation#

function demofigure()
	lon0=-160
	proj=Proj.Transformation(MA_preset=2,lon0=lon0)

	fi0=Figure(size=(800,600),fontsize=24)
	ax0=Axis(fi0[1,1],backgroundcolor = :gray20,
		title="Distribution of Ocean Observing Platforms")
	pr_ax=MeshArrays.ProjAxis(ax0; proj=proj,lon0=lon0)
	lines!(pr_ax,polygons=pol;color=:white, linewidth = 0.5)

	sc1=scatter!(pr_ax,argo_operational.lon,argo_operational.lat,
		markersize=6.0,label="Argo (operational)",color=:deepskyblue)
	sc2=scatter!(pr_ax,argo_planned.lon,argo_planned.lat,
		markersize=6.0,label="Argo (planned)",color=:violet)
	sc3=scatter!(pr_ax,drifter_operational.lon,drifter_operational.lat,
		markersize=8.0,label="Drifter",color=:green1)
	sc4=scatter!(pr_ax,more_operational.lon,more_operational.lat,
		markersize=12.0,label=more_platform_name,color=:red,marker=:star5)
	
	MeshArrays.grid_lines!(pr_ax;color=:yellow,linewidth=0.5)

	Legend(fi0[2, 1],[sc1,sc2,sc3,sc4],[sc1.label,sc2.label,sc3.label,sc4.label],
		orientation = :horizontal, fontsize=16)
	
	fi0
end

with_theme(demofigure, theme_dark())