| Did you know ... | Search Documentation: |
| Pack logtalk -- logtalk-3.100.1/docs/apis/_sources/geojson_protocol_0.rst.txt |
.. index:: single: geojson_protocol .. _geojson_protocol/0:
.. rst-class:: right
protocol
geojson_protocolGeoJSON (RFC 7946) parser, generator, and validator protocol.
| Availability:
| logtalk_load(geojson(loader))
| Author: Paulo Moura | Version: 0:1:0 | Date: 2026-05-08
| Compilation flags:
| static
| Dependencies: | (none)
| Remarks: | (none)
| Inherited public predicates: | (none)
.. contents:: :local: :backlinks: top
.. index:: parse/2 .. _geojson_protocol/0::parse/2:
parse/2 ^^^^^^^^^^^
Parses a GeoJSON document from the given source (file(Path), stream(Stream), codes(List), chars(List), or atom(Atom)) into a native GeoJSON term.
| Compilation flags:
| static
| Template:
| parse(Source,Term)
| Mode and number of proofs:
| parse(++compound,--term) - one_or_error
| Exceptions:
| Source is a variable:
| instantiation_error
| Source is neither a variable nor a valid source:
| domain_error(geojson_source,Source)
| Parsed JSON does not represent a valid GeoJSON document:
| domain_error(geojson,Document)
.. index:: generate/2 .. _geojson_protocol/0::generate/2:
generate/2 ^^^^^^^^^^^^^^
Generates GeoJSON content using the representation specified in the first argument (file(Path), stream(Stream), codes(List), chars(List), or atom(Atom)) from a native GeoJSON term.
| Compilation flags:
| static
| Template:
| generate(Sink,Term)
| Mode and number of proofs:
| generate(+compound,++term) - one_or_error
| Exceptions:
| Sink is a variable:
| instantiation_error
| Sink is neither a variable nor a valid sink:
| domain_error(geojson_sink,Sink)
| Term is not a valid GeoJSON term:
| domain_error(geojson,Term)
.. index:: validate/1 .. _geojson_protocol/0::validate/1:
validate/1 ^^^^^^^^^^^^^^
True iff the argument is a valid native GeoJSON term according to RFC 7946.
| Compilation flags:
| static
| Template:
| validate(Term)
| Mode and number of proofs:
| validate(@term) - zero_or_one
.. index:: validate/2 .. _geojson_protocol/0::validate/2:
validate/2 ^^^^^^^^^^^^^^
Validates a native GeoJSON term returning a list of reason terms whose final argument is the failing path.
| Compilation flags:
| static
| Template:
| validate(Term,Errors)
| Mode and number of proofs:
| validate(@term,-list(compound)) - one_or_error
| Remarks:
invalid_geojson_term(Path): The term is not any supported GeoJSON geometry, feature, or feature collection representation.invalid_geometry(Path): A geometry member is neither a valid geometry term nor @null where @null is allowed.invalid_properties(Path): A feature properties member is neither @null nor a valid JSON object term in the selected representation.invalid_options(Path): The options argument is not a list.option_not_allowed(Name, Path): An option with the given name is not allowed for the enclosing GeoJSON term.duplicate_option(Name, Path): The same option name occurs more than once in the options list.unknown_option(Option, Path): An option term is not recognized as one of the supported options.invalid_bbox(Path): A bounding box is not a list of four or six numbers.bbox_longitude_out_of_range(Path): A bounding box longitude value lies outside the RFC 7946 range [-180,180].bbox_latitude_out_of_range(Path): A bounding box latitude value lies outside the RFC 7946 range [-90,90].bbox_latitude_order(Path): The south latitude value is greater than the north latitude value in a bounding box.bbox_altitude_order(Path): The minimum altitude value is greater than the maximum altitude value in a three-dimensional bounding box.bbox_dimension_mismatch(Actual, Expected, Path): A bounding box length does not match the dimensionality required by the represented geometry, feature, or collection.invalid_id(Path): A feature identifier is neither a number nor a valid string term in the selected representation.invalid_foreign_members(Path): Foreign members are not represented as a valid pair list or embedded JSON object term, or contain an invalid pair term.prohibited_member(Key, Path): A prohibited foreign member name such as crs was used.reserved_foreign_member(Key, Path): A reserved GeoJSON member name was used as a foreign member key.invalid_position(Path): A position is not a list of at least two numeric coordinates.position_longitude_out_of_range(Path): A position longitude value lies outside the RFC 7946 range [-180,180].position_latitude_out_of_range(Path): A position latitude value lies outside the RFC 7946 range [-90,90].invalid_json_object_pair(Path): A JSON object member is not represented using a supported key-value pair term.invalid_json_key(Path): A JSON object key is not a valid string term in the selected representation.duplicate_json_object_key(Key, Path): The same JSON object key occurs more than once in the same object.invalid_json_value(Path): A JSON value is not a number, boolean, null, valid string term, array, or object term.insufficient_positions(MinimumLength, Path): A coordinate array contains fewer positions than required for the enclosing geometry.invalid_position_array(Path): A coordinate array expected to contain positions is not a list of valid positions.inconsistent_position_dimension(Path): Positions in the same coordinate array do not all have the same dimensionality.invalid_line_string_array(Path): A MultiLineString coordinate array is not a valid list of line string coordinate arrays.invalid_polygon(Path): A polygon coordinate structure is invalid, for example because it is not a non-empty list of linear rings.ring_not_closed(Path): A linear ring does not repeat its first position as its last position.invalid_multi_polygon(Path): A MultiPolygon coordinate array is not a valid list of polygon coordinate arrays.invalid_geometry_collection(Path): A GeometryCollection geometries member is not a list.invalid_feature_collection(Path): A FeatureCollection features member is not a list.invalid_feature(Path): A value inside a FeatureCollection is not a valid feature term... index:: json_to_geojson/2 .. _geojson_protocol/0::json_to_geojson/2:
json_to_geojson/2 ^^^^^^^^^^^^^^^^^^^^^
Converts a JSON term, as returned by the json library, into a native GeoJSON term.
| Compilation flags:
| static
| Template:
| json_to_geojson(JSON,GeoJSON)
| Mode and number of proofs:
| json_to_geojson(+term,-term) - one_or_error
| Exceptions:
| JSON is a variable:
| instantiation_error
| JSON is not a valid GeoJSON JSON term:
| domain_error(geojson,JSON)
.. index:: geojson_to_json/2 .. _geojson_protocol/0::geojson_to_json/2:
geojson_to_json/2 ^^^^^^^^^^^^^^^^^^^^^
Converts a native GeoJSON term into a JSON term suitable for the json library.
| Compilation flags:
| static
| Template:
| geojson_to_json(GeoJSON,JSON)
| Mode and number of proofs:
| geojson_to_json(+term,-term) - one_or_error
| Exceptions:
| GeoJSON is a variable:
| instantiation_error
| GeoJSON is not a valid GeoJSON term:
| domain_error(geojson,GeoJSON)
(none)
(none)
(none)
.. seealso::
:ref:`geojson <geojson/0>`, :ref:`json <json/0>`, :ref:`geospatial <geospatial/0>`