From 5963ee0e6dbc4ba0a2b56b09940255902577d32b Mon Sep 17 00:00:00 2001 From: Bengt Ljungquist Date: Wed, 23 Oct 2024 11:58:20 -0400 Subject: [PATCH] Coordinates and multiscale clarification. (#15) * Added packages * cleaned up example * Commit test * Added pre-commit hooks * Formatting * Updated example * Update package * Added multilevel metadata test * Bump version 0.1.8 -> 0.1.9 * Added mkdocstrings pip * Added trigger * Added handler * Added provenance * Added provenance * Added provenance * Added provenance * Added documentation and tests for provenance * Corrected string * Added TileJSON for MicroJSON * Added examples for tiling and description * Removed garbage files * Restructured tile examples * Updated TileJSON fields, added relative file URL * Bump version 0.1.9 -> 0.1.10 * Initial roadmap * Updated naming and documentation * Harmonized with OME NGFF multiscale * Reverted indexing in utils.py * Added hierarchies * Bump version 0.1.10 -> 0.1.11 * Updated packages * Corrected roadmap markdown * Added module examples * Moved module examples * Corrected model reference * Revised roadmap * Replaced GeoJSON objects to geojson-pydantic * Altered documentation after replacing GeoJSON * Clarified coordinates and multiscale definition. * Corrected documentation --------- Co-authored-by: Nicholas-Schaub --- docs/index.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/index.md b/docs/index.md index 82206f4..52ee242 100755 --- a/docs/index.md +++ b/docs/index.md @@ -21,9 +21,9 @@ A MicroJSON object may have a `"bbox"` property": A geometry object is a JSON object where the `type` member's value is one of the following strings: `"Point"`, `"MultiPoint"`, `"LineString"`, `"MultiLineString"`, `"Polygon"`, `"Rectangle"`, `"MultiPolygon"`, or `"GeometryCollection"`. -Each geometry object MUST have a `"coordinates"` member with an array value. The structure of the coordinates array depends on the geometry type. +Each geometry object MUST have a `"coordinates"` member with an array value. The structure of the coordinates array varies with the geometry type. The innermost point coordinates array MUST contain two or three (if 3D) numbers representing the X and Y (and Z) coordinates of the point in the image. These coordinates follow the same order as the axes in [Multiscale object](#multiscale-object). Please note that these coordinates differ from the GeoJSON specification, where the order is longitude, latitude, and optionally altitude. If no multiscale object is defined, the default coordinate system is assumed to be the same as the image coordinate system, using cartesian coordinates and pixels as units, with the origin at the top left corner of the image, and the x-axis pointing to the right and the y-axis pointing down. The z-axis points into the image, with the origin at the top left corner of the image. -- **Point**: The coordinates array must contain two or three (if 3D) numbers representing the X and Y (and Z) coordinates of the point in the image. A “Point” Geometry may have a radius, if indicating a circular object, with the value in pixels, specified as a member `“radius”` of the Geometry object. +- **Point**: Must be a single set of point coordinates. A “Point” Geometry may have a radius, if representing a circular object, with the value in pixels, specified as a member `“radius”` of the Geometry object. - **MultiPoint**: The coordinates array must be an array of point coordinates. @@ -31,7 +31,7 @@ Each geometry object MUST have a `"coordinates"` member with an array value. The - **MultiLineString**: The coordinates array must be an array of LineString coordinate arrays. -- **Polygon**: The coordinates array must be an array of linear ring coordinate arrays, where the first linear ring represents the outer boundary and any additional rings represent holes within the polygon. +- **Polygon**: The coordinates array must be an array of linear ring point coordinate arrays, where the first linear ring represents the outer boundary and any additional rings represent holes within the polygon. - A subtype of “Polygon” is the “Rectangle” geometry: A polygon with an array of four 2D point coordinates representing the corners of the rectangle in a counterclockwise order. It has the property subtype with the value `“Rectangle”`. @@ -82,7 +82,7 @@ A FeatureCollection object is a JSON object representing a collection of feature A multiscale object represents the choice of axes (2-5D) and potentially their transformations that should be applied to the numerical data in order to arrive to the actual size of the object described. It MUST have the following properties: -- `"axes"`: Representing the choice of axes as an Axis object. +- `"axes"`: Representing the choice of axes as an array of Axis objects. It may contain either of, but NOT both of the following properties: - `"coordinateTransformations"`: Representing the set of coordinate transformations that should be applied to the numerical data in order to arrive to the actual size of the object described. It MUST be an array of objects, each object representing a coordinate transformation. Each object MUST have properties as follows: @@ -92,10 +92,11 @@ It may contain either of, but NOT both of the following properties: ### Axis Object -An axis object represents the choice of axes (2D or 3D). It MUST have the following properties: +Together with the other axes in the axes array, an axis object represents the coordinate system of the MicroJSON object (2D-5D) +It MUST have the following properties: - `"name"`: Representing the name of the axis. It MUST be a string. It may contain the following properties: -- `"unit"`: Representing the units of the corresponding axis in the axes property. It MUST be an array with the elements having any of the following values: `[“angstrom", "attometer", "centimeter", "decimeter", "exameter", "femtometer", "foot", "gigameter", "hectometer", "inch", "kilometer", "megameter", "meter", "micrometer", "mile", "millimeter", "nanometer", "parsec", "petameter", "picometer", "terameter", "yard", "yoctometer", "yottameter", "zeptometer", "zettameter“]` +- `"unit"`: Representing the units of the corresponding axis of the geometries in the MicroJSON object. It MUST be an array with the elements having any of the following values: `[“angstrom", "attometer", "centimeter", "decimeter", "exameter", "femtometer", "foot", "gigameter", "hectometer", "inch", "kilometer", "megameter", "meter", "micrometer", "mile", "millimeter", "nanometer", "parsec", "petameter", "picometer", "terameter", "yard", "yoctometer", "yottameter", "zeptometer", "zettameter“]` - `"description"`: A string describing the axis.