cstools is a Python package that provides functionality for creating curvilinear mesh through interpolations.
You can install cstools using pip
:
$ pip install cstools
or using conda
(mamba
):
$ conda install -c conda-forge cstools
The following example shows how to utilize this pacakge to create curvilinear points and a denser mesh.
A RiverReach
class in cstools.reach
is used to store the information of a river reach. The required inputs include centerline_file
, boundary_file
, and observation_file
. A function, convert_sn_coord_for_layer
, in the RiverReach object can be used to convert coordinates from the Cartician system (x, y) to cuvilinear system (S, N).
A CrossSectionTools
in cstools.tools
is used to interpolate points or cross-sections for mesh constructions. The default parameters are given or will be calculated when the functions are called. Users also can customize their own parameters. The example here shows the argments to set up paths for output files.
from cstools.reach import RiverReach
from cstools.tools import CrossSectionTools
input_dir = '/input/zigzag'
output_dir = '/output/zigzag'
rr = RiverReach(
centerline_file = f'{input_dir}/centerline.shp',
boundary_file = f'{input_dir}/BoundaryPolygon.shp',
observation_file = f'{input_dir}/observation.shp',
survey_type = 'zigzag'
)
cst = CrossSectionTools(rr)
XS_file = f'{output_dir}/projected_XS.shp'
masks_file = f'{output_dir}/mask.shp'
mesh_point_file = f'{output_dir}/mesh_points.shp'
mesh_line_file = f'{output_dir}/mesh_lines.shp'
allpivots = cst.PointToMesh(with_original=True,
output_dir=output_dir,
output_point_file=mesh_point_file,
output_line_file=mesh_line_file,
num_vertices=21,
XS_file=XS_file,
masks_file=masks_file)