From 3b17bfe3704ae2eeb4d679a386bd35716d2f7ca1 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Tue, 25 Oct 2022 17:57:30 +0200 Subject: [PATCH 1/5] Update JSON Schema and data types #128, 129 --- format-specs/geoparquet.md | 14 ++-- format-specs/schema.json | 144 +++++++++++++++++-------------------- 2 files changed, 74 insertions(+), 84 deletions(-) diff --git a/format-specs/geoparquet.md b/format-specs/geoparquet.md index a2c2f37..34a3578 100644 --- a/format-specs/geoparquet.md +++ b/format-specs/geoparquet.md @@ -31,7 +31,7 @@ All file-level metadata should be included under the "geo" key in the parquet me | ------------------ | ------ | -------------------------------------------------------------------- | | version | string | **REQUIRED** The version of the geoparquet metadata standard used when writing. | | primary_column | string | **REQUIRED** The name of the "primary" geometry column. | -| columns | Map | **REQUIRED** Metadata about geometry columns, with each key is the name of a geometry column in the table. | +| columns | Map\ | **REQUIRED** Metadata about geometry columns. Each key is the name of a geometry column in the table. | At this level, additional implementation-specific fields (e.g. library name) are allowed, and thus readers should be robust in ignoring those. @@ -52,13 +52,13 @@ Each geometry column in the dataset must be included in the columns field above | Field Name | Type | Description | | --- | --- | --- | -| encoding | string | **REQUIRED** Name of the geometry encoding format. Currently only 'WKB' is supported. | -| geometry_type | string or \[string] | **REQUIRED** The geometry type(s) of all geometries, or 'Unknown' if they are not known. | -| crs | JSON object | **OPTIONAL** [PROJJSON](https://proj.org/specifications/projjson.html) JSON object representing the Coordinate Reference System (CRS) of the geometry. If the crs field is not included then the data in this column must be stored in longitude, latitude based on the WGS84 datum, and CRS-aware implementations should assume a default value of [OGC:CRS84](https://www.opengis.net/def/crs/OGC/1.3/CRS84). | -| orientation | string | **OPTIONAL** Winding order of exterior ring of polygons. If present must be 'counterclockwise'; interior rings are wound in opposite order. If absent, no assertions are made regarding the winding order. | -| edges | string | **OPTIONAL** Name of the coordinate system for the edges. Must be one of 'planar' or 'spherical'. The default value is 'planar'. | +| encoding | string | **REQUIRED** Name of the geometry encoding format. Currently only `WKB` is supported. | +| geometry_type | string or \[string] | **REQUIRED** The geometry type(s) of all geometries, or `Unknown` if they are not known. | +| crs | object | **OPTIONAL** [PROJJSON](https://proj.org/specifications/projjson.html) JSON object representing the Coordinate Reference System (CRS) of the geometry. If the crs field is not included then the data in this column must be stored in longitude, latitude based on the WGS84 datum, and CRS-aware implementations should assume a default value of [OGC:CRS84](https://www.opengis.net/def/crs/OGC/1.3/CRS84). | +| orientation | string | **OPTIONAL** Winding order of exterior ring of polygons. If present must be `counterclockwise`; interior rings are wound in opposite order. If absent, no assertions are made regarding the winding order. | +| edges | string | **OPTIONAL** Name of the coordinate system for the edges. Must be one of `planar` or `spherical`. The default value is 'planar'. | | bbox | \[number] | **OPTIONAL** Bounding Box of the geometries in the file, formatted according to [RFC 7946, section 5](https://tools.ietf.org/html/rfc7946#section-5). | -| epoch | double | **OPTIONAL** Coordinate epoch in case of a dynamic CRS, expressed as a decimal year. | +| epoch | number | **OPTIONAL** Coordinate epoch in case of a dynamic CRS, expressed as a decimal year. | #### crs diff --git a/format-specs/schema.json b/format-specs/schema.json index 70ee64a..0a60569 100644 --- a/format-specs/schema.json +++ b/format-specs/schema.json @@ -3,6 +3,7 @@ "title": "GeoParquet", "type": "object", "description": "Parquet metadata included in the geo field.", + "required": ["version", "primary_column", "columns"], "properties": { "version": { "type": "string", @@ -11,95 +12,84 @@ }, "primary_column": { "type": "string", - "description": "The name of the 'primary' geometry column." + "description": "The name of the 'primary' geometry column.", + "minLength": 1 }, "columns": { "type": "object", - "description": "Metadata about geometry columns, with each key is the name of a geometry column in the table.", - "patternProperties": { - ".*": { - "type": "object", - "properties": { - "encoding": { - "type": "string", - "enum": ["WKB"], - "description": "Name of the geometry encoding format. Currently only 'WKB' is supported." - }, - "geometry_type": { - "oneOf": [ - { - "$ref": "#/$defs/geometry_type" - }, - { - "type": "array", - "items": { - "$ref": "#/$defs/geometry_type" - }, - "uniqueItems": true - } - ], - "description": "The geometry type(s) of all geometries, or 'Unknown' if they are not known." - }, - "crs": { - "oneOf": [ - { - "$ref": "https://proj.org/schemas/v0.4/projjson.schema.json" - }, - { - "type": "null" - } - ], - "description": "JSON object representing the Coordinate Reference System (CRS) of the geometry. If the crs field is not included then the data in this column must be stored in longitude, latitude based on the WGS84 datum, and CRS-aware implementations should assume a default value of OGC:CRS84." - }, - "edges": { - "type": "string", - "enum": ["planar", "spherical"], - "description": "Name of the coordinate system for the edges. Must be one of 'planar' or 'spherical'. The default value is 'planar'." - }, - "orientation": { - "type": "string", - "enum": ["counterclockwise"], - "description": "Winding order of exterior ring of polygons; interior rings are wound in opposite order. If absent, no assertions are made regarding the winding order." - }, - "bbox": { - "type": "array", - "description": "Bounding Box of the geometries in the file, formatted according to RFC 7946, section 5.", - "items": [ - { - "type": "number", - "description": "The westmost constant longitude line that bounds the rectangle (xmin)." - }, - { - "type": "number", - "description": "The minimum constant latitude line that bounds the rectangle (ymin)." - }, - { - "type": "number", - "description": "The eastmost constant longitude line that bounds the rectangle (xmax)." + "description": "Metadata about geometry columns. Each key is the name of a geometry column in the table.", + "additionalProperties": { + "type": "object", + "required": ["encoding", "geometry_type"], + "properties": { + "encoding": { + "type": "string", + "const": "WKB", + "description": "Name of the geometry encoding format. Currently only 'WKB' is supported." + }, + "geometry_type": { + "oneOf": [ + { + "type": "string", + "const": "Unknown" + }, + { + "$ref": "#/definitions/geometry_type" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/geometry_type" }, - { - "type": "number", - "description": "The maximum constant latitude line that bounds the rectangle (ymax)." - } - ] + "uniqueItems": true + } + ], + "description": "The geometry type(s) of all geometries, or 'Unknown' if they are not known." + }, + "crs": { + "$ref": "https://proj.org/schemas/v0.5/projjson.schema.json" + }, + "edges": { + "type": "string", + "enum": ["planar", "spherical"], + "description": "Name of the coordinate system for the edges. Must be one of 'planar' or 'spherical'. The default value is 'planar'." + }, + "orientation": { + "type": "string", + "const": "counterclockwise", + "description": "Winding order of exterior ring of polygons; interior rings are wound in opposite order. If absent, no assertions are made regarding the winding order." + }, + "bbox": { + "type":"array", + "description": "Bounding Box of the geometries in the file, formatted according to RFC 7946, section 5.", + "items":{ + "type":"number" }, - "epoch": { - "type": "number", - "description": "Coordinate epoch in case of a dynamic CRS, expressed as a decimal year." - } + "oneOf":[ + { + "description": "2D bbox consisting of (xmin, ymin, xmax, ymax)", + "minItems":4, + "maxItems":4 + }, + { + "description": "3D bbox consisting of (xmin, ymin, zmin, xmax, ymax, zmax)", + "minItems":6, + "maxItems":6 + } + ] }, - "additionalProperties": true, - "required": ["encoding", "geometry_type"] + "epoch": { + "type": "number", + "description": "Coordinate epoch in case of a dynamic CRS, expressed as a decimal year." + } } } } }, - "additionalProperties": true, - "required": ["version", "primary_column", "columns"], - "$defs": { + "definitions": { "geometry_type": { "type": "string", - "enum": ["Point", "LineString", "Polygon", "MultiPoint", "MultiLineString", "MultiPolygon", "GeometryCollection", "Unknown"] + "pattern": "^(GeometryCollection|(Multi)?(Point|LineString|Polygon))( Z)?$" } } } From 6f76f19357aea7222497e8935553d311e7f0c15d Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Tue, 25 Oct 2022 18:53:40 +0200 Subject: [PATCH 2/5] Allow null for crs again and clarify the data types in the table --- format-specs/geoparquet.md | 2 +- format-specs/schema.json | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/format-specs/geoparquet.md b/format-specs/geoparquet.md index 34a3578..fee726d 100644 --- a/format-specs/geoparquet.md +++ b/format-specs/geoparquet.md @@ -54,7 +54,7 @@ Each geometry column in the dataset must be included in the columns field above | --- | --- | --- | | encoding | string | **REQUIRED** Name of the geometry encoding format. Currently only `WKB` is supported. | | geometry_type | string or \[string] | **REQUIRED** The geometry type(s) of all geometries, or `Unknown` if they are not known. | -| crs | object | **OPTIONAL** [PROJJSON](https://proj.org/specifications/projjson.html) JSON object representing the Coordinate Reference System (CRS) of the geometry. If the crs field is not included then the data in this column must be stored in longitude, latitude based on the WGS84 datum, and CRS-aware implementations should assume a default value of [OGC:CRS84](https://www.opengis.net/def/crs/OGC/1.3/CRS84). | +| crs | object\|null | **OPTIONAL** [PROJJSON](https://proj.org/specifications/projjson.html) JSON object representing the Coordinate Reference System (CRS) of the geometry. If the crs field is not included then the data in this column must be stored in longitude, latitude based on the WGS84 datum, and CRS-aware implementations should assume a default value of [OGC:CRS84](https://www.opengis.net/def/crs/OGC/1.3/CRS84). `null` indicates that there is no CRS assigned. | | orientation | string | **OPTIONAL** Winding order of exterior ring of polygons. If present must be `counterclockwise`; interior rings are wound in opposite order. If absent, no assertions are made regarding the winding order. | | edges | string | **OPTIONAL** Name of the coordinate system for the edges. Must be one of `planar` or `spherical`. The default value is 'planar'. | | bbox | \[number] | **OPTIONAL** Bounding Box of the geometries in the file, formatted according to [RFC 7946, section 5](https://tools.ietf.org/html/rfc7946#section-5). | diff --git a/format-specs/schema.json b/format-specs/schema.json index 0a60569..f960b46 100644 --- a/format-specs/schema.json +++ b/format-specs/schema.json @@ -47,7 +47,15 @@ "description": "The geometry type(s) of all geometries, or 'Unknown' if they are not known." }, "crs": { - "$ref": "https://proj.org/schemas/v0.5/projjson.schema.json" + "oneOf": [ + { + "$ref": "https://proj.org/schemas/v0.5/projjson.schema.json" + }, + { + "type": "null" + } + ], + "description": "JSON object representing the Coordinate Reference System (CRS) of the geometry. If the crs field is not included then the data in this column must be stored in longitude, latitude based on the WGS84 datum, and CRS-aware implementations should assume a default value of OGC:CRS84." }, "edges": { "type": "string", From 93e02e540fad56586484c6338b397fcbd78cb86c Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Mon, 5 Dec 2022 16:16:09 +0100 Subject: [PATCH 3/5] Update to latest changes --- format-specs/geoparquet.md | 24 +++---- format-specs/schema.json | 124 ++++++++++++++++--------------------- 2 files changed, 67 insertions(+), 81 deletions(-) diff --git a/format-specs/geoparquet.md b/format-specs/geoparquet.md index 226901f..26a9f4e 100644 --- a/format-specs/geoparquet.md +++ b/format-specs/geoparquet.md @@ -37,9 +37,9 @@ All file-level metadata should be included under the "geo" key in the parquet me | Field Name | Type | Description | | ------------------ | ------ | -------------------------------------------------------------------- | -| version | string | **REQUIRED** The version of the GeoParquet metadata standard used when writing. | -| primary_column | string | **REQUIRED** The name of the "primary" geometry column. | -| columns | object | **REQUIRED** Metadata about geometry columns, with each key is the name of a geometry column in the table. | +| version | string | **REQUIRED** The version of the GeoParquet metadata standard used when writing. | +| primary_column | string | **REQUIRED** The name of the "primary" geometry column. | +| columns | object\ | **REQUIRED** Metadata about geometry columns. Each key is the name of a geometry column in the table. | At this level, additional implementation-specific fields (e.g. library name) are allowed, and thus readers should be robust in ignoring those. @@ -58,15 +58,15 @@ Version of the GeoParquet spec used, currently 0.4.0 Each geometry column in the dataset must be included in the columns field above with the following content, keyed by the column name: -| Field Name | Type | Description | -| --- | --- | --- | -| encoding | string | **REQUIRED** Name of the geometry encoding format. Currently only `"WKB"` is supported. | -| geometry_types | \[string] | **REQUIRED** The geometry types of all geometries, or an empty array if they are not known. | -| crs | object | **OPTIONAL** [PROJJSON](https://proj.org/specifications/projjson.html) object representing the Coordinate Reference System (CRS) of the geometry. If the crs field is not included then the data in this column must be stored in longitude, latitude based on the WGS84 datum, and CRS-aware implementations should assume a default value of [OGC:CRS84](https://www.opengis.net/def/crs/OGC/1.3/CRS84). | -| orientation | string | **OPTIONAL** Winding order of exterior ring of polygons. If present must be `"counterclockwise"`; interior rings are wound in opposite order. If absent, no assertions are made regarding the winding order. | -| edges | string | **OPTIONAL** Name of the coordinate system for the edges. Must be one of `"planar"` or `"spherical"`. The default value is `"planar"`. | -| bbox | \[number] | **OPTIONAL** Bounding Box of the geometries in the file, formatted according to [RFC 7946, section 5](https://tools.ietf.org/html/rfc7946#section-5). | -| epoch | number | **OPTIONAL** Coordinate epoch in case of a dynamic CRS, expressed as a decimal year. | +| Field Name | Type | Description | +| -------------- | ------------ | ----------- | +| encoding | string | **REQUIRED** Name of the geometry encoding format. Currently only `"WKB"` is supported. | +| geometry_types | \[string] | **REQUIRED** The geometry types of all geometries, or an empty array if they are not known. | +| crs | object\|null | **OPTIONAL** [PROJJSON](https://proj.org/specifications/projjson.html) object representing the Coordinate Reference System (CRS) of the geometry. If the crs field is not included then the data in this column must be stored in longitude, latitude based on the WGS84 datum, and CRS-aware implementations should assume a default value of [OGC:CRS84](https://www.opengis.net/def/crs/OGC/1.3/CRS84). | +| orientation | string | **OPTIONAL** Winding order of exterior ring of polygons. If present must be `"counterclockwise"`; interior rings are wound in opposite order. If absent, no assertions are made regarding the winding order. | +| edges | string | **OPTIONAL** Name of the coordinate system for the edges. Must be one of `"planar"` or `"spherical"`. The default value is `"planar"`. | +| bbox | \[number] | **OPTIONAL** Bounding Box of the geometries in the file, formatted according to [RFC 7946, section 5](https://tools.ietf.org/html/rfc7946#section-5). | +| epoch | number | **OPTIONAL** Coordinate epoch in case of a dynamic CRS, expressed as a decimal year. | #### crs diff --git a/format-specs/schema.json b/format-specs/schema.json index 7474b82..d4b1c86 100644 --- a/format-specs/schema.json +++ b/format-specs/schema.json @@ -1,90 +1,76 @@ { "$schema": "http://json-schema.org/draft-07/schema#", "title": "GeoParquet", - "type": "object", "description": "Parquet metadata included in the geo field.", + "type": "object", + "required": ["version", "primary_column", "columns"], "properties": { "version": { "type": "string", - "const": "0.5.0-dev", - "description": "The version of the GeoParquet metadata standard used when writing." + "const": "0.5.0-dev" }, "primary_column": { - "type": "string", - "description": "The name of the 'primary' geometry column." + "type": "string" }, "columns": { "type": "object", - "description": "Metadata about geometry columns, with each key is the name of a geometry column in the table.", - "patternProperties": { - ".*": { - "type": "object", - "properties": { - "encoding": { + "additionalProperties": { + "type": "object", + "required": ["encoding", "geometry_types"], + "properties": { + "encoding": { + "type": "string", + "const": "WKB" + }, + "geometry_types": { + "type": "array", + "uniqueItems": true, + "items": { "type": "string", - "enum": ["WKB"], - "description": "Name of the geometry encoding format. Currently only 'WKB' is supported." - }, - "geometry_types": { - "description": "The geometry types of all geometries, or an empty array if they are not known.", - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^(GeometryCollection|(Multi)?(Point|LineString|Polygon))( Z)?$" + "pattern": "^(GeometryCollection|(Multi)?(Point|LineString|Polygon))( Z)?$" + } + }, + "crs": { + "oneOf": [ + { + "$ref": "https://proj.org/schemas/v0.4/projjson.schema.json" + }, + { + "type": "null" } + ] + }, + "edges": { + "type": "string", + "enum": ["planar", "spherical"] + }, + "orientation": { + "type": "string", + "const": "counterclockwise" + }, + "bbox": { + "type": "array", + "items": { + "type": "number" }, - "crs": { - "oneOf": [ - { - "$ref": "https://proj.org/schemas/v0.4/projjson.schema.json" - }, - { - "type": "null" - } - ], - "description": "JSON object representing the Coordinate Reference System (CRS) of the geometry. If the crs field is not included then the data in this column must be stored in longitude, latitude based on the WGS84 datum, and CRS-aware implementations should assume a default value of OGC:CRS84." - }, - "edges": { - "type": "string", - "enum": ["planar", "spherical"], - "description": "Name of the coordinate system for the edges. Must be one of 'planar' or 'spherical'. The default value is 'planar'." - }, - "orientation": { - "type": "string", - "enum": ["counterclockwise"], - "description": "Winding order of exterior ring of polygons; interior rings are wound in opposite order. If absent, no assertions are made regarding the winding order." - }, - "bbox": { - "type": "array", - "description": "Bounding Box of the geometries in the file, formatted according to RFC 7946, section 5.", - "items": { - "type": "number" + "oneOf": [ + { + "description": "2D bbox consisting of (xmin, ymin, xmax, ymax)", + "minItems": 4, + "maxItems": 4 }, - "oneOf": [ - { - "description": "2D bbox consisting of (xmin, ymin, xmax, ymax)", - "minItems": 4, - "maxItems": 4 - }, - { - "description": "3D bbox consisting of (xmin, ymin, zmin, xmax, ymax, zmax)", - "minItems": 6, - "maxItems": 6 - } - ] - }, - "epoch": { - "type": "number", - "description": "Coordinate epoch in case of a dynamic CRS, expressed as a decimal year." - } + { + "description": "3D bbox consisting of (xmin, ymin, zmin, xmax, ymax, zmax)", + "minItems": 6, + "maxItems": 6 + } + ] }, - "additionalProperties": true, - "required": ["encoding", "geometry_types"] + "epoch": { + "type": "number" + } } } } - }, - "additionalProperties": true, - "required": ["version", "primary_column", "columns"] + } } From 97d106d5088892d78e2e9b498a28a43bd50eaebd Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Mon, 5 Dec 2022 22:31:19 +0100 Subject: [PATCH 4/5] Require min length for column names, don't allow additional (invalid) columns --- format-specs/schema.json | 105 ++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 51 deletions(-) diff --git a/format-specs/schema.json b/format-specs/schema.json index da3b213..957ca73 100644 --- a/format-specs/schema.json +++ b/format-specs/schema.json @@ -15,63 +15,66 @@ }, "columns": { "type": "object", - "additionalProperties": { - "type": "object", - "required": ["encoding", "geometry_types"], - "properties": { - "encoding": { - "type": "string", - "const": "WKB" - }, - "geometry_types": { - "type": "array", - "uniqueItems": true, - "items": { + "patternProperties": { + ".+": { + "type": "object", + "required": ["encoding", "geometry_types"], + "properties": { + "encoding": { "type": "string", - "pattern": "^(GeometryCollection|(Multi)?(Point|LineString|Polygon))( Z)?$" - } - }, - "crs": { - "oneOf": [ - { - "$ref": "https://proj.org/schemas/v0.5/projjson.schema.json" - }, - { - "type": "null" + "const": "WKB" + }, + "geometry_types": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "pattern": "^(GeometryCollection|(Multi)?(Point|LineString|Polygon))( Z)?$" } - ] - }, - "edges": { - "type": "string", - "enum": ["planar", "spherical"] - }, - "orientation": { - "type": "string", - "const": "counterclockwise" - }, - "bbox": { - "type": "array", - "items": { - "type": "number" }, - "oneOf": [ - { - "description": "2D bbox consisting of (xmin, ymin, xmax, ymax)", - "minItems": 4, - "maxItems": 4 + "crs": { + "oneOf": [ + { + "$ref": "https://proj.org/schemas/v0.5/projjson.schema.json" + }, + { + "type": "null" + } + ] + }, + "edges": { + "type": "string", + "enum": ["planar", "spherical"] + }, + "orientation": { + "type": "string", + "const": "counterclockwise" + }, + "bbox": { + "type": "array", + "items": { + "type": "number" }, - { - "description": "3D bbox consisting of (xmin, ymin, zmin, xmax, ymax, zmax)", - "minItems": 6, - "maxItems": 6 - } - ] - }, - "epoch": { - "type": "number" + "oneOf": [ + { + "description": "2D bbox consisting of (xmin, ymin, xmax, ymax)", + "minItems": 4, + "maxItems": 4 + }, + { + "description": "3D bbox consisting of (xmin, ymin, zmin, xmax, ymax, zmax)", + "minItems": 6, + "maxItems": 6 + } + ] + }, + "epoch": { + "type": "number" + } } } - } + }, + "additionalProperties": false } } } From 55f1f464e4428a2bd5daa9d0ef840b616689ece6 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 5 Dec 2022 15:20:19 -0700 Subject: [PATCH 5/5] Update format-specs/geoparquet.md Co-authored-by: Matthias Mohr --- format-specs/geoparquet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/format-specs/geoparquet.md b/format-specs/geoparquet.md index 10ec12c..0f53384 100644 --- a/format-specs/geoparquet.md +++ b/format-specs/geoparquet.md @@ -62,7 +62,7 @@ Each geometry column in the dataset must be included in the columns field above | -------------- | ------------ | ----------- | | encoding | string | **REQUIRED** Name of the geometry encoding format. Currently only `"WKB"` is supported. | | geometry_types | \[string] | **REQUIRED** The geometry types of all geometries, or an empty array if they are not known. | -| crs | object\|null | **OPTIONAL** [PROJJSON](https://proj.org/specifications/projjson.html) object representing the Coordinate Reference System (CRS) of the geometry. If the crs field is not included then the data in this column must be stored in longitude, latitude based on the WGS84 datum, and CRS-aware implementations should assume a default value of [OGC:CRS84](https://www.opengis.net/def/crs/OGC/1.3/CRS84). | +| crs | object\|null | **OPTIONAL** [PROJJSON](https://proj.org/specifications/projjson.html) object representing the Coordinate Reference System (CRS) of the geometry. If the crs field is not included then the data in this column must be stored in longitude, latitude based on the WGS84 datum, and CRS-aware implementations should assume a default value of [OGC:CRS84](https://www.opengis.net/def/crs/OGC/1.3/CRS84). A value of `null` indicates that the CRS is undefined or unknown. | | orientation | string | **OPTIONAL** Winding order of exterior ring of polygons. If present must be `"counterclockwise"`; interior rings are wound in opposite order. If absent, no assertions are made regarding the winding order. | | edges | string | **OPTIONAL** Name of the coordinate system for the edges. Must be one of `"planar"` or `"spherical"`. The default value is `"planar"`. | | bbox | \[number] | **OPTIONAL** Bounding Box of the geometries in the file, formatted according to [RFC 7946, section 5](https://tools.ietf.org/html/rfc7946#section-5). |