{
  "title": "Harbour derived terrain",
  "provider": "Survey and Mapping Office, Lands Department, Hong Kong SAR Government",
  "sourceDataset": "Digital Terrain Model (DTM)",
  "sourceURL": "https://portal.csdi.gov.hk/csdi-webpage/dataset/landsd_rcd_1638158088368_93806",
  "downloadURL": "https://static.csdi.gov.hk/csdi-webpage/download/common/e9a836d098a3a9ccf55a7f61f69a93e71923c722fb94ddf7b36be83a67b99140",
  "downloadDate": "2026-10-14T13:16:26.812Z",
  "sourceSHA256": "6dbcdfb50bbc4bc520828eec574e5235c887b02cfeaff3dd24d85e87621bd1af",
  "sourceCapturePeriod": "2014-01 to 2015-01",
  "sourceBasis": "DOP5000 December 2015 release",
  "sourceCreated": "2017",
  "sourceRevision": "2019",
  "sourcePublished": "2022-03-25",
  "metadataDate": "2025-02-18",
  "sourceHorizontalCRS": "EPSG:2326 Hong Kong 1980 Grid",
  "sourceVerticalCRS": "EPSG:5738 Hong Kong Principal Datum (HKPD)",
  "sourceGridMetres": 5,
  "statedVerticalAccuracyMetres": 5,
  "processedGrid": {
    "width": 6375,
    "height": 4800,
    "xCenter": 800002.5,
    "yCenter": 847997.5,
    "resolution": 10,
    "nodata": -32768,
    "scale": 0.25,
    "encoding": "little-endian Int16, gzip",
    "horizontalCRS": "EPSG:2326",
    "verticalCRS": "EPSG:5738 (HKPD)",
    "sourceResolution": 5,
    "resampling": "Mean of each 2 × 2 source block; at least 3 valid cells required",
    "validCells": 30600000,
    "minMetres": -24.75,
    "maxMetres": 957.75,
    "maxCoordinate": [
      114.12447188108055,
      22.410180189494895
    ]
  },
  "projection": {
    "definition": "+proj=tmerc +lat_0=22.31213333333334 +lon_0=114.1785555555556 +k=1 +x_0=836694.05 +y_0=819069.8 +ellps=intl +towgs84=-162.619,-276.959,-161.764,0.067753,-2.243648,-1.158828,-1.094246 +units=m +no_defs",
    "reference": "https://www.geodetic.gov.hk/common/data/parameter/7P_ITRF96_HK80_V1.pdf",
    "officialControl": {
      "grid": [
        818097.267,
        838477.97
      ],
      "wgs84": [
        114.00029998111111,
        22.485771437777778
      ]
    },
    "computedControl": [
      114.00030000965756,
      22.485771427860296
    ],
    "errorMetres": 0.003133389433284655
  },
  "bounds": [
    113.82419888501018,
    22.1379876587838,
    114.44407170109686,
    22.57165589177366
  ],
  "tiles": {
    "terrain": "/assets/terrain/{z}/{x}/{y}.png",
    "slope": "/assets/slope/{z}/{x}/{y}.png",
    "encoding": "Terrarium: R*256+G+B/256-32768 metres HKPD",
    "tileSize": 256,
    "minzoom": 10,
    "maxzoom": 14,
    "counts": {
      "10": 6,
      "11": 15,
      "12": 48,
      "13": 180,
      "14": 638
    },
    "terrainBytes": 17288202,
    "slopeBytes": 2154617,
    "zeroFill": "Missing terrain is zero-filled for visual rendering only. Terrain sampler returns null for unavailable values.",
    "quantizationMetres": 0.25,
    "pngEncoding": "Lossless 24-bit RGB, no palette quantization",
    "projectionInterpolationNodeSpacingMetresMax": 145
  },
  "slope": {
    "units": "degrees",
    "method": "2×2 mean of source 5 m cells yields 10 m grid; 5×5 box mean (50 m footprint) then centred east/west and north/south differences on a 40 m baseline; slope = atan(hypot(dz/dx,dz/dy)). At least 15/25 valid cells required in smoothing. Derivatives require four valid interpolated neighbours.",
    "classes": [
      {
        "min": 0,
        "max": 15,
        "color": "#4f8b6d",
        "alpha": 40
      },
      {
        "min": 15,
        "max": 25,
        "color": "#dbb049",
        "alpha": 110
      },
      {
        "min": 25,
        "max": 35,
        "color": "#e07634",
        "alpha": 160
      },
      {
        "min": 35,
        "max": 90,
        "color": "#b23c3f",
        "alpha": 195
      }
    ],
    "mask": "NoData, unavailable derivative and terrain ≤1 m are transparent. This suppresses most open water but is not a surveyed coastline or land mask.",
    "meaning": "Slope of surrounding terrain; not trail grade, a danger rating, or a passability assessment."
  },
  "limitations": [
    "Source can include vegetation heights, elevated roads and bridges; it is not consistently a bare-earth terrain model.",
    "5 m source spacing is not 5 m vertical accuracy; provider states ±5 m vertical accuracy.",
    "Source capture is 2014–2015, so recent landslides, reclamation, paths and structures may be absent.",
    "Terrain heights are HKPD, approximately 1.3 m below local mean sea level reference; no vertical conversion has been applied.",
    "Summits, narrow ridges and cliffs are smoothed; route ascent/descent totals depend on sampling and smoothing.",
    "Hillshade and 3D are visual interpretations; slope colours do not describe actual trail steepness or safety."
  ],
  "attribution": "Terrain derived from Lands Department DTM. Map from Lands Department.",
  "terms": "https://portal.csdi.gov.hk/csdi-webpage/terms-and-conditions",
  "validation": {
    "runDate": "2026-10-14T13:36:20.206Z",
    "sourceGridChecks": [
      {
        "grid": [
          10,
          10
        ],
        "wgs84": [
          113.8252222407844,
          22.570545228588323
        ],
        "sourceBlockMean": 0,
        "processedSample": 0
      },
      {
        "grid": [
          3086,
          1791
        ],
        "wgs84": [
          114.12437479240342,
          22.410089853103486
        ],
        "sourceBlockMean": 952.75,
        "processedSample": 952.7501
      },
      {
        "grid": [
          1200,
          3400
        ],
        "wgs84": [
          113.94144640498553,
          22.26462590740546
        ],
        "sourceBlockMean": 238.75,
        "processedSample": 238.7502
      },
      {
        "grid": [
          3200,
          3200
        ],
        "wgs84": [
          114.13548430988875,
          22.282852451100446
        ],
        "sourceBlockMean": 93,
        "processedSample": 93.0002
      },
      {
        "grid": [
          5500,
          800
        ],
        "wgs84": [
          114.35894516633766,
          22.49948715873576
        ],
        "sourceBlockMean": 103.5,
        "processedSample": 103.5
      },
      {
        "grid": [
          3900,
          3500
        ],
        "wgs84": [
          114.2034032999057,
          22.255763591850947
        ],
        "sourceBlockMean": 288,
        "processedSample": 288
      },
      {
        "grid": [
          4000,
          1900
        ],
        "wgs84": [
          114.2131422505923,
          22.400251046759152
        ],
        "sourceBlockMean": 7.75,
        "processedSample": 7.75
      }
    ],
    "elevationPlausibilityChecks": [
      {
        "name": "Tai Mo Shan",
        "comparison": "Maximum processed grid elevation in summit vicinity, not independent survey validation",
        "coordinate": [
          114.12447188108055,
          22.410180189494895
        ],
        "processedMetres": 957.75,
        "publishedSummitMetres": 957,
        "differenceMetres": 0.75,
        "source": "https://www.afcd.gov.hk/english/country/cou_vis/cou_vis_cou/cou_vis_cou_tms/cou_vis_cou_tms.html"
      },
      {
        "name": "Lantau Peak",
        "comparison": "Maximum processed grid elevation in summit vicinity, not independent survey validation",
        "coordinate": [
          113.9200327752819,
          22.249241454614634
        ],
        "processedMetres": 933,
        "publishedSummitMetres": 934,
        "differenceMetres": -1,
        "source": "https://www.afcd.gov.hk/english/country/cou_vis/cou_vis_cou/cou_vis_cou_ls/cou_vis_cou_ls.html"
      },
      {
        "name": "Sunset Peak",
        "comparison": "Maximum processed grid elevation in summit vicinity, not independent survey validation",
        "coordinate": [
          113.95280965615842,
          22.257236874652328
        ],
        "processedMetres": 866.75,
        "publishedSummitMetres": 869,
        "differenceMetres": -2.25,
        "source": "https://www.pland.gov.hk/studies/landscape/tech_report/ch5.htm"
      }
    ],
    "encodedTileChecks": [
      {
        "tile": [
          10,
          835,
          446
        ],
        "pixel": [
          224,
          224
        ],
        "errorMetres": 0
      },
      {
        "tile": [
          10,
          836,
          446
        ],
        "pixel": [
          31,
          31
        ],
        "errorMetres": 0
      },
      {
        "tile": [
          10,
          836,
          446
        ],
        "pixel": [
          127,
          127
        ],
        "errorMetres": 0.1028
      },
      {
        "tile": [
          10,
          836,
          446
        ],
        "pixel": [
          224,
          224
        ],
        "errorMetres": 0.0763
      },
      {
        "tile": [
          13,
          6692,
          3572
        ],
        "pixel": [
          31,
          31
        ],
        "errorMetres": 0.0422
      },
      {
        "tile": [
          13,
          6692,
          3572
        ],
        "pixel": [
          127,
          127
        ],
        "errorMetres": 0.0778
      },
      {
        "tile": [
          13,
          6692,
          3572
        ],
        "pixel": [
          224,
          224
        ],
        "errorMetres": 0.0165
      },
      {
        "tile": [
          14,
          13384,
          7144
        ],
        "pixel": [
          31,
          31
        ],
        "errorMetres": 0
      },
      {
        "tile": [
          14,
          13384,
          7144
        ],
        "pixel": [
          127,
          127
        ],
        "errorMetres": 0.0124
      },
      {
        "tile": [
          14,
          13384,
          7144
        ],
        "pixel": [
          224,
          224
        ],
        "errorMetres": 0.1085
      }
    ],
    "zeroFillChecks": [
      {
        "tile": [
          10,
          835,
          446
        ],
        "pixel": [
          31,
          31
        ],
        "decodedMetres": 0
      },
      {
        "tile": [
          10,
          835,
          446
        ],
        "pixel": [
          127,
          127
        ],
        "decodedMetres": 0
      }
    ],
    "outsideCoverageReturnsNull": true,
    "scope": "Conversion and encoding verified numerically against the supplied source; no field survey or current trail condition validation."
  }
}
