If no .tfw world file is given, or the one named does not exist, the GeoTIFF's own ModelPixelScaleTag and ModelTiepointTag are read instead, so a file carrying embedded georeferencing needs no sidecar at all.
▪
Some GeoTIFFs -- commonly ones with resolution overviews built in by GDAL -- store several pages of different sizes. The full-resolution page, the largest, is picked out automatically.
▪
NoData pixels are filled from their nearest measured neighbour rather than a single global mean, so a lake or other unmeasured water body does not create an artificial elevation cliff. The whole-raster mean is used only as a last resort.
▪
Raster rows are reversed on load, because GeoTIFF rows run north to south while the interpolation expects the first row to be the south edge.
▪
The result is an Association with keys "Type", "File", "PixelSizeX", "PixelSizeY", "FullCols", "FullRows", "SubCols", "SubRows", "Matrix", "Surface", "Bounds", "ZMin", "ZMax" and "Strata".
▪
A descriptive failure string is returned, rather than $Failed, when the file cannot be read as a single-band elevation grid.
▪
Both arguments are ordinary file paths, resolved against the current directory when they are not absolute.
▪
Note that a .tfw path that does not exist is not reported as a missing file: the loader falls back to reading the GeoTIFF's own embedded tags, and reports failure in those terms instead. If a load fails with a message about embedded georeferencing tags, check the paths first.
▪
A large raster is expensive to read in full. A 5000 x 5000 grid takes a few minutes and builds an interpolating surface of roughly a gigabyte, of which the import itself is only a few seconds -- the rest is filling NoData and building the surface. Pass SubsetSize while exploring.
Examples
(1)
Basic Examples
(1)
Load a survey raster together with its world file:
In[1]:=
terrain=
LTLoadGeoTIFF
["terrain.tif","terrain.tfw"]
Read only the top-left 500 x 500 cells, which loads in seconds rather than minutes: