imod.select.cross_section_linestring#
- imod.select.cross_section_linestring(data, linestring)[source]#
Obtain an interpolated cross-sectional slice through gridded data. Utilizing the interpolation functionality in
xarray
, this function takes a vertical cross-sectional slice along a linestring through the given data on a regular grid, which is given as an xarray.DataArray so that we can utilize its coordinate data.Adapted from Metpy: Unidata/MetPy
- Parameters:
data (xarray.DataArray or xarray.Dataset) –
Three- (or higher) dimensional field(s) to interpolate. The DataArray (or each DataArray in the Dataset) must have been parsed by MetPy and include both an x and y coordinate dimension and the added
crs
coordinate.
linestring (shapely.geometry.LineString) –
Shapely geometry designating the linestring along which to sample the cross section.
Note that a LineString can easily be taken from a geopandas.GeoDataFrame using the .geometry attribute. Please refer to the examples.
- Returns:
The interpolated cross section, with new index dimension along the cross-section.
- Return type:
xarray.DataArray or xarray.Dataset
Examples
Load a shapefile (that you might have drawn before using a GIS program), take a linestring from it, and use it to extract the data for a cross section.
>>> geodataframe = gpd.read_file("cross_section.shp") >>> linestring = geodataframe.geometry[0] >>> section = cross_section_linestring(data, linestring)
Or, construct the linestring directly in Python:
>>> import shapely.geometry as sg >>> linestring = sg.LineString([(0.0, 1.0), (5.0, 5.0), (7.5, 5.0)]) >>> section = cross_section_linestring(data, linestring)
If you have drawn multiple cross sections within a shapefile, simply loop over the linestrings:
>>> sections = [cross_section_linestring(data, ls) for ls in geodataframe.geometry]