This page was generated
August  8,  2011
2:24  AM
XQuery Built-In and Modules Function Reference

Module: Geospatial Supporting Functions - GeoRSS Functions

The GeoRSS module provides support for geospatial queries using GeoRSS/Simple markup.

To use the GeoRSS module as part of your own XQuery module, include the following line in your XQuery prolog:

import module namespace georss = "http://www.georss.org/georss" at "/MarkLogic/geospatial/georss.xqy";

The library namespace prefix georss is not predefined in the server.

Function Summary
georss:circle Create a cts:circle value from a radius and GeoRSS point element.
georss:geospatial-query Returns a cts:query matching points within given regions.
georss:point Create a cts:point value from a GeoRSS point element.
Function Detail
georss:circle(
$radius as xs:double,
$center as element(georss:point)
)  as   cts:circle
Summary:

Create a cts:circle value from a radius and GeoRSS point element.

Parameters:
$radius : The radius of the circle, in miles.
$center : A point element representing the center of the circle.

Example:
  xquery version "1.0-ml";
  import module namespace georss = "http://www.georss.org/georss"
         at "/MarkLogic/geospatial/georss.xqy";

  georss:circle(47, <georss:point>12.5 -127.24</georss:point>)
  

georss:geospatial-query(
$regions as cts:region*,
[$options as xs:string*],
[$weight as xs:double?]
)  as   cts:query
Summary:

Returns a cts:query matching points within given regions.

Parameters:
$regions : One or more geographic boxes, circles, or points. Where multiple boxes, circles, or points are specified, the query matches if any box, circle, or point matches.
$options (optional): Options to this query. The default is ().

Options include:

"coordinate-system=wgs84"
Use the WGS84 coordinate system.
"boundaries-included"
Points on boxes' and circles' boundaries are counted as matching. This is the default.
"boundaries-excluded"
Points on boxes' and circles' boundaries are not counted as matching.
"boundaries-latitude-excluded"
Points on boxes' latitude boundaries are not counted as matching.
"boundaries-longitude-excluded"
Points on boxes' longitude boundaries are not counted as matching.
"boundaries-south-excluded"
Points on the boxes' southern boundaries are not counted as matching.
"boundaries-west-excluded"
Points on the boxes' western boundaries are not counted as matching.
"boundaries-north-excluded"
Points on the boxes' northern boundaries are not counted as matching.
"boundaries-east-excluded"
Points on the boxes' eastern boundaries are not counted as matching.
"boundaries-circle-excluded"
Points on circles' boundary are not counted as matching.
$weight (optional): A weight for this query. The default is 1.0.

Usage Notes:

The point value is expressed in the content of the element as a pair of numbers, separated by whitespace and punctuation (excluding decimal points and sign characters).

Point values and boundary specifications of boxes are given in degrees relative to the WGS84 coordinate system. Southern latitudes and Western longitudes take negative values. Longitudes will be wrapped to the range (-180,+180) and latitudes will be clipped to the range (-90,+90).

If the northern boundary of a box is south of the southern boundary, no points will match. However, longitudes wrap around the globe, so that if the western boundary is east of the eastern boundary, then the box crosses the anti-meridian.

Special handling occurs at the poles, as all longitudes exist at latitudes +90 and -90.


Example:
xquery version "1.0-ml";

(: create a document with test data :)
xdmp:document-insert("/points.xml",
<root xmlns:georss="http://www.georss.org/georss">
  <item><georss:point>10.5 30.0</georss:point></item>
  <item><georss:point>15.35 35.34</georss:point></item>
  <item><georss:point>5.11 40.55</georss:point></item>
</root> );

xquery version "1.0-ml";
import module namespace georss = "http://www.georss.org/georss"
   at "/MarkLogic/geospatial/georss.xqy";

cts:search(doc("/points.xml")//item, 
  georss:geospatial-query(cts:box(10.0, 35.0, 20.0, 40.0)))
(:
  returns the following node: 
  <item><georss:point>15.35 35.34</georss:point></item>
:)
 

georss:point(
$point as element(georss:point)
)  as   cts:point
Summary:

Create a cts:point value from a GeoRSS point element.

Parameters:
$point : A point element.

Example:
  xquery version "1.0-ml";
  import module namespace georss = "http://www.georss.org/georss"
         at "/MarkLogic/geospatial/georss.xqy";

  georss:point(<georss:point>12.5 -127.24</georss:point>)