On this page
Identify the raster, tags, and GeoKeys first
Start with a file identity and a metadata snapshot. Record the path or neutral artifact identifier, digest, image width and height, band count, sample type, bit depth, compression, tiling, and overview state. Then record the TIFF tags and GeoKeys that describe georeferencing. The Open Geospatial Consortium, (opens in a new tab) standard treats GeoTIFF metadata as an association with TIFF raster data, so a valid image is not by itself evidence that the georeferencing is complete.
| Field group | Record exactly | Do not infer |
|---|---|---|
| Image identity | Neutral ID, digest, dimensions, bands, sample type | That a filename names the CRS |
| GeoKey directory | Version, key IDs, declared values, citations | That an unrecognized key is harmless |
| Model tie point | Pixel and model coordinates, count, units | That one point proves the whole transform |
| Pixel scale | X, Y, Z values and sign | That scale alone handles rotation |
| Model transform | Matrix values and presence | That a reader used the intended matrix |
| CRS identity | Projected, geographic, vertical, or unknown | That an EPSG-like number is valid without context |
Keep the raw tag representation beside a normalized worksheet value. A parser may expose a friendly CRS name while hiding whether it came from a key directory, a citation, or a reader fallback. The review should make that provenance visible and preserve unknown or user-defined keys instead of deleting them.
Compare CRS identity, transform, and units
A CRS label and a raster-to-model transform answer different questions. The CRS identifies the coordinate system context. The transform maps pixel locations into model coordinates. Units describe the numeric coordinate values. Compare all three, including axis order and pixel-is-area versus pixel-is-point conventions when the producer documents them. Do not repair a disagreement by silently swapping axes or shifting half a pixel.
| Observation | Conditional state | Next action |
|---|---|---|
| CRS keys and transform agree | Metadata internally consistent | Retain values and verify coverage boundary |
| CRS exists but transform is absent | Spatial placement incomplete | Hold until transform rule is documented |
| Tie points exist without scale | Partial transform evidence | Check for matrix or producer convention |
| Scale and matrix both appear | Potential duplicate representations | Compare numerically and record reader choice |
| Units are absent or conflict | Coordinate values ambiguous | Ask source owner; do not invent units |
| User-defined CRS appears | Non-standard identity | Preserve citation and request definition |
Synthetic metadata worksheet row
{
"artifact": "fixture-geotiff-01",
"crs": "EPSG:0000 (fixture label, unresolved)",
"transform_evidence": "ModelTiepoint + ModelPixelScale",
"units": "unknown",
"axis_order": "not asserted",
"decision": "hold"
}The fixture is intentionally unresolved. It demonstrates a useful report row without pretending that a plausible code or transform establishes a real location. Keep the source values and the reviewer decision separate.
Define NoData without changing valid pixels
NoData is a representation rule, not a universal number. Record whether it is explicit, band-specific, stored in a TIFF tag, carried in driver auxiliary metadata, or not available. The GDAL, (opens in a new tab) documents driver behavior in which a NoData value may be stored in a PAM .aux.xml file for some profiles. Treat the sidecar as part of the input boundary, not as an incidental file that can be ignored.
| Question | Worksheet value | Stop if |
|---|---|---|
| NoData source | Tag, sidecar, per-band rule, or unknown | Reader fallback is the only evidence |
| NoData value | Exact typed value or unavailable | Integer was coerced to floating point |
| Band scope | All bands or named bands | One band disagrees without explanation |
| Valid range | Producer rule and observed metadata | NoData sits inside valid observations with no rule |
| Mask behavior | Mask, alpha, or no mask | Display transparency is treated as data absence |
| Scale and offset | Packed or unpacked domain | Sentinel is compared after the wrong transform |
Do not replace NoData with zero, a blank, or a mean value during review. Preserve the typed sentinel and the domain in which it is defined. A pixel that is not observed may be different from a pixel whose value is legitimately zero. If a derivative normalizes the representation, record the transformation and retain the source convention in the worksheet.
Use bounded pixel checks, not visual confidence
After metadata is recorded, a controlled fixture can test whether a reader preserves dimensions, band types, transform values, and NoData. Use synthetic values that include zero, a plausible measurement, the exact sentinel, and an out-of-range value. Report which reader and version produced the observation. A rendered map is a useful display artifact, but it is not a proof that every pixel is correctly positioned or that the full collection is covered.
| Check | Evidence to retain | Interpretation boundary |
|---|---|---|
| Dimensions | Width, height, band count | Shape only, not coverage |
| Type preservation | Declared and observed sample types | Storage type, not measurement accuracy |
| Transform round trip | Synthetic pixel and reported model coordinate | Reader behavior for that fixture |
| NoData round trip | Sentinel before and after read | NoData semantics for that reader |
| Sidecar inclusion | Manifest entry and digest | Input boundary, not permission |
Stop conditions
- Stop if CRS identity is absent, ambiguous, or contradicted by the transform.
- Stop if transform tags conflict and the producer rule is unknown.
- Stop if NoData is undocumented, band scope is unclear, or the sentinel lies inside a valid range without an explanation.
- Stop if units, axis order, or vertical context cannot be separated from reader assumptions.
- Stop before inspecting precise locations when a privacy boundary or owner authority is not documented.
Keep the spatial next step qualified
Record source, transform, units, NoData, and unresolved questions in a neutral metadata packet. Pair this guide with the data provenance log for source and transformation history and data card template for collection context. Neither worksheet decides whether imagery may be shared or whether a coordinate is accurate.
For a supported non-health collection, after the owner has authority to describe the scope and a controlled review packet, the qualified appraisal request path may be a preparation step. It does not read GeoTIFF files, validate CRS, transform coordinates, assess positional accuracy, create a quote, match a buyer, issue a legal opinion, or grant a license. Do not upload precise imagery merely to test whether the metadata is understandable.
Takeaways
- Retain the raster identity, GeoKeys, transform evidence, units, and reader assumptions as separate fields.
- Treat NoData as a typed, scoped representation rule and include documented sidecars in the manifest.
- Use synthetic pixel fixtures before exposing precise imagery or private locations.
- Hold any interpretation when CRS, transform, units, or NoData boundaries disagree.