geo.approxCenter( region as cts.region, [options as String[]] ) as cts.point
Return a point approximating the center of the given region. For a point, this is the point itself. For a circle, it is the center point. For a box, it is the point whose latitude is half-way between the northern and southern limits and whose longitude is half-way between the western and eastern limits. For polygons, complex polygons, and linestrings, an approximate centroid is returned. This approximation is rough, and useful for quick comparisons.
The value of the precision
option always takes precedence
over the implied by the governing coordinate system name, including the
value of the coordinate-system
option. For example, if the
governing coordinate system is "wgs84/double" and the precision
option is "float", then the operation uses single precision.
The precision of the returned region is determined by the
precision
option, if present. Otherwise, the precision of
the returned region is determined by the precision of the governing
coordinate system.
// Approximate center of London Zoo geo.approxCenter( cts.polygon([ cts.point(51.5361190,-0.1590335), cts.point(51.5366529,-0.1568234), cts.point(51.5372001,-0.1537657), cts.point(51.5372868,-0.1527464), cts.point(51.5334561,-0.1509440), cts.point(51.5332359,-0.1517808), cts.point(51.5348643,-0.1584756), cts.point(51.5355250,-0.1592481), cts.point(51.5360522,-0.1590765) ])); ==> cts.point(51.535511,-0.15516526)
// Optic example using the Value Processing Function op.geo.approxCenter() const op = require('/MarkLogic/optic'); const result=op.fromView('buildings', 'builds') .bindAs('result',op.geo.approxCenter(op.col('poly'))) .select(['result', op.col('geoid')]) .orderBy('result') .result() result // ==> // rows representing the approximate center of the 'poly' column
'use strict'; xdmp.sql("select ST_Centroid(poly) from builds order by geoid limit 20") // ==> // rows representing the approximate center of the 'poly' column