<?xml version="1.0" encoding="UTF-8"?><api:function-page xml:base="/apidoc/8.0/cts.elementGeospatialBoxes.xml" generated="2015-10-07T16:36:00.016766-07:00" mode="javascript" xmlns:api="http://marklogic.com/rundmc/api"><api:function-name>cts.elementGeospatialBoxes</api:function-name><api:suggest>cts.elementgeospatialboxes</api:suggest><api:suggest>cts</api:suggest><api:suggest>elementgeospatialboxes</api:suggest><api:function-link mode="xquery" fullname="cts:element-geospatial-boxes">/apidoc/8.0/cts:element-geospatial-boxes.xml</api:function-link><api:function mode="javascript" name="elementGeospatialBoxes" type="builtin" lib="cts" category="SearchBuiltins" subcategory="Geospatial Lexicon" hidden="false" bucket="MarkLogic Built-In Functions" prefix="cts" namespace="http://marklogic.com/cts" fullname="cts.elementGeospatialBoxes"><api:summary>
  <p xmlns="http://www.w3.org/1999/xhtml">Returns boxes derived from the specified element point lexicon(s).
  Element point lexicons are implemented using geospatial indexes; consequently
  this function requires an element geospatial index for each element
  specified in the function.  If there is not a geospatial index configured for
  each of the specified elements, an exception is thrown.</p>
  <p xmlns="http://www.w3.org/1999/xhtml">The points are divided into box-shaped buckets. The $latitude-bounds and
  $longitude-bounds parameters specify the number and the size of each
  box-shaped bucket. All included points are bucketed, even those outside
  the bounds.  An empty sequence for both $latitude-bounds and
  $longitude-bounds specifies one bucket, a single value for both specifies
  four buckets, two values for both specify nine buckets, and so on.</p>
  <p xmlns="http://www.w3.org/1999/xhtml">For each non-empty bucket, a <code>cts:box</code> value is returned.
  By default, the <code>cts:box</code> value is the minimum bounding box
  of all the points in the bucket.  If the "gridded" option is specified,
  then if a bucket is bounded on a side, its corresponding
  <code>cts:box</code> side is the bound.
  Empty buckets return nothing unless the "empties" option is specified.</p>
