

Line 462: 
Line 462: 
     
  width='90'  '''Signatures'''    width='90'  '''Signatures''' 
−  {{Funcgeo:z$point as element(*)xs:double}}  +  {{Funcgeo:z$point as element(*)xs:double?}} 
     
   
Revision as of 16:41, 24 January 2013
This XQuery Module contains functions that may be applied to geometry data conforming to the Open Geospatial Consortium (OGC) Simple Feature (SF) data model. It is based on the EXPath Geo Module and uses the JTS library.
Conventions
All functions in this module are assigned to the http://expath.org/ns/geo
namespace, which must be dynamically imported:
import module namespace geo = "http://expath.org/ns/geo";
...
In this documentation, the namespace is bound to the geo
prefix.
All errors are assigned to the http://expath.org/ns/error
namespace, which is statically bound to the experr
prefix.
General Functions
geo:dimension
Signatures

geo:dimension($geometry as element(*)) as xs:integer()

Summary

Returns the dimension of the given geometry $geometry .

Errors

GEO0001 : the given element is not recognized as a valid geometry.
GEO0002 : the given element cannot be read by reader for some reason.

geo:geometrytype
Signatures

geo:geometrytype($geometry as element(*)) as xs:QName()?

Summary

Returns the name of the geometry type of given geometry $geometry or an empty sequence, if the geometry is not recognized with an error massage.

Errors

GEO0001 : the given element is not recognized as a valid geometry.
GEO0002 : the given element cannot be read by reader for some reason.

geo:srid
Signatures

geo:srid($geometry as element(*)) as xs:integer

Summary

Returns the ID of the Spatial Reference System used by the given geometry $geometry . Spatial Reference System information is supported in the simple way defined in the SFS. A Spatial Reference System ID (SRID) is present in each Geometry object. Geometry provides basic accessor operations for this field, but no others. The SRID is represented as an integer (based on the OpenGIS Simple Features Specifications For SQL). Here is a difference between the EXPath Geo Module and the implementation in BaseX, since the specification return the URI.

Errors

GEO0001 : the given element is not recognized as a valid geometry.
GEO0002 : the given element cannot be read by reader for some reason.

geo:envelope
Signatures

geo:envelope($geometry as element(*)) as xs:element(*)

Summary

Returns the gml:Envelope of the given geometry $geometry . The envelope is the minimum bounding box of this geometry. If this Geometry is the empty geometry, returns an empty Point. If the Geometry is a point, returns a nonempty Point. Otherwise, returns a Polygon whose points are (minx, miny), (maxx, miny), (maxx, maxy), (minx, maxy), (minx, miny).

Errors

GEO0001 : the given element is not recognized as a valid geometry.
GEO0002 : the given element cannot be read by reader for some reason.
GEO0005 : the output object cannot be written as an element by writer for some reason.

geo:astext
Signatures

geo:astext($geometry as element(*)) as xs:string

Summary

Returns the WKT (Wellknown Text) representation of the given geometry $geometry . The envelope is the minimum bounding box of this geometry

Errors

GEO0001 : the given element is not recognized as a valid geometry.
GEO0002 : the given element cannot be read by reader for some reason.

geo:asbinary
Signatures

geo:asbinary($geometry as element(*)) as xs:base64Binary

Summary

Returns the WKB (Wellknown Binary) representation of the given geometry $geometry .

Errors

GEO0001 : the given element is not recognized as a valid geometry.
GEO0002 : the given element cannot be read by reader for some reason.

geo:issimple
Signatures

geo:issimple($geometry as element(*)) as xs:boolean

Summary

Returns whether the given geometry is simple $geometry and does not have has no anomalous geometric points (ie. the geometry does not selfintersect and does not pass through the same point more than once (may be a ring)).

Errors

GEO0001 : the given element is not recognized as a valid geometry.
GEO0002 : the given element cannot be read by reader for some reason.

geo:boundary
Signatures

geo:boundary($geometry as element(*)) as xs:element(*)?

Summary

Returns the boundary of the given geometry $geometry , in GML 2. The return value is a sequence of either gml:Point or gml:LinearRing elements as a GeometryCollection object. For a Point or MultiPoint, the boundary is the empty geometry, nothing is returned.

Errors

GEO0001 : the given element is not recognized as a valid geometry.
GEO0002 : the given element cannot be read by reader for some reason.
GEO0005 : the output object cannot be written as an element by writer for some reason.

geo:numgeometries
Signatures

geo:numgeometries($geometry as element(*)) as xs:integer

Summary

Returns the number of geometry in a geometrycollection $geometry , in GML. For the geometries which are not a collection, it returns the instant value 1. This function is implemented wider than the specification and accepts all types of geometries, while the specification limits it to the collection types (MultiPoint, MultiPolygon, ...).

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:geometryn
Signatures

geo:geometryn($geometry as element(*), $geoNumber as xs:integer) as element(*)

Summary

Returns the Nth geometry in geometrycollection $geometry , in GML. For the geometries which are not a collection, it returns the geometry if geoNumber $geoNumber is 1. This function is implemented wider than the specification and accepts all types of geometries, while the specification limits it to the collection types (MultiPoint, MultiPolygon, ...).

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0004 : the the input index of geometry is out of range.
GEO0005 : the output object cannot be written as an element by writer for some reason.

geo:length
Signatures

geo:length($geometry as element(*)) as xs:double

Summary

Returns the length of the line of the geometry $geometry . If the geometry is a point, zero value will be returned.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:numpoints
Signatures

geo:numpoints($geometry as element(*)) as xs:integer

Summary

Returns integer value of number of the points in the given geometry$geometry . It can be used not only for Lines, also any other geometry types, like MultiPolygon. For Point geometry it will return 1. This is an implementation different from the EXPath geo specification, as it limits the input geometry type only to lines.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:area
Signatures

geo:area($geometry as element(*)) as xs:double

Summary

Returns the area of the given geometry $geometry . For points and line the return value will be zero.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:centroid
Signatures

geo:centroid($geometry as element(*)) as element(gml:Point)

Summary

Returns the mathematical centroid of the given geometry $geometry , as a gml:Point. Based on the definition, this point is not always on the surface of the geometry $geometry .

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0005 : the output object cannot be written as an element by writer for some reason.

geo:pointonsurface
Signatures

geo:pointonsurface($geometry as element(*)) as element(gml:Point)

Summary

Returns an interior point on the given geometry $geometry , as a gml:Point. It is guaranteed to be on surface. Otherwise, the point may lie on the boundary of the geometry.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0005 : the output object cannot be written as an element by writer for some reason.

Spatial Predicate Functions
geo:equals
Signatures

geo:equals($geometry1 as element(*), $geometry2 as element(*)) as xs:boolean

Summary

Returns whether geometry1 $geometry1 is spatially equal to $geometry2 $geometry2 .

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:disjoint
Signatures

geo:disjoint($geometry1 as element(*), $geometry2 as element(*)) as xs:boolean

Summary

Returns whether geometry1 $geometry1 is spatially disjoint from $geometry2 $geometry2 (they have no point in common, they do not intersect each other, and the DE9IM Intersection Matrix for the two geometries is FF*FF****).

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:intersects
Signatures

geo:intersects($geometry1 as element(*), $geometry2 as element(*)) as xs:boolean

Summary

Returns whether geometry1 $geometry1 is spatially intersects $geometry2 $geometry2 . This is true if disjoint function of the two geometries returns false.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:touches
Signatures

geo:touches($geometry1 as element(*), $geometry2 as element(*)) as xs:boolean

Summary

Returns whether geometry1 $geometry1 is spatially touches $geometry2 $geometry2 .

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:crosses
Signatures

geo:crosses($geometry1 as element(*), $geometry2 as element(*)) as xs:boolean

Summary

Returns whether geometry1 $geometry1 is spatially crosses $geometry2 $geometry2 . It means, if the geometries have some but not all interior points in common. Returns true if the DE9IM intersection matrix for the two geometries is:
T*T****** (for P/L, P/A, and L/A situations)
T*****T** (for L/P, A/P, and A/L situations)
0******** (for L/L situations).

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:within
Signatures

geo:within($geometry1 as element(*), $geometry2 as element(*)) as xs:boolean

Summary

Returns whether geometry1 $geometry1 is spatially within $geometry2 $geometry2 .

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:contains
Signatures

geo:contains($geometry1 as element(*), $geometry2 as element(*)) as xs:boolean

Summary

Returns whether geometry1 $geometry1 is spatially contains $geometry2 $geometry2 . Returns true if within function of these two geometries also returns true.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:overlaps
Signatures

geo:overlaps($geometry1 as element(*), $geometry2 as element(*)) as xs:boolean

Summary

Returns whether geometry1 $geometry1 is spatially overlaps $geometry2 $geometry2 .

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:relate
Signatures

geo:relate($geometry1 as element(*), $geometry2 as element(*), $intersectionMatrix as xs:string) as xs:boolean

Summary

Returns whether relationships between the boundaries, interiors and exteriors of geometry1 $geometry1 and geometry2 $geometry2 match the pattern specified in intersectionMatrix $geometry2 , which should have the length of 9 charachters. The values in the DE9IM can be T, F, *, 0, 1, 2 .
 T means the intersection gives a nonempty result.
 F means the intersection gives an empty result.
 * means any result.
 0, 1, 2 gives the expected dimension of the result (point, curve, surface)

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

Analysis Functions
geo:distance
Signatures

geo:distance($geometry1 as element(*), $geometry2 as element(*)) as xs:double

Summary

Returns the shortest distance, in the units of the spatial reference system of geometry1 $geometry1 , between the geometries, where that distance is the distance between a point on each of the geometries.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:buffer
Signatures

geo:buffer($geometry as element(*), $distance as xs:double) as element(*)

Summary

Returns polygonal geometry representing the buffer by distance $distance of geometry $geometry a buffer area around this geometry having the given width, in the spatial reference system of geometry. The buffer of a Geometry is the Minkowski sum or difference of the geometry with a disc of radius abs(distance). The buffer is constructed using 8 segments per quadrant to represent curves.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0005 : the output object cannot be written as an element by writer for some reason.

geo:convexhull
Signatures

geo:convexhull($geometry as element(*)) as element(*)

Summary

Returns the convex hull geometry of the given geometry $geometry in GML, or the empty sequence. Actually returns the object of smallest dimension possible.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0005 : the output object cannot be written as an element by writer for some reason.

geo:intersection
Signatures

geo:intersection($geometry1 as element(*), $geometry2 as element(*)) as element(*)?

Summary

Returns the intersection geometry of geometry1 $geometry1 with geometry2 $geometry2 , in GML or empty sequence if there is no intersection of these geometries.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0005 : the output object cannot be written as an element by writer for some reason.

geo:union
Signatures

geo:union($geometry1 as element(*), $geometry2 as element(*)) as element(*)

Summary

Returns the union geometry of geometry1 $geometry1 with geometry2 $geometry2 , in GML.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0005 : the output object cannot be written as an element by writer for some reason.

geo:difference
Signatures

geo:difference($geometry1 as element(*), $geometry2 as element(*)) as element(*)?

Summary

Returns the difference geometry of geometry1 $geometry1 with geometry2 $geometry2 , in GML, or empty sequence if the difference is empty, as a set of point in geometry1 $geometry1 and not included in geometry2 $geometry2 .

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0005 : the output object cannot be written as an element by writer for some reason.

