Skip to contents

ggOceanMaps 3.0.0

This major release adds on-demand bathymetry sources, build-your-own shapefile tools, automated tests, and a reorganised documentation site. The repository also includes instructions for AI assistants that help users and contributors work with ggOceanMaps.

New features

  • On-demand WCS bathymetry via the new wcs_bathymetry() function with two sources:
    • EMODnet — bathy.style = "wcs_emodnet_blues" ("wemb") / "wcs_emodnet_grays" ("wemg"). ~115 m European-waters bathymetry.
    • ETOPO1 from NOAA NCEI — bathy.style = "wcs_etopo_blues" ("wceb") / "wcs_etopo_grays" ("wceg"). ~1.85 km global topo-bathy. Use this when EMODnet has no coverage for your region. Bounding boxes outside a source’s coverage error cleanly with a pointer to the right alternative. Large boxes are tiled and mosaicked automatically. Tiles cached under getOption("ggOceanMaps.datapath").
  • vector_land() extracts a land polygon from a bathyRaster produced by raster_bathymetry(). Pairs with vector_bathymetry() for build-your-own shapefile workflows.
  • Maps no longer print x / y axis titles by default (decimal-degree maps used to show “Longitude” / “Latitude”). Add them back when you want them with + labs(x = "Longitude", y = "Latitude").

Documentation and AI support

  • New repository-level AGENTS.md with instructions for AI assistants helping users use ggOceanMaps.
  • New website Cookbook of short, copy-pasteable recipes.
  • New website Bathymetry article covering all bathymetry sources.
  • New website Adding graphical elements article covering ocean-current arrows (velocity quivers and schematic “Figure 1” arrows) and pie charts on maps via scatterpie::geom_scatterpie().
  • New website Customising shapefiles article covering clip_shapefile(), the raster_bathymetry() -> vector_bathymetry() / vector_land() pipeline, and geonorge_bathymetry().
  • The “Premade maps” and “Premade shapefiles” articles were rewritten to the current sf/stars toolchain and the current shapefile_list() contents.
  • The user manual was slimmed to concise explanations that link out to the in-depth articles, and the documentation site (navbar, reference index) was reorganised.

