MarkLogic Server 11.0 Product Documentation
geojson:geospatial-query-from-nodesgeojson:geospatial-query-from-nodes(
$regions as node()*,
[$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 circles, polygons, linestrings or
points, represented as GeoJSON objects. Where multiple circles,
polygons, linestrings or points are specified, the query matches
if any circle, polygon, linestring or point matches.
|
options |
Options to this query. The default is ().
Options include:
- "coordinate-system=string"
- Use the given coordinate system. Valid values are:
- wgs84
- The WGS84 coordinate system.
- wgs84/double
- The WGS84 coordinate system at double precision.
- raw
- The raw (unmapped) coordinate system.
- raw/double
- The raw coordinate system at double precision.
- "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 |
A weight for this query. The default is 1.0.
|
Usage Notes
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.
This function will take into account interior polygons, if any, and properly
construct the query to account for them.
Example
xquery version "1.0-ml";
(: create a document with test data :)
xdmp:document-insert("first.json",
object-node {
"type": "Feature",
"geometry": object-node {
"type": "Point",
"coordinates": array-node {125.6, 8.1} },
"properties": object-node {
"name": "Test"
}
});
xquery version "1.0-ml";
import module namespace geojson = "http://marklogic.com/geospatial/geojson"
at "/MarkLogic/geospatial/geojson.xqy";
let $q := geojson:geospatial-query-from-nodes(
object-node {
"type": "Polygon",
"coordinates": array-node {
array-node {
array-node {35, 1}, array-node {131, 1}, array-node {131, 120},
array-node {35, 120}, array-node {35, 1}
}
}
})
return cts:search(fn:doc(), $q)
(:
returns first.json
:)
Stack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.