NZ DEM
The 8m NZ DEM is an interpolation of the 20m contours on the 1:50,000 scale LINZ topo maps.
Coverage
The dataset covers all of New Zealand except Chatham Island at an 8 metre resolution.
NZ DEM elevation rendering.
Adding NZ DEM to Open Topo Data
As of May 2020, the 8m dataset could only be painstaking downloaded a single tile at a time through the LINZ web interface. If you'd rather not do this, here are all the files as I downloaded them from LINZ on May 2020 nzdem-may-2020.zip.
Once you've obtained the 115 files, unzip the zip archives and delete anything without a .tif
extension.
For Open Topo Data to understand the grid arrangement of the files, they need to be renamed to the coordinates of the lower-left corner. Here's the Python script I used, I'm also adding a buffer to help with interpolation near tile borders:
import os
from glob import glob
folder = './data/nzdem8m'
# Build vrt for all tifs.
pattern = os.path.join(folder, '*.tif')
tif_paths = list(glob(pattern))
vrt_path = os.path.join(folder, 'all.vrt')
assert not os.system('gdalbuildvrt {} {}'.format(vrt_path, ' '.join(tif_paths)))
buffer_ = 5
for tif_path in tif_paths:
with rasterio.open(tif_path) as f:
new_bounds = (
f.bounds.left - buffer_ * f.res[0],
f.bounds.bottom - buffer_ * f.res[1],
f.bounds.right + buffer_ * f.res[0],
f.bounds.top + buffer_ * f.res[1],
)
new_shape = (
f.shape[0] + buffer_ * 2,
f.shape[1] + buffer_ * 2,
)
northing = f.bounds.bottom
easting = f.bounds.left
filename = 'N{}E{}.tif'.format(int(northing), int(easting))
buffer_path = os.path.join(os.path.dirname(tif_path), filename)
te = ' '.join(str(x) for x in new_bounds)
ts = ' '.join(str(x) for x in new_shape)
cmd = f'gdalwarp -te {te} -ts {ts} -r near -co NUM_THREADS=ALL_CPUS -co COMPRESS=DEFLATE -co PREDICTOR=3 {vrt_path} {buffer_path}'
assert not os.system(cmd)
assert not os.system(f'rm {vrt_path}')
Create a config.yaml
file, setting the size of the tiles (65536 metres) and the projection system used (NZ tranverse mercator):
Rebuild to enable the new dataset at localhost:5000/v1/nzdem8m.
Public API
The Open Topo Data public API lets you query NZ DEM 8m for free:
{
"results": [
{
"elevation": 705.4374389648438,
"location": {
"lat": -37.86118,
"lng": 174.79974
},
"dataset": "nzdem8m"
}
],
"status": "OK"
}
The data files used in the public API were downloaded from LINZ May 2020.
Attribution
Released by LINZ under the (https://creativecommons.org/licenses/by/4.0/)[Creative Commons Attribution 4.0 International] licence.