geo:symdifference
Signatures

geo:symdifference($geometry1 as element(*), $geometry2 as element(*)) as element(*)?

Summary

Returns the symmetric difference geometry of geometry1 $geometry1 with geometry2 $geometry2 , in GML, or empty sequence if the difference is empty, as a set of point in one of the geometries and not included in the other.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0005 : the output object cannot be written as an element by writer for some reason.

Functions Specific to Geometry Type
geo:x
Signatures

geo:x($point as element(*)) as xs:double

Summary

Returns the x coordinate of point $point . A point has to have an x coordinate.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:y
Signatures

geo:y($point as element(*)) as xs:double

Summary

Returns the y coordinate of point $point . If the point does not have the y coordinate, NaN will be returned.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:z
Signatures

geo:z($point as element(*)) as xs:double?

Summary

Returns the z coordinate of point $point . If the point does not have the y coordinate, NaN will be returned.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.

geo:startpoint
Signatures

geo:startpoint($line as element(*)) as element(gml:Point)

Summary

Returns the starting point of the given line $line . $line has to be a single line, LineString or LinearRing.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0003 : the given element has to be a line. Other geometries are not accepted.

geo:endpoint
Signatures

geo:endpoint($line as element(*)) as element(gml:Point)

Summary

Returns the ending point of the given line $line . $line has to be a single line, LineString or LinearRing.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0003 : the given element has to be a line. Other geometries are not accepted.

geo:isclosed
Signatures

geo:isclosed($line as element(*)) as xs:boolean

Summary

Returns a boolean value that shows the line $line is a closed loop (start point and end point are the same) or not. $line has to be a line, as a geometry, LineString or LinearRing, and MultiLineString.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0003 : the given element has to be a line. Other geometries are not accepted.

geo:isring
Signatures

geo:isring($line as element(*)) as xs:boolean

Summary

Returns a boolean value that shows the line $line is a ring (closed loop and single) or not. $line has to be a single line, as a geometry, LineString or LinearRing.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0003 : the given element has to be a line. Other geometries are not accepted.

geo:pointn
Signatures

geo:pointn($line as element(*)) as element(gml:Point)

Summary

Returns the Nth point in the given line $geometry . $line has to be a single line, as a geometry, LineString or LinearRing.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0003 : the given element has to be a line. Other geometries are not accepted.
GEO0004 : the the input index of geometry is out of range.
GEO0005 : the output object cannot be written as an element by writer for some reason.

geo:exteriorring
Signatures

geo:exteriorring($polygon as element(*)) as element(gml:LineString)

Summary

Returns the outer ring of the given polygon $geometry , as a gml:LineString.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0003 : the given element has to be a polygon. Other geometries are not accepted.
GEO0005 : the output object cannot be written as an element by writer for some reason.

geo:numinteriorring
Signatures

geo:numinteriorring($polygon as element(*)) as xs:integer

Summary

Returns the number of interior rings in the given polygon $geometry .

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0003 : the given element has to be a polygon. Other geometries are not accepted.

geo:interiorringn
Signatures

geo:interiorringn($polygon as element(*)) as element(gml:LineString)

Summary

Returns the outer ring of the given polygon $geometry , as a gml:LineString.

Errors

GEO0001 : the given element(s) is not recognized as a valid geometry (QName).
GEO0002 : the given element cannot be read by reader for some reason.
GEO0003 : the given element has to be a polygon. Other geometries are not accepted.
GEO0004 : the the input index of geometry is out of range.
GEO0005 : the output object cannot be written as an element by writer for some reason.

Errors
Code

Description

GEO0001

Unrecognized Geo type.

GEO0002

The input GML node cannot be read by GMLreader.

GEO0003

Input geometry is not an appropriate geometry for this function.

GEO0004

The input index is out of range.

GEO0005

The result geometry can not be written by GMLwriter.

Changelog
The module was introduced with Version 7.5.1.