Bug fixes

  • Fixed land being clipped too early on projected (polar-stereographic) maps with decimal-degree limits, e.g. basemap(c(-20, 30, 50, 70)) cut off northern Norway. The land clip boundary is now densified before back-projecting to WGS84.
  • Fixed antimeridian / wide-span land clipping by routing the clip through the projected map CRS, fixing wrong land for basemap(c(120, -120, 60, 80)) and a topology crash for rotated antimeridian data input.
  • Fixed a crash (st_cast() on a degenerate GEOMETRYCOLLECTION) for some custom vector_land() layers at some map limits.
  • Fixed rotated antimeridian maps drawing no land, e.g. basemap(c(100, -120, -12, -57), rotate = TRUE) and basemap(c(40, -70, -37, 40), rotate = TRUE). A landmass crossing the rotated antimeridian (even off-screen, such as Antarctica) was “unwrapped” into a degenerate >180-degree polygon during projection, which made ggplot2 skip the whole land layer. Such polygons are now split along the seam before projection (issue #44).
  • Fixed the default bathymetry being heavily downsampled. The raster was warped onto a coarse ~256-cell grid regardless of the source resolution, so e.g. basemap(60, bathymetry = TRUE) lost most of its detail. The warp now keeps the source resolution by default; use the downsample argument to reduce it.
  • Fixed basemap("DecimalDegree", bathymetry = TRUE) (and the same whole-world set with glaciers = TRUE) collapsing the bathymetry to a single row at the equator. Clipping the global raster to an exact -180..180 longitude box returned a degenerate boundary; whole-world decimal-degree limits are now pulled just inside the antimeridian before clipping.
  • Fixed a WCS bathy.style ("wemb" / "wceb", etc.) failing with “st_transform applied to an object of class ‘logical’” when combined with an explicitly named premade shapefile set, e.g. basemap(..., bathy.style = "wemb", shapefiles = "Svalbard"). The on-demand bathymetry is now fetched in that case too.
  • Fixed WCS bathymetry leaving white gaps around the edges of projected maps (e.g. on the Svalbard or Europe CRS). The coverage is now requested for the full projected, expand-factor-padded map area rather than the raw decimal-degree limits, so it fills the whole panel.
  • WCS downsample is now applied by the remote service, reducing transfer size and memory use. Raster cropping preserves the downloaded cell resolution and no longer applies a second implicit reduction before plotting.
  • WCS downloads now use validated temporary files and atomic cache updates. Invalid cache entries are replaced automatically, and multipart responses are split using their complete MIME boundary rather than a generic byte sequence that can occur inside a GeoTIFF.

Testing

Internal

  • load_map_data() no longer calls menu() in non-interactive sessions, so data downloads work during automated/CI documentation builds.
  • Performance: basemap_data_crop() now clips in native CRS before reprojecting, avoiding world-scale transforms for small map extents (#55).
  • Performance: grid-line generation in polar maps switched from lapply(unique()) to split() + lapply() (#57).
  • Removed ~131 lines of dead/commented code across basemap.R, basemap_data.R, raster_bathymetry.R, dist2land.R (#56, #59, #60, #61, #62).

ggOceanMaps 2.3.0

CRAN release: 2026-02-10

  • Fixed anti-meridian crossing land clipping in rotated basemaps (#53)
  • Fixed bugs and package incompatibilities, including TopologyException (#52, #40)
  • Fixed issue with plotting Indian and Pacific Ocean (#51, #44)
  • Replaced size with linewidth to stop ggplot2 warning (#49, #48)
  • Removed size-related warnings throughout the package
  • Updated grid.size/grid.col behavior
  • Various minor bug fixes
  • Fixed a bug where both load_map_data(shapefile_list("Arctic")) and shapefile_list("Arctic", get.data = TRUE) would cause error due to changed bathymetry system.

ggOceanMaps 2.2.0

CRAN release: 2024-01-15

  • Added tests better explaining wrongly specified arguments
  • Updated the user manual
  • Fixed an issue with certain bathy.style abbreviations
  • qmap arguments did not match those of basemap: added bathy.alpha and downsample arguments to qmap
  • Fixed an issue when trying to plot basemaps using plotly::ggplotly()
  • Fixed an issue with . in file path
  • Fixed an issue when plotting singular points
  • Fixed basemap(c(-180, 180, -90, 90)) case and turned off automatic rotation when crossing the anti-meridian. A message is shown instead.
  • Turned off expand in ggplot2::coord_sf() to avoid an error when having map border at 0 meridian.
  • Fixed a case where data argument produced too wide boundaries
  • expand.factor should work now as designed
  • Fixed an error in dist2land(binary = TRUE)
  • get_depth() now uses raster_user and returns depths as positive numeric.
  • Fixed an issue where land boundaries did not get clipped correctly when using custom crs

ggOceanMaps 2.1.1

CRAN release: 2023-08-30

  • Fixed a bug in bathy.style wording.
  • Added get_depth() function.
  • Fixed a critical issue with downloads failing on Windows.
  • Added detailed land shapes of Europe. Can be used by basemap(shapefiles = "Europe")

ggOceanMaps 2.0.0

CRAN release: 2023-07-04

  • Full sf integration. Old GIS packages for R and ggspatial dependencies removed. Since this change required rewriting of most functions, new bugs have almost certainly been introduced.
  • Bathymetry system redesigned (see this)
  • Decimal degree maps can now be plotted across the antimeridian.
  • Added spatial data to ggOceanMaps making the ggOceanMapsData package not needed any longer.
  • dist2land() now uses great circle distances on a spherical Earth (s2) by default and should be able to calculate distances to land anywhere around the globe.
  • qmap points turned red. Addressed a long-standing issue with shapefiles and shape getting mixed.
  • Fixed a bug with shapefiles argument shortcut.
  • Fixed a bug in ices_data
  • Added sf support for clip_shapefile
  • Added sf support for shapefiles (converts to sp, needs to be refined)
  • Fixed a bug with expanded limits in decimal degree projection
  • Fixed a bug where shapefile_list(“all”) would return multiple rows per shapefile name.

ggOceanMaps 1.3.4

CRAN release: 2022-09-26

  • Added shapefiles to the x argument shortcut in basemap().
  • Added limits to premade shapefiles to make visualization easier.
  • Removed many CRS warning from sp and rgdal
  • Added a way to control the plotting order of graticules
  • Added transparency (alpha) scaling to bathymetry fill
  • Added GEBCO bathymetry which is more detailed than the ArcticSterographic.
  • Added EMODnet bathymetry which is more detailed than GEBCO for the Northeast Atlantic
  • Improved vignette and webpage:
    • Added a way to control the plotting order of graticules.
    • New design
    • Added vignettes
  • Added ICES and Norwegian directorate of fisheries areas.

ggOceanMaps 1.2.6

CRAN release: 2022-01-08

ggOceanMaps 1.1

CRAN release: 2021-05-21

ggOceanMaps 1.0.9

CRAN release: 2021-01-14

  • First CRAN release. Contains the core of the package code rewritten from PlotSvalbard