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_protocol

GeoJSON (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

Public predicates

.. 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)


Protected predicates

(none)

Private predicates

(none)

Operators

(none)

.. seealso::

:ref:`geojson <geojson/0>`, :ref:`json <json/0>`, :ref:`geospatial <geospatial/0>`