Read/write data from an ESRI ASCII file into a RasterModelGrid.
read_asc_header (asc_file) |
Read header information from an ESRI ASCII raster file. |
read_esri_ascii (asc_file[, grid, reshape, ...]) |
Read RasterModelGrid from an ESRI ASCII file. |
write_esri_ascii (path, fields[, names, clobber]) |
Write landlab fields to ESRI ASCII. |
BadHeaderLineError
(line)[source]¶Bases: landlab.io.esri_ascii.Error
Raise this error for a bad header is line.
DataSizeError
(size, expected_size)[source]¶Bases: landlab.io.esri_ascii.Error
Raise this error if the size of data does not match the header.
KeyTypeError
(key, expected_type)[source]¶Bases: landlab.io.esri_ascii.Error
Raise this error when a header’s key value is of the wrong type.
KeyValueError
(key, message)[source]¶Bases: landlab.io.esri_ascii.Error
Raise this error when a header’s key value has a bad value.
MismatchGridDataSizeError
(size, expected_size)[source]¶Bases: landlab.io.esri_ascii.Error
Raise this error if the data size does not match the grid size.
MissingRequiredKeyError
(key)[source]¶Bases: landlab.io.esri_ascii.Error
Raise this error when a header is missing a required key.
read_asc_header
(asc_file)[source]¶Read header information from an ESRI ASCII raster file.
Parameters: | asc_file : file_like
|
---|---|
Returns: | dict
|
Raises: | MissingRequiredKeyError
KeyTypeError
|
Examples
>>> from six import StringIO
>>> from landlab.io.esri_ascii import read_asc_header
>>> contents = StringIO('''
... nrows 100
... ncols 200
... cellsize 1.5
... xllcenter 0.5
... yllcenter -0.5
... ''')
>>> hdr = read_asc_header(contents)
>>> hdr['nrows'], hdr['ncols']
(100, 200)
>>> hdr['cellsize']
1.5
>>> hdr['xllcenter'], hdr['yllcenter']
(0.5, -0.5)
MissingRequiredKey
is raised if the header does not contain all of the
necessary keys.
>>> contents = StringIO('''
... ncols 200
... cellsize 1.5
... xllcenter 0.5
... yllcenter -0.5
... ''')
>>> read_asc_header(contents)
Traceback (most recent call last):
MissingRequiredKeyError: nrows
KeyTypeError
is raises if a value is of the wrong type. For instance,
nrows
and ncols
must be int
.
>>> contents = StringIO('''
... nrows 100.5
... ncols 200
... cellsize 1.5
... xllcenter 0.5
... yllcenter -0.5
... ''')
>>> read_asc_header(contents)
Traceback (most recent call last):
KeyTypeError: Unable to convert nrows to <type 'int'>
read_esri_ascii
(asc_file, grid=None, reshape=False, name=None, halo=0)[source]¶Read RasterModelGrid
from an ESRI ASCII file.
Read data from asc_file, an ESRI ASCII file, into a
RasterModelGrid
. asc_file is either the name of
the data file or is a file-like object.
The grid and data read from the file are returned as a tuple
(grid, data) where grid is an instance of
RasterModelGrid
and data is a numpy
array of doubles with that has been reshaped to have the number of rows
and columns given in the header.
Parameters: | asc_file : str of file-like
reshape : boolean, optional
name : str, optional
grid : grid , optional
halo : integer, optional
|
---|---|
Returns: | (grid, data) : tuple
|
Raises: | DataSizeError
MismatchGridDataSizeError
|
Examples
Assume that fop is the name of a file that contains text below (make sure you have your path correct): ncols 3 nrows 4 xllcorner 1. yllcorner 2. cellsize 10. NODATA_value -9999 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ——– >>> from landlab.io import read_esri_ascii >>> (grid, data) = read_esri_ascii(‘fop’) # doctest: +SKIP >>> #grid is an object of type RasterModelGrid with 4 rows and 3 cols >>> #data contains an array of length 4*3 that is equal to >>> # [9., 10., 11., 6., 7., 8., 3., 4., 5., 0., 1., 2.] >>> (grid, data) = read_esri_ascii(‘fop’, halo=1) # doctest: +SKIP >>> #now the data has a nodata_value ring of -9999 around it. So array is >>> # [-9999, -9999, -9999, -9999, -9999, -9999, >>> # -9999, 9., 10., 11., -9999, >>> # -9999, 6., 7., 8., -9999, >>> # -9999, 3., 4., 5., -9999, >>> # -9999, 0., 1., 2. -9999, >>> # -9999, -9999, -9999, -9999, -9999, -9999]
write_esri_ascii
(path, fields, names=None, clobber=False)[source]¶Write landlab fields to ESRI ASCII.
Write the data and grid information for fields to path in the ESRI ASCII format.
Parameters: | path : str
fields : field-like
names : iterable of str, optional
clobber : boolean
|
---|
Examples
>>> import numpy as np
>>> from landlab.testing.tools import cdtemp
>>> from landlab import RasterModelGrid
>>> from landlab.io.esri_ascii import write_esri_ascii
>>> grid = RasterModelGrid((4, 5), spacing=(2., 2.))
>>> _ = grid.add_field('node', 'air__temperature', np.arange(20.))
>>> with cdtemp() as _:
... files = write_esri_ascii('test.asc', grid)
>>> files
['test.asc']
>>> _ = grid.add_field('node', 'land_surface__elevation', np.arange(20.))
>>> with cdtemp() as _:
... files = write_esri_ascii('test.asc', grid)
>>> files.sort()
>>> files
['test_air__temperature.asc', 'test_land_surface__elevation.asc']