</api:summary><api:params><api:param name="element-names" type="xs:QName*"><api:param-description>
    One or more element QNames.
  </api:param-description><api:param-name>element-names</api:param-name><api:param-type>xs.QName[]</api:param-type></api:param><api:param name="latitude-bounds" type="xs:double*" optional="true"><api:param-description>
    A sequence of latitude bounds.
    The values must be in strictly ascending order, otherwise an exception
    is thrown.
  </api:param-description><api:param-name>latitude-bounds</api:param-name><api:param-type>Number[]</api:param-type></api:param><api:param name="longitude-bounds" type="xs:double*" optional="true"><api:param-description>
    A sequence of longitude bounds.
    The values must be in strictly ascending order, otherwise an exception
    is thrown.
  </api:param-description><api:param-name>longitude-bounds</api:param-name><api:param-type>Number[]</api:param-type></api:param><api:param name="options" type="xs:string*" optional="true"><api:param-description>
    Options.  The default is ().
    <p xmlns="http://www.w3.org/1999/xhtml">
      Options include:</p>
      <blockquote xmlns="http://www.w3.org/1999/xhtml"><dl>
        <dt>"ascending"</dt>
        <dd>Boxes should be returned in ascending order.</dd>
        <dt>"descending"</dt>
        <dd>Boxes should be returned in descending order.</dd>
        <dt>"gridded"</dt>
        <dd>For each side that a bucket is bounded, return the corresponding
        bound as the edge of the box, instead of the extremum from the
        points in the bucket.</dd>
        <dt>"empties"</dt>
        <dd>Include fully-bounded ranges whose frequency is 0.  Only
        empty ranges that have
        both their upper and lower bounds specified in the $bounds
        options are returned;
        any empty ranges that are less than the first bound or greater than the
        last bound are not returned.  For example, if you specify 4 bounds
        and there are no results for any of the bounds, 3 elements are
        returned (not 5 elements).</dd>
        <dt>"any"</dt>
        <dd>Points from any fragment should be included.</dd>
        <dt>"document"</dt>
        <dd>Points from document fragments should be included.</dd>
        <dt>"properties"</dt>
        <dd>Points from properties fragments should be included.</dd>
        <dt>"locks"</dt>
        <dd>Points from locks fragments should be included.</dd>
        <dt>"frequency-order"</dt>
        <dd>Boxes should be returned ordered by frequency.</dd>
        <dt>"item-order"</dt>
        <dd>Boxes should be returned ordered by item.</dd>
        <dt>"fragment-frequency"</dt>
        <dd>Frequency should be the number of fragments with
        an included point.
        This option is used with <code>cts:frequency</code>.</dd>
        <dt>"item-frequency"</dt>
        <dd>Frequency should be the number of occurences of
        an included point.
        This option is used with <code>cts:frequency</code>.</dd>
        <dt>"coordinate-system=<em>URI</em>"</dt>
        <dd>Use the lexicon with the coordinate system specified by
        <em>name</em>.</dd>
        <dt>"limit=<em>N</em>"</dt>
        <dd>Return no more than <em>N</em> boxes.</dd>
        <dt>"skip=<em>N</em>"</dt>
        <dd>Skip over fragments selected by the <code>cts:query</code>
        to treat the <em>Nth</em> matching fragment as the first fragment.
        Points from skipped fragments are not included.
        This option affects the number of fragments selected
        by the <code>cts:query</code> to calculate frequencies.
        Only applies when a <code>$query</code> parameter is specified.</dd>
        <dt>"sample=<em>N</em>"</dt>
        <dd>Return only boxes for buckets with at least one point from
        the first <em>N</em> fragments after skip selected by the
        <code>cts:query</code>.
        This option does not affect the number of fragments selected
        by the <code>cts:query</code> to calculate frequencies.
        Only applies when a <code>$query</code> parameter is specified.</dd>
        <dt>"truncate=<em>N</em>"</dt>
        <dd>Include only points from the first <em>N</em> fragments
        after skip selected by the <code>cts:query</code>.
        This option affects the number of fragments selected
        by the <code>cts:query</code> to calculate frequencies.
        Only applies when a <code>$query</code> parameter is specified.</dd>
        <dt>"type=long-lat-point"</dt>
        <dd>Specifies the format for the point in the data as longitude first,
        latitude second.</dd>
        <dt>"type=point"</dt>
        <dd>Specifies the format for the point in the data as latitude first,
        longitude second.  This is the default format.</dd>
        <dt>"score-logtfidf"</dt>
        <dd>Compute scores using the logtfidf method.</dd>
        <dt>"score-logtf"</dt>
        <dd>Compute scores using the logtf method.</dd>
        <dt>"score-simple"</dt>
        <dd>Compute scores using the simple method.</dd>
        <dt>"score-random"</dt>
        <dd>Compute scores using the random method.</dd>
        <dt>"score-zero"</dt>
        <dd>Compute all scores as zero.</dd>
        <dt>"checked"</dt>
        <dd>Word positions should be checked when resolving the query.</dd>
        <dt>"unchecked"</dt>
        <dd>Word positions should not be checked when resolving the query.</dd>
        <dt>"too-many-positions-error"</dt>
        <dd>If too much memory is needed to perform positions calculations
        to check whether a document matches a query, 
        return an XDMP-TOOMANYPOSITIONS error, 
        instead of accepting the document as a match.</dd>
        <dt>"eager"</dt>
        <dd>Perform most of the work concurrently before returning
        the first item from the indexes, and only some of the work
        sequentially while iterating through the rest of the items.
        This usually takes the shortest time for a complete item-order 
        result or for any frequency-order result.</dd>
        <dt>"lazy"</dt>
        <dd>Perform only some the work concurrently before returning 
        the first item from the indexes, and most of the work
        sequentially while iterating through the rest of the items.
        This usually takes the shortest time for a small item-order 
        partial result.</dd>
        <dt>"concurrent"</dt>
        <dd>Perform the work concurrently in another thread. This is a hint
        to the query optimizer to help parallelize the lexicon work, allowing
        the calling query to continue performing other work while the lexicon
        processing occurs.  This is especially useful in cases where multiple
        lexicon calls occur in the same query (for example, resolving many
        facets in a single query).</dd>
        <dt>"map"</dt>
    <dd>Return results as 
    <span class="javascript">a JavaScript Object instead of as 
    a ValueIterator</span>.</dd>
     </dl></blockquote>
  </api:param-description><api:param-name>options</api:param-name><api:param-type>String[]</api:param-type></api:param><api:param name="query" type="cts:query?" optional="true"><api:param-description>
    Only include points in fragments selected by the <code xmlns="http://www.w3.org/1999/xhtml">cts:query</code>,
    and compute frequencies from this set of included points.
    The points do not need to match the query, but they must occur in
    fragments selected by the query.
    The fragments are not filtered to ensure they match the query,
    but instead selected in the same manner as
    <a href="/cts:search#unfiltered" xmlns="http://www.w3.org/1999/xhtml">
    "unfiltered" <code>cts:search</code></a> operations.
  </api:param-description><api:param-name>query</api:param-name><api:param-type>cts.query?</api:param-type></api:param><api:param name="quality-weight" type="xs:double?" optional="true"><api:param-description>
    A document quality weight to use when computing scores.
    The default is 1.0.
  </api:param-description><api:param-name>quality-weight</api:param-name><api:param-type>Number?</api:param-type></api:param><api:param name="forest-ids" type="xs:unsignedLong*" optional="true"><api:param-description>
    A sequence of IDs of forests to which the search will be constrained.
    An empty sequence means to search all forests in the database.
    The default is ().
  </api:param-description><api:param-name>forest-ids</api:param-name><api:param-type>String[]</api:param-type></api:param></api:params><api:return>ValueIterator</api:return><api:usage>
  <p xmlns="http://www.w3.org/1999/xhtml">Only one of "frequency-order" or "item-order" may be specified
  in the options parameter.  If neither "frequency-order" nor "item-order"
  is specified, then the default is "item-order".</p>
  <p xmlns="http://www.w3.org/1999/xhtml">Only one of "fragment-frequency" or "item-frequency" may be specified
  in the options parameter.  If neither "fragment-frequency" nor
  "item-frequency" is specified, then the default is "fragment-frequency".</p>
  <p xmlns="http://www.w3.org/1999/xhtml">Only one of "ascending" or "descending" may be specified
  in the options parameter.  If neither "ascending" nor "descending"
  is specified, then the default is "ascending" if "item-order" is
  specified, and "descending" if "frequency-order" is specified.</p>
  <p xmlns="http://www.w3.org/1999/xhtml">Only one of "eager" or "lazy" may be specified
  in the options parameter.  If neither "eager" nor "lazy"
  is specified, then the default is "eager" if "frequency-order" or "empties" 
  is specified, otherwise "lazy".</p>
  <p xmlns="http://www.w3.org/1999/xhtml">Only one of "any", "document", "properties", or "locks"
  may be specified in the options parameter.
  If none of "any", "document", "properties", or "locks" are specified
  and there is a $query parameter, then the default is "document".
  If there is no $query parameter then the default is "any".</p>
  <p xmlns="http://www.w3.org/1999/xhtml">Only one of the "score-logtfidf", "score-logtf", "score-simple",
  "score-random", or "score-zero" options may be specified in the options
  parameter.
  If none of "score-logtfidf", "score-logtf", "score-simple", "score-random",
  or "score-zero" are specified, then the default is "score-logtfidf".</p>
  <p xmlns="http://www.w3.org/1999/xhtml">Only one of the "checked" or "unchecked" options may be specified
  in the options parameter.
  If neither "checked" nor "unchecked" are specified,
  then the default is "checked".</p>
  <p xmlns="http://www.w3.org/1999/xhtml">If "coordinate-system=<em>name</em>" is not specified in the options
  parameter, then the default coordinate system is used. If a lexicon with
  that coordinate system does not exist, an error is thrown.</p>
  <p xmlns="http://www.w3.org/1999/xhtml">If "sample=<em>N</em>" is not specfied in the options parameter,
  then all boxes with included points may be returned. If a <code>$query</code>
  parameter is not present, then "sample=<em>N</em>" has no effect.</p>
  <p xmlns="http://www.w3.org/1999/xhtml">If "truncate=<em>N</em>" is not specfied in the options parameter,
  then points from all fragments selected by the <code>$query</code> parameter
  are included.  If a <code>$query</code> parameter is not present, then
  "truncate=<em>N</em>" has no effect.</p>
</api:usage><api:example class="javascript"><pre xml:space="preserve" xmlns="http://www.w3.org/1999/xhtml">
//   Create a 15 degree latitude by 30 degree longitude grid over the
//   Eastern part of the Northern hemisphere, figure out how many points in
//   the element "point" are in each grid section, and return a box for each
//   grid section, whether it has points in it or not. The box will have the 
//   actual min/max latitudes and longitudes of points in that grid section as 
//   its bounds. Order the boxes in increasing order of latitude and longitude,
//   and return the frequency of points in the box and the box itself.

var obj = new Object();
for (var box of 
  cts.elementGeospatialBoxes(xs.QName("point"),
    [15, 30, 45, 60, 75], [0, 30, 60, 90, 120],
    ["ascending", "empties"])) {
  obj[box] = cts.frequency(box);
};
obj;

</pre></api:example></api:function></api:function-page>