ops Package#
geometry
Module#
- orangery.ops.geometry.close(line1, line2)#
Create lines to close left and right cross-section ends
Do something like this…
- Parameters:
line1 (LineString) –
line2 (LineString) –
- Return type:
tuple[LineString, LineString]
- orangery.ops.geometry.cut_by_distance(line, distance)#
This line cutting function is from shapely recipes http://sgillies.net/blog/1040/shapely-recipes/
- Parameters:
line (LineString) – the line to cut.
distance (float) – distance from beginning of line to cutting point.
- Returns:
array of cut line segments.
- Return type:
segments (LineString array)
- orangery.ops.geometry.cut_by_distances(line, intersections)#
Cut a line at multiple points by calculating the distance of each point along the line. Uses the cut_by_distance function.
- Parameters:
line (LineString) – the line to cut.
intersections (MultiPoint) – a MultiPoint object containing cut points
- Returns:
contains the line segments.
- Return type:
segments (MultiLineString)
- orangery.ops.geometry.cut_by_point(line, pt)#
A cut function that divides a line and inserts points at the cut location.
- Parameters:
line (LineString) – the line to cut.
pt (Point) – a point on the line where the cut is to be made.
- Returns:
array of cut line segments.
- Return type:
segments (LineString array)
- orangery.ops.geometry.cut_by_points(line, intersections)#
Cut a line at multiple points by breaking the line and inserting each point. Uses the cut_by_point function.
- Parameters:
line (LineString) – the line to cut.
intersections (MultiPoint) – a MultiPoint object containing the cut points.
- Returns:
contains the line segments.
- Return type:
segments (MultiLineString)
- orangery.ops.geometry.difference(line1, line2, close_ends=False)#
Create polygons from two LineString objects.
- Parameters:
line1 (LineString) – a line representing the initial condition.
line2 (LineString) – a line representing the final condition.
close_ends (bool) – option to close open line ends with vertical line segments.
- Returns:
the intersections between the LineString objects. polygons (Polygon array) : the polygons between the lines. signs (int array) : contains values of +1 or -1 to identify polygons as cut or fill.
- Return type:
intersections (Point array)
- orangery.ops.geometry.extend(line, pt, prepend)#
Extends a LineString by one Point, which may be prepended at the start of the LineString, or appended at the end.
- Parameters:
line (LineString) – the line to extend.
pt (Point) – the coordinate to extend to.
prepend (bool) – if True then prepend, else append.
- Returns:
the extended LineString.
- Return type:
newline (LineString)
- orangery.ops.geometry.project(p1, p2, p3)#
Project a Point, p3 onto a line between Points p1 and p2.
Uses Shapely and GEOS functions, which set distance to zero for all negative distances.
- Parameters:
p1 (Point) – point at zero distance on line between p1 and p2.
p2 (Point) – endpoint of line.
p3 (Point) – the point to project.
- Returns:
the projected Point, disctance along line, offset from line, and fractional distance along line.
- Return type:
result (dict)
- orangery.ops.geometry.project2(p1, p2, p3)#
Project a Point, p3 onto a line intersecting Points p1 and p2.
Adapted from tutorial by Paul Bourke: http://paulbourke.net/geometry/pointline/ This projection function allows for points at negative distances.
- Parameters:
p1 (Point) – point at zero distance on line between p1 and p2.
p2 (Point) – endpoint on line.
p3 (Point) – the point to project.
- Returns:
the projected Point, distance along line, offset from line, and fractional distance along line.
- Return type:
result (dict)
- orangery.ops.geometry.project_points(points, p1, p2)#
Project multiple points onto a line through Points p1, p2.
- Parameters:
points (pandas.DataFrame) – survey data to project.
p1 (Point) – point at zero distance on line between p1 and p2.
p2 (Point) – endpoint of line.
- Returns:
DataFrame of projected points, including x, y, z, distance along line, offset from line, and fractional distance along line.
- Return type:
result (DataFrame)
- orangery.ops.geometry.sign(polygon, line)#
- Parameters:
polygon (Polygon) –
line (LineString) –
- Return type:
int
- orangery.ops.geometry.snap_to_points(segments, intersections)#
Snap line segment endpoints to given points
Compare segment endpoints in a MultiLineString against points in a Point array to within a given precision; if the points match then update the segment endpoint with the coordinate given in the Point array.
- Parameters:
segments (MultiLineString) – the line segments to snap.
intersections (Point array) – the points to snap to.
- Returns:
an updated MultiLineString.
- Return type:
newline (MultiLineString)
- orangery.ops.geometry.update(line, pt, idx)#
Update a point within a LineString
- Parameters:
line (LineString) – the line to update.
pt (Point) – the new coordinate.
idx (int) – the integer index of the vertex to update.
- Returns:
the updated LineString.
- Return type:
newline (LineString)
text
Module#
- orangery.ops.text.parse(points, codebook)#
Parses the codes in a DataFrame to extract information about points and chains of points.
- Parameters:
points (DataFrame) – contains the survey data.
codebook (dict) – a dict that describes the codes used in the survey.
- Returns:
- Describes the points and chains of points. Column names match keys in the codes sub-dict,
the added group column currently comes from the ‘comment’ field at each start command.
- Return type:
df (DataFrame)
correction
Module#
Functions to translate coordinates
- orangery.ops.correction.get_offsets(df, coords)#
Calulate the x,y,z offsets between a dataframe record, and an array of x,y,z coordinates.
- Parameters:
df (DataFrame) –
- Return type:
None | list[float]
- orangery.ops.correction.translate(df, offsets)#
Translate the x,y,z coordinates for records in a dataframe by an array of offsets.
- Parameters:
df (DataFrame) –
- Return type:
DataFrame