Simple Features
Simple Features (SF) are OGC standards describing two dimensional geographic features, such as Points and Polygons and the relations between them. The standards describe a hierarchy of types (Part 1), a functional interface with SQL (Part II) and an SQL/MM extension with support for circular geometry types, such as Circularstring
.
Type hierarchy
All types used here come from the SF. We added Trait
to all geometry types here to distinguish them from actual geometry structs.
The SF Type hierarchy. From OpenGIS® Implementation Standard for Geographic information - Simple feature access - Part 1: Common architecture at http://www.opengis.net/doc/is/sfa/1.2.1.
Changes with respect to SF
While we try to adhere to SF, there are changes and extensions to make it more Julian.
Function names
All function names are without the ST_
prefix and are lowercased. In some cases the names have changed as well, to be inline with common Julia functions. NumX
becomes nx
and geomN
becomes getgeom
:
GeometryType -> geomtrait
NumGeometries -> ngeom
GeometryN -> getgeom
NumPatches -> npatch
# etc
We generalized ngeom
and getgeom
to apply to all geometries, not just a AbstractGeometryCollectionTrait
s.
We also simplified the dimension functions. From the three original (dimension
, coordinateDimension
, spatialDimension
) there's now only the coordinate dimension, by using ncoords
, which represent coordinate dimensions like X
, Y
, Z
and M
. Topological dimensions (a point is 0-dimensional), and the functions related to it, are not used in this interface to prevent confusion. Similarly, we do not overload the Julia ndims
, to prevent confusion and possible conflict with custom vector based geometries.
coordinateDimension -> ncoords # x, y, z, m
dimension -> unused
spatialDimension -> unused
We've generalized the naming of some functions:
SRID -> crs
envelope -> extent # also aliased to bbox
And added a helper method to clarify the naming of coordinates.
coordnames = (:X, :Y, :Z, :M)
Coverage
Not all SF functions are implemented, either as a possibly slower fallback or empty descriptor or not at all. The following SF functions are not (yet) available.
dimension # topological dimensions
spatialDimension
locateAlong
locateBetween