Why the map has a hole at the South Pole - GeospatialResearch/Digital-Twins GitHub Wiki

An empty circle around the South Pole is expected in the Antarctic Digital Twin. It is not a bug in the app.

What causes it

  • The basemap. All basemaps use Web Mercator, which stops at about 85°S. The circle is there even with every layer turned off.
  • The layer's projection. Layers are requested in Web Mercator (EPSG:3857) by default and stop at 85°S, even when the source file covers the pole. Many layers are served this way on purpose, because it draws faster.
  • The data. Some datasets have no values near the pole, for example satellite products with a gap over the pole, regional models, and ocean-only products such as sea ice.

Finding the cause

  1. Turn off every layer. If the circle is still there, it is the basemap.
  2. Turn on one layer and hover over the edge of its circle. The latitude is shown in the bar at the bottom right of the map.
  3. If the layer stops at about 85°S, it is drawn in Web Mercator.
  4. If it stops at any other latitude, the data does not reach the pole.

Checking whether a dataset reaches the pole

A layer covers the pole only if all four checks pass. The GDAL commands below come with the project's conda environment.

  1. The file reaches the pole. Run gdalinfo and check that Lower Left shows a latitude between 86°S and 90°S.
   gdalinfo file.tif

Expected: Lower Left (-180.0000000, -90.0000000)

  1. The file is in EPSG:4326. Run gdalsrsinfo and check that it prints EPSG:4326. The first pair of numbers on each corner line from gdalinfo should be in degrees (within ±180 and ±90). Values in the millions are metres.
   gdalsrsinfo -o epsg file.tif
  1. GeoServer serves the same extent. In GeoServer (default http://localhost:8088/geoserver), open Layers and click the layer. On the Data tab, check that the Lat/Lon Bounding Box Min Y matches the file's Lower Left latitude. See GeoServer: Layers for where this is.

  2. The catalog requests EPSG:4326. Open http://localhost:5000/terria-catalog.json and check that the layer's entry has "crs": "EPSG:4326". If there is no crs field, the layer is requested in EPSG:3857.