protocol
geospatial_protocol
Geospatial predicates protocol.
logtalk_load(geospatial(loader))staticPublic predicates
valid_coordinate/1
True if the argument is a valid geographic coordinate represented as (Latitude,Longitude) with latitude in the [-90.0,90.0] range and longitude in the [-180.0,180.0] range.
staticvalid_coordinate(Coordinate)valid_coordinate(@compound) - zero_or_onenormalize_coordinate/2
Normalizes a coordinate by wrapping longitude to the [-180.0,180.0] range and reflecting latitude over the poles when necessary.
staticnormalize_coordinate(Coordinate,NormalizedCoordinate)normalize_coordinate(+compound,-compound) - oneequirectangular_projection/4
Projects a coordinate to local equirectangular planar coordinates in kilometers using a reference latitude in degrees.
staticequirectangular_projection(Coordinate,ReferenceLatitude,X,Y)equirectangular_projection(+compound,+float,-float,-float) - zero_or_oneequirectangular_inverse/4
Converts local equirectangular planar coordinates in kilometers to a geographic coordinate using a reference latitude in degrees.
staticequirectangular_inverse(X,Y,ReferenceLatitude,Coordinate)equirectangular_inverse(+float,+float,+float,-compound) - zero_or_onehaversine_distance/3
Computes the great-circle distance in kilometers between two coordinates using the Haversine formula.
statichaversine_distance(Coordinate1,Coordinate2,Distance)haversine_distance(+compound,+compound,-float) - zero_or_onevincenty_distance/3
Computes the geodesic distance in kilometers between two coordinates using the Vincenty inverse formula over the WGS84 ellipsoid. Fails if the iterative method does not converge.
staticvincenty_distance(Coordinate1,Coordinate2,Distance)vincenty_distance(+compound,+compound,-float) - zero_or_onerhumb_distance/3
Computes the rhumb-line (loxodrome) distance in kilometers between two coordinates on a spherical Earth model.
staticrhumb_distance(Coordinate1,Coordinate2,Distance)rhumb_distance(+compound,+compound,-float) - zero_or_onerhumb_bearing/3
Computes the rhumb-line initial bearing in degrees in the [0.0,360.0[ range from the first coordinate to the second coordinate.
staticrhumb_bearing(Coordinate1,Coordinate2,Bearing)rhumb_bearing(+compound,+compound,-float) - zero_or_onerhumb_destination_point/4
Computes the destination coordinate from a start coordinate, a rhumb-line bearing in degrees, and a distance in kilometers on a spherical Earth model.
staticrhumb_destination_point(Start,Bearing,Distance,Destination)rhumb_destination_point(+compound,+float,+float,-compound) - zero_or_oneinterpolate_rhumb/4
Computes an intermediate coordinate along the rhumb-line path between two coordinates using a fraction in the [0.0,1.0] range.
staticinterpolate_rhumb(Coordinate1,Coordinate2,Fraction,Coordinate)interpolate_rhumb(+compound,+compound,+float,-compound) - zero_or_onerhumb_midpoint/3
Computes the midpoint along the rhumb-line path between two coordinates.
staticrhumb_midpoint(Coordinate1,Coordinate2,Midpoint)rhumb_midpoint(+compound,+compound,-compound) - zero_or_onedistance/4
Computes the distance in kilometers between two coordinates using a selected metric. Supported metrics are haversine, vincenty, and rhumb.
staticdistance(Coordinate1,Coordinate2,Metric,Distance)distance(+compound,+compound,+atom,-float) - zero_or_onedistance/5
Computes the distance between two coordinates using a selected metric and output unit. Supported metrics are haversine, vincenty, and rhumb. Valid Unit argument values are kilometers, meters, miles, and nautical_miles.
staticdistance(Coordinate1,Coordinate2,Metric,Unit,Distance)distance(+compound,+compound,+atom,+atom,-float) - zero_or_oneinitial_bearing/3
Computes the initial bearing in degrees in the [0.0,360.0[ range from the first coordinate to the second coordinate.
staticinitial_bearing(Coordinate1,Coordinate2,Bearing)initial_bearing(+compound,+compound,-float) - zero_or_onefinal_bearing/3
Computes the final bearing in degrees in the [0.0,360.0[ range when arriving at the second coordinate from the first coordinate.
staticfinal_bearing(Coordinate1,Coordinate2,Bearing)final_bearing(+compound,+compound,-float) - zero_or_onemidpoint/3
Computes the geographic midpoint between two coordinates using a spherical Earth model.
staticmidpoint(Coordinate1,Coordinate2,Midpoint)midpoint(+compound,+compound,-compound) - zero_or_onedestination_point/4
Computes the destination coordinate from a start coordinate, an initial bearing in degrees, and a distance in kilometers using a spherical Earth model.
staticdestination_point(Start,Bearing,Distance,Destination)destination_point(+compound,+float,+float,-compound) - zero_or_oneinterpolate_great_circle/4
Computes an intermediate coordinate along the great-circle path between two coordinates using a fraction in the [0.0,1.0] range.
staticinterpolate_great_circle(Coordinate1,Coordinate2,Fraction,Coordinate)interpolate_great_circle(+compound,+compound,+float,-compound) - zero_or_onecross_track_distance/4
Computes the signed cross-track distance in kilometers from a coordinate to the great-circle path defined by a start and end coordinate.
staticcross_track_distance(Coordinate,Start,End,Distance)cross_track_distance(+compound,+compound,+compound,-float) - zero_or_onealong_track_distance/4
Computes the along-track distance in kilometers from the start coordinate to the closest point to a coordinate on the great-circle path defined by a start and end coordinate.
staticalong_track_distance(Coordinate,Start,End,Distance)along_track_distance(+compound,+compound,+compound,-float) - zero_or_onewithin_distance/4
True when the distance between two coordinates is less than or equal to the given radius in kilometers using the selected metric.
staticwithin_distance(Coordinate1,Coordinate2,Radius,Metric)within_distance(+compound,+compound,+float,+atom) - zero_or_onenearest_coordinate/5
Finds the nearest coordinate to the origin coordinate in a list using the selected metric, returning the nearest coordinate and distance in kilometers.
staticnearest_coordinate(Origin,Coordinates,Metric,Nearest,Distance)nearest_coordinate(+compound,+list(compound),+atom,-compound,-float) - zero_or_onemean_center/2
Computes the arithmetic mean center of a list of one or more coordinates.
staticmean_center(Coordinates,Center)mean_center(+list(compound),-compound) - zero_or_oneminimum_enclosing_circle/3
Computes an approximate minimum enclosing circle for a list of one or more coordinates, returning the circle center coordinate and radius in kilometers.
staticminimum_enclosing_circle(Coordinates,Center,Radius)minimum_enclosing_circle(+list(compound),-compound,-float) - zero_or_onecoordinates_bounding_box/2
Computes the axis-aligned latitude/longitude bounding box for a list of one or more coordinates.
staticcoordinates_bounding_box(Coordinates,BoundingBox)coordinates_bounding_box(+list(compound),-compound) - zero_or_onepoint_in_polygon/2
True when a coordinate is inside (or on the boundary of) a polygon represented as a list of coordinates. Uses a planar ray-casting algorithm over latitude/longitude coordinates.
staticpoint_in_polygon(Point,Polygon)point_in_polygon(+compound,+list(compound)) - zero_or_onepolygon_area/2
Computes an approximate polygon area in square kilometers by projecting coordinates to a local equirectangular plane and applying the shoelace formula.
staticpolygon_area(Polygon,Area)polygon_area(+list(compound),-float) - zero_or_onepolygon_centroid/2
Computes an approximate polygon centroid by using a local equirectangular projection and planar centroid formula.
staticpolygon_centroid(Polygon,Centroid)polygon_centroid(+list(compound),-compound) - zero_or_onepolygon_bounding_box/2
Computes the axis-aligned latitude/longitude bounding box for a polygon represented as a list of coordinates.
staticpolygon_bounding_box(Polygon,BoundingBox)polygon_bounding_box(+list(compound),-compound) - zero_or_oneclose_polygon/2
Returns a closed polygon ring by ensuring the first coordinate is repeated at the end of the list.
staticclose_polygon(Polygon,ClosedPolygon)close_polygon(+list(compound),-list(compound)) - zero_or_onepolygon_orientation/2
Computes polygon ring orientation as clockwise or counterclockwise using a local projected signed area approximation.
staticpolygon_orientation(Polygon,Orientation)polygon_orientation(+list(compound),-atom) - zero_or_oneis_clockwise_polygon/1
True when a polygon ring orientation is clockwise.
staticis_clockwise_polygon(Polygon)is_clockwise_polygon(+list(compound)) - zero_or_onenormalize_polygon_orientation/3
Normalizes a polygon ring orientation to clockwise or counterclockwise.
staticnormalize_polygon_orientation(Polygon,Orientation,OrientedPolygon)normalize_polygon_orientation(+list(compound),+atom,-list(compound)) - zero_or_oneclockwise_polygon/2
Returns a polygon ring with clockwise orientation.
staticclockwise_polygon(Polygon,ClockwisePolygon)clockwise_polygon(+list(compound),-list(compound)) - zero_or_onecounterclockwise_polygon/2
Returns a polygon ring with counterclockwise orientation.
staticcounterclockwise_polygon(Polygon,CounterclockwisePolygon)counterclockwise_polygon(+list(compound),-list(compound)) - zero_or_oneis_valid_polygon/1
True when a polygon has at least three valid coordinates after normalizing optional closure.
staticis_valid_polygon(Polygon)is_valid_polygon(+list(compound)) - zero_or_onebbox_contains/2
True when a coordinate is inside or on the boundary of a bounding box term bbox((MinLatitude,MinLongitude),(MaxLatitude,MaxLongitude)).
staticbbox_contains(BoundingBox,Coordinate)bbox_contains(+compound,+compound) - zero_or_onebbox_intersects/2
True when two bounding boxes intersect or touch.
staticbbox_intersects(BoundingBox1,BoundingBox2)bbox_intersects(+compound,+compound) - zero_or_onebbox_union/3
Computes the minimal bounding box containing two bounding boxes.
staticbbox_union(BoundingBox1,BoundingBox2,BoundingBox)bbox_union(+compound,+compound,-compound) - zero_or_onebbox_expand/3
Expands a bounding box by a distance in kilometers on all sides using a local spherical approximation.
staticbbox_expand(BoundingBox,Distance,ExpandedBoundingBox)bbox_expand(+compound,+number,-compound) - zero_or_onebbox_from_coordinates/2
Computes a bounding box from a list of one or more coordinates.
staticbbox_from_coordinates(Coordinates,BoundingBox)bbox_from_coordinates(+list(compound),-compound) - zero_or_onepoint_to_polyline_distance/3
Computes the minimum distance in kilometers from a coordinate to a polyline with two or more coordinates.
staticpoint_to_polyline_distance(Point,Polyline,Distance)point_to_polyline_distance(+compound,+list(compound),-float) - zero_or_onenearest_point_on_segment/4
Computes the nearest coordinate on a segment to a coordinate using a local equirectangular approximation.
staticnearest_point_on_segment(Point,SegmentStart,SegmentEnd,NearestPoint)nearest_point_on_segment(+compound,+compound,+compound,-compound) - zero_or_onenearest_point_on_polyline/4
Computes the nearest coordinate on a polyline to a coordinate and the corresponding distance in kilometers.
staticnearest_point_on_polyline(Point,Polyline,NearestPoint,Distance)nearest_point_on_polyline(+compound,+list(compound),-compound,-float) - zero_or_onepolyline_length/2
Computes the polyline length in kilometers for a list of two or more coordinates using the default haversine metric.
staticpolyline_length(Coordinates,Length)polyline_length(+list(compound),-float) - zero_or_onepolyline_length/3
Computes the polyline length in kilometers for a list of two or more coordinates using the selected metric.
staticpolyline_length(Coordinates,Metric,Length)polyline_length(+list(compound),+atom,-float) - zero_or_onepolyline_simplify/3
Simplifies a polyline using the Douglas-Peucker algorithm with a tolerance in kilometers.
staticpolyline_simplify(Coordinates,Tolerance,SimplifiedCoordinates)polyline_simplify(+list(compound),+number,-list(compound)) - zero_or_onepolyline_split_at_distance/4
Splits a polyline at a distance in kilometers from its first coordinate, returning left and right polylines that share the split coordinate.
staticpolyline_split_at_distance(Coordinates,Distance,LeftCoordinates,RightCoordinates)polyline_split_at_distance(+list(compound),+number,-list(compound),-list(compound)) - zero_or_onepolyline_resample/3
Resamples a polyline using a fixed step in kilometers, preserving first and last coordinates.
staticpolyline_resample(Coordinates,Step,ResampledCoordinates)polyline_resample(+list(compound),+number,-list(compound)) - zero_or_onepolygon_perimeter/2
Computes the polygon perimeter in kilometers using the default haversine metric.
staticpolygon_perimeter(Polygon,Perimeter)polygon_perimeter(+list(compound),-float) - zero_or_onepolygon_perimeter/3
Computes the polygon perimeter in kilometers using the selected metric.
staticpolygon_perimeter(Polygon,Metric,Perimeter)polygon_perimeter(+list(compound),+atom,-float) - zero_or_onepolygons_intersect/2
True when two polygons intersect or one polygon is contained in the other.
staticpolygons_intersect(Polygon1,Polygon2)polygons_intersect(+list(compound),+list(compound)) - zero_or_onebounding_box/3
Computes a spherical bounding box around a center coordinate for a given radius in kilometers. The returned bounding box term is bbox((MinLatitude,MinLongitude),(MaxLatitude,MaxLongitude)).
staticbounding_box(Center,Radius,BoundingBox)bounding_box(+compound,+positive_number,-compound) - zero_or_oneroute_distance/2
Computes the route distance in kilometers for a list of two or more coordinates using the default haversine metric.
staticroute_distance(Coordinates,Distance)route_distance(+list(compound),-float) - zero_or_oneroute_distance/3
Computes the route distance in kilometers for a list of two or more coordinates using the selected metric. Supported metrics are haversine, vincenty, and rhumb.
staticroute_distance(Coordinates,Metric,Distance)route_distance(+list(compound),+atom,-float) - zero_or_oneroute_distance/4
Computes the route distance for a list of two or more coordinates using the selected metric and output unit. Supported metrics are haversine, vincenty, and rhumb. Valid Unit argument values are kilometers, meters, miles, and nautical_miles.
staticroute_distance(Coordinates,Metric,Unit,Distance)route_distance(+list(compound),+atom,+atom,-float) - zero_or_oneProtected predicates
(none)
Private predicates
(none)
Operators
(none)
See also