diff --git a/docs/0.9.9/site/geo/functions.html b/docs/0.9.9/site/geo/functions.html
new file mode 100644
index 0000000..03fd823
--- /dev/null
+++ b/docs/0.9.9/site/geo/functions.html
@@ -0,0 +1,1556 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia Site Renderer 1.8.1 from src/site/markdown/geo/functions.md at 2024-04-01
+ | Rendered using Apache Maven Fluido Skin 1.7
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20240401" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>AsterixDB &#x2013; Support the standard GIS objects (DRAFT)</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.7.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.7.min.js"></script>
+
+  </head>
+  <body class="topBarDisabled">
+    <div class="container-fluid">
+      <div id="banner">
+        <div class="pull-left"><a href=".././" id="bannerLeft"><img src="../images/asterixlogo.png"  alt="AsterixDB"/></a></div>
+        <div class="pull-right"></div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+        <li id="publishDate">Last Published: 2024-04-01</li>
+      <li id="projectVersion" class="pull-right">Version: 0.9.9</li>
+      <li class="pull-right"><a href="../index.html" title="Documentation Home">Documentation Home</a></li>
+        </ul>
+      </div>
+      <div class="row-fluid">
+        <div id="leftColumn" class="span2">
+          <div class="well sidebar-nav">
+    <ul class="nav nav-list">
+      <li class="nav-header">Get Started - Installation</li>
+    <li><a href="../ncservice.html" title="Option 1: using NCService"><span class="none"></span>Option 1: using NCService</a></li>
+    <li><a href="../ansible.html" title="Option 2: using Ansible"><span class="none"></span>Option 2: using Ansible</a></li>
+    <li><a href="../aws.html" title="Option 3: using Amazon Web Services"><span class="none"></span>Option 3: using Amazon Web Services</a></li>
+      <li class="nav-header">AsterixDB Primer</li>
+    <li><a href="../sqlpp/primer-sqlpp.html" title="Using SQL++"><span class="none"></span>Using SQL++</a></li>
+      <li class="nav-header">Data Model</li>
+    <li><a href="../datamodel.html" title="The Asterix Data Model"><span class="none"></span>The Asterix Data Model</a></li>
+      <li class="nav-header">Queries</li>
+    <li><a href="../sqlpp/manual.html" title="The SQL++ Query Language"><span class="none"></span>The SQL++ Query Language</a></li>
+    <li><a href="../SQLPP.html" title="Raw SQL++ Grammar"><span class="none"></span>Raw SQL++ Grammar</a></li>
+    <li><a href="../sqlpp/builtins.html" title="Builtin Functions"><span class="none"></span>Builtin Functions</a></li>
+      <li class="nav-header">API/SDK</li>
+    <li><a href="../api.html" title="HTTP API"><span class="none"></span>HTTP API</a></li>
+    <li><a href="../csv.html" title="CSV Output"><span class="none"></span>CSV Output</a></li>
+      <li class="nav-header">Advanced Features</li>
+    <li><a href="../aql/externaldata.html" title="Accessing External Data"><span class="none"></span>Accessing External Data</a></li>
+    <li><a href="../feeds.html" title="Data Ingestion with Feeds"><span class="none"></span>Data Ingestion with Feeds</a></li>
+    <li><a href="../udf.html" title="User Defined Functions"><span class="none"></span>User Defined Functions</a></li>
+    <li><a href="../sqlpp/filters.html" title="Filter-Based LSM Index Acceleration"><span class="none"></span>Filter-Based LSM Index Acceleration</a></li>
+    <li><a href="../sqlpp/fulltext.html" title="Support of Full-text Queries"><span class="none"></span>Support of Full-text Queries</a></li>
+    <li><a href="../sqlpp/similarity.html" title="Support of Similarity Queries"><span class="none"></span>Support of Similarity Queries</a></li>
+    <li><a href="../geo/quickstart.html" title="GIS Support Overview"><span class="none"></span>GIS Support Overview</a></li>
+    <li class="active"><a href="#"><span class="none"></span>GIS Functions</a></li>
+    <li><a href="../interval_join.html" title="Support of Interval Joins"><span class="none"></span>Support of Interval Joins</a></li>
+    <li><a href="../spatial_join.html" title="Support of Spatial Joins"><span class="none"></span>Support of Spatial Joins</a></li>
+    <li><a href="../sqlpp/arrayindex.html" title="Support of Array Indexes"><span class="none"></span>Support of Array Indexes</a></li>
+      <li class="nav-header">Deprecated</li>
+    <li><a href="../aql/primer.html" title="AsterixDB Primer: Using AQL"><span class="none"></span>AsterixDB Primer: Using AQL</a></li>
+    <li><a href="../aql/manual.html" title="Queries: The Asterix Query Language (AQL)"><span class="none"></span>Queries: The Asterix Query Language (AQL)</a></li>
+    <li><a href="../aql/builtins.html" title="Queries: Builtin Functions (AQL)"><span class="none"></span>Queries: Builtin Functions (AQL)</a></li>
+</ul>
+          <hr />
+          <div id="poweredBy">
+            <div class="clear"></div>
+            <div class="clear"></div>
+            <div class="clear"></div>
+            <div class="clear"></div>
+<a href=".././" title="AsterixDB" class="builtBy"><img class="builtBy"  alt="AsterixDB" src="../images/asterixlogo.png"    /></a>
+            </div>
+          </div>
+        </div>
+        <div id="bodyColumn"  class="span10" >
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements.  See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership.  The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License.  You may obtain a copy of the License at
+ !
+ !   http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing,
+ ! software distributed under the License is distributed on an
+ ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ! KIND, either express or implied.  See the License for the
+ ! specific language governing permissions and limitations
+ ! under the License.
+ !-->
+<h1>Support the standard GIS objects (DRAFT)</h1>
+<div class="section">
+<h2><a name="Table_of_Contents"></a><a name="toc" id="toc">Table of Contents</a></h2>
+<ul>
+
+<li><a href="#Introduction">Introduction</a></li>
+<li><a href="#construction">Construction functions</a></li>
+<li><a href="#primitive">Primitive functions</a></li>
+<li><a href="#predicate">Spatial Predicate</a></li>
+<li><a href="#analysis">Spatial Analysis</a></li>
+<li><a href="#aggregate">Spatial Aggregates</a></li>
+</ul></div>
+<div class="section">
+<h2><a name="Introduction" id="Introduction">Introduction</a></h2>
+<p>To support standard GIS objects in AsterixDB, you need to use the <tt>geometry</tt> data type as follows.</p>
+
+<div>
+<div>
+<pre class="source">DROP dataverse GeoJSON if exists;
+CREATE  dataverse GeoJSON;
+
+USE GeoJSON;
+
+CREATE TYPE GeometryType AS{
+  id : int,
+  myGeometry : geometry
+};
+
+CREATE DATASET Geometries (GeometryType) PRIMARY KEY id;
+</pre></div></div>
+
+<p>Please note that even though the <a class="externalLink" href="http://desktop.arcgis.com/en/arcmap/10.3/manage-data/using-sql-with-gdbs/what-is-an-srid.htm">SRID</a> input is supported for certain functions and is represented internally in the correct manner the serialized result (printed in the output) displays the SRID as 4326 always because of the limitations in Esri API.</p></div>
+<div class="section">
+<h2><a name="Construction_functions"></a><a name="construction" id="construction">Construction functions</a></h2>
+<p>The Geometry datatype can be created by the constructor functions.</p>
+<div class="section">
+<h3><a name="st_make_point"></a>st_make_point</h3>
+<ul>
+
+<li>
+
+<p>Creates a 2D,3DZ or 4D point geometry.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Create a 2D point at coordinates (x,y) = (-71, 42)</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_make_point(-71, 42);
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[-71,42],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+<li>Example:</li>
+<li>Create a 3D point at coordinates (x,y,z) = (1,2,1.59)</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_make_point(1,2,1.59);
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[1,2,1.59],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_geom_from_text"></a>st_geom_from_text</h3>
+<ul>
+
+<li>
+
+<p>Return a specified ST_Geometry value from Well-Known Text representation (WKT).</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Create a LineString geometry from the WKT format.</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_geom_from_text(&quot;LINESTRING(1 2,3 4,5 6)&quot;);
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;LineString&quot;,&quot;coordinates&quot;:[[1,2],[3,4],[5,6]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+<li>Example:</li>
+<li>Create a MultiLineString geometry from the WKT format.</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_geom_from_text('MULTILINESTRING((1 2,3 4,5 6),(7 8,9 10))');
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;MultiLineString&quot;,&quot;coordinates&quot;:[[[1,2],[3,4],[5,6]],[[7,8],[9,10]]],&quot;crs&quot;:null}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_geom_from_wkb"></a>st_geom_from_wkb</h3>
+<ul>
+
+<li>
+
+<p>Creates a geometry instance from a Well-Known Binary geometry representation (WKB) and optional SRID.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_geom_from_wkb(hex(&quot;010100000000000000000000400000000000001440&quot;));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[2,5],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_geom_from_geojson"></a>st_geom_from_geojson</h3>
+<ul>
+
+<li>
+
+<p>Creates a geometry instance from its GeoJSON representation</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_geom_from_geojson({&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[2,5],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}});
+</pre></div></div>
+</li>
+<li>
+
+<p>Result:</p>
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[2,5],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_make_envelope"></a>st_make_envelope</h3>
+<ul>
+
+<li>
+
+<p>Creates a rectangular Polygon formed from the given minimums and maximums. Input values must be in SRS specified by the SRID.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_make_envelope(10, 10, 11, 11, 4326);
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;Polygon&quot;,&quot;coordinates&quot;:[[[10,10],[11,10],[11,11],[10,11],[10,10]]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div></div>
+<div class="section">
+<h2><a name="Primitive_functions"></a><a name="primitive" id="primitive">Primitive functions</a></h2>
+<p>There are primitive functions that take as input geometry/es and return a primitive type.</p>
+<div class="section">
+<h3><a name="st_area"></a>st_area</h3>
+<ul>
+
+<li>
+
+<p>Return the area of the surface if it is a Polygon or MultiPolygon. For geometry, a 2D Cartesian area is determined with units specified by the SRID. For geography, area is determined on a curved surface with units in square meters.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_area(st_geom_from_text('POLYGON((7 2,4 9,3 6,2.6 7,8 16))'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">26.500000000000007
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_coord_dim"></a>st_coord_dim</h3>
+<ul>
+
+<li>
+
+<p>Return the coordinate dimension of the Geometry value.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_coord_dim(st_make_point(1,2));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">2
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_dimension"></a>st_dimension</h3>
+<ul>
+
+<li>
+
+<p>Return the inherent dimension of this Geometry object, which must be less than or equal to the coordinate dimension.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_dimension(st_geom_from_text('GEOMETRYCOLLECTION(LINESTRING(1 1,0 0),POINT(0 0))'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">1
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="geometry_type"></a>geometry_type</h3>
+<ul>
+
+<li>
+
+<p>Return the type of the geometry as a string. Eg: &#x2018;LINESTRING&#x2019;, &#x2018;POLYGON&#x2019;, &#x2018;MULTIPOINT&#x2019;, etc.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">geometry_type(st_geom_from_text('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">&quot;LineString&quot;
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_m"></a>st_m</h3>
+<ul>
+
+<li>
+
+<p>Return the M coordinate of the point, or NULL if not available. Input must be a point.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_m(st_make_point(1, 2, 3, 4));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">4.0
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_n_points"></a>st_n_points</h3>
+<ul>
+
+<li>
+
+<p>Return the number of points (vertexes) in a geometry.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_n_points(st_geom_from_text('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">4
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_n_rings"></a>st_n_rings</h3>
+<ul>
+
+<li>
+
+<p>If the geometry is a polygon or multi-polygon return the number of rings.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_n_rings(st_geom_from_text('POLYGON((10.689 -25.092, 34.595 -20.170, 38.814 -35.639, 13.502 -39.155, 10.689 -25.092))'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">1
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_num_geometries"></a>st_num_geometries</h3>
+<ul>
+
+<li>
+
+<p>If geometry is a GEOMETRYCOLLECTION (or MULTI*) return the number of geometries, for single geometries will return 1, otherwise return NULL.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_num_geometries(st_geom_from_text('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">1
+</pre></div></div>
+</li>
+<li>Example:</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_num_geometries(st_geom_from_text('GEOMETRYCOLLECTION(MULTIPOINT(-2 3 , -2 2), LINESTRING(5 5 ,10 10), POLYGON((-7 4.2,-7.1 5,-7.1 4.3,-7 4.2)))'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">3
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_num_interiorRings"></a>st_num_interiorRings</h3>
+<ul>
+
+<li>
+
+<p>Return the number of interior rings of a polygon geometry.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+</ul>
+<p><img src="../images/linestring.png" alt="Image of interiorRings" /> * Command:</p>
+
+<div>
+<div>
+<pre class="source">    st_num_interior_rings(st_geom_from_text(&quot;POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),(20 30, 35 35, 30 20, 20 30))&quot;));
+</pre></div></div>
+
+<ul>
+
+<li>Result:
+
+<div>
+<div>
+<pre class="source">1
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_x"></a>st_x</h3>
+<ul>
+
+<li>
+
+<p>Return the X coordinate of the point, or NULL if not available. Input must be a point.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_x(st_make_point(1, 2, 3, 4));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">1.0
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_y"></a>st_y</h3>
+<ul>
+
+<li>
+
+<p>Return the Y coordinate of the point, or NULL if not available. Input must be a point.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_y(st_make_point(1, 2, 3, 4));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">1.0
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_x_max"></a>st_x_max</h3>
+<ul>
+
+<li>
+
+<p>Return X maximum of a bounding box 2d or 3d or a geometry.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_x_max(st_geom_from_text('POLYGON((10.689 -25.092, 34.595 -20.170, 38.814 -35.639, 13.502 -39.155, 10.689 -25.092))'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">38.814
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_x_min"></a>st_x_min</h3>
+<ul>
+
+<li>Return X minimum of a bounding box 2d or 3d or a geometry.</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_y_max"></a>st_y_max</h3>
+<ul>
+
+<li>Return Y maximum of a bounding box 2d or 3d or a geometry.</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_y_min"></a>st_y_min</h3>
+<ul>
+
+<li>Return Y minimum of a bounding box 2d or 3d or a geometry.</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_z"></a>st_z</h3>
+<ul>
+
+<li>Return the Z coordinate of the point, or NULL if not available. Input must be a point.</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_z_max"></a>st_z_max</h3>
+<ul>
+
+<li>Return Z maximum of a bounding box 2d or 3d or a geometry.</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_z_min"></a>st_z_min</h3>
+<ul>
+
+<li>Return Z minimum of a bounding box 2d or 3d or a geometry.</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_as_binary"></a>st_as_binary</h3>
+<ul>
+
+<li>
+
+<p>Return the Well-Known Binary (WKB) representation of the geometry/geography without SRID meta data.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_as_binary(st_geom_from_geojson({&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[2,5],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">&quot;010100000000000000000000400000000000001440&quot;
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_as_geojson"></a>st_as_geojson</h3>
+<ul>
+
+<li>
+
+<p>Return the geometry as a GeoJSON element.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_as_geojson(st_geom_from_text('POLYGON((10.689 -25.092, 34.595 -20.170, 38.814 -35.639, 13.502 -39.155, 10.689 -25.092))'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">&quot;{\&quot;type\&quot;:\&quot;Polygon\&quot;,\&quot;coordinates\&quot;:[[[10.689,-25.092],[13.502,-39.155],[38.814,-35.639],[34.595,-20.17],[10.689,-25.092]]],\&quot;crs\&quot;:{\&quot;type\&quot;:\&quot;name\&quot;,\&quot;properties\&quot;:{\&quot;name\&quot;:\&quot;EPSG:4326\&quot;}}}&quot;
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_distance"></a>st_distance</h3>
+<ul>
+
+<li>
+
+<p>For geometry type Return the 2D Cartesian distance between two geometries in projected units (based on spatial ref). For geography type defaults to return minimum geodesic distance between two geographies in meters.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_distance(st_geom_from_text('POINT(-72.1235 42.3521)'),st_geom_from_text('LINESTRING(-72.1260 42.45, -72.123 42.1546)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">0.0015056772638282166
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_length"></a>st_length</h3>
+<ul>
+
+<li>
+
+<p>Return the 2D length of the geometry if it is a LineString or MultiLineString. geometry are in units of spatial reference and geography are in meters (default spheroid).</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_length(st_geom_from_text('LINESTRING(-72.1260 42.45, -72.1240 42.45666, -72.123 42.1546)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">0.30901547439030225
+</pre></div></div>
+</li>
+</ul></div></div>
+<div class="section">
+<h2><a name="Spatial_Predicate"></a><a name="predicate" id="predicate">Spatial Predicate</a></h2>
+<p>Spatial predicate functions test for a relationship between two geometries and return a Boolean value (true/false).</p>
+<div class="section">
+<h3><a name="st_intersects"></a>st_intersects</h3>
+<ul>
+
+<li>
+
+<p>Return TRUE if the Geometries/Geography &#x201c;spatially intersect in 2D&#x201d;.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_intersects(st_geom_from_text('POINT(0 0)'), st_geom_from_text('LINESTRING ( 0 0, 0 2 )'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">true
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_isclosed"></a>st_isclosed</h3>
+<ul>
+
+<li>
+
+<p>Return TRUE if the LINESTRING&#x2019;s start and end points are coincident.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_is_closed(st_geom_from_text('LINESTRING(0 0, 0 1, 1 1, 0 0)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">true
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_iscollection"></a>st_iscollection</h3>
+<ul>
+
+<li>
+
+<p>Return TRUE if the argument is a collection (MULTI*, GEOMETRYCOLLECTION, &#x2026;)</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_is_collection(st_geom_from_text('MULTIPOINT EMPTY'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">true
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_is_empty"></a>st_is_empty</h3>
+<ul>
+
+<li>
+
+<p>Return true if this Geometry is an empty geometrycollection, polygon, point etc.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_is_empty(st_geom_from_text('POLYGON EMPTY'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">true
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_is_ring"></a>st_is_ring</h3>
+<ul>
+
+<li>
+
+<p>Return TRUE if this LINESTRING is both closed and simple.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_is_ring(st_geom_from_text('LINESTRING(0 0, 0 1, 1 1, 1 0, 0 0)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">true
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_is_simple"></a>st_is_simple</h3>
+<ul>
+
+<li>
+
+<p>Return (TRUE) if this Geometry has no anomalous geometric points, such as self intersection or self tangency.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_is_simple(st_geom_from_text('LINESTRING(1 1,2 2,2 3.5,1 3,1 2,2 1)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">false
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_contains"></a>st_contains</h3>
+<ul>
+
+<li>
+
+<p>Return true if and only if no points of B lie in the exterior of A, and at least one point of the interior of B lies in the interior of A.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_contains(st_geom_from_text('LINESTRING(1 1,-1 -1,2 3.5,1 3,1 2,2 1)'), st_make_point(-1, -1));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">true
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_crosses"></a>st_crosses</h3>
+<ul>
+
+<li>
+
+<p>Return TRUE if the supplied geometries have some, but not all, interior points in common.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_crosses(st_geom_from_text('LINESTRING(1 1,2 2,3 3,4 4, 5 5,6 6)'), st_geom_from_text('LINESTRING(0 2,1 2,2 2,3 2,4 2,5 2)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">true
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_disjoint"></a>st_disjoint</h3>
+<ul>
+
+<li>
+
+<p>Return TRUE if the Geometries do not &#x201c;spatially intersect&#x201d; - if they do not share any space together.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_disjoint(st_geom_from_text('LINESTRING(1 1,2 2,3 3,4 4, 5 5,6 6)'), st_geom_from_text('POINT(0 0)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">true
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_equals"></a>st_equals</h3>
+<ul>
+
+<li>
+
+<p>Return true if the given geometries represent the same geometry. Directionality is ignored.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_equals(st_geom_from_text('LINESTRING(0 0, 10 10)'), st_geom_from_text('LINESTRING(0 0, 5 5, 10 10)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">true
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_overlaps"></a>st_overlaps</h3>
+<ul>
+
+<li>
+
+<p>Return TRUE if the Geometries share space, are of the same dimension, but are not completely contained by each other.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_overlaps(st_geom_from_text('LINESTRING(1 1,2 2,3 3,4 4, 5 5,6 6)'), st_geom_from_text('LINESTRING(0 2,1 2,2 2,3 3,4 2,5 2)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">true
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_relate"></a>st_relate</h3>
+<ul>
+
+<li>
+
+<p>Return true if this Geometry is spatially related to anotherGeometry, by testing for intersections between the Interior, Boundary and Exterior of the two geometries as specified by the values in the intersectionMatrixPattern.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_relate(st_geom_from_text('LINESTRING(1 2, 3 4)'), st_geom_from_text('LINESTRING(5 6, 7 8)'), &quot;FF1FF0102&quot;);
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">true
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_touches"></a>st_touches</h3>
+<ul>
+
+<li>
+
+<p>Return TRUE if the geometries have at least one point in common, but their interiors do not intersect.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_touches(st_geom_from_text('LINESTRING(0 0, 1 1, 0 2)'), st_geom_from_text('POINT(0 2)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">true
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_within"></a>st_within</h3>
+<ul>
+
+<li>Return true if the geometry A is completely inside geometry B.</li>
+</ul></div></div>
+<div class="section">
+<h2><a name="Spatial_Analysis"></a><a name="analysis" id="analysis">Spatial Analysis</a></h2>
+<p>Spatial analysis functions take as input one or more geometries and return a geometry as output.</p>
+<div class="section">
+<h3><a name="st_union"></a>st_union</h3>
+<ul>
+
+<li>
+
+<p>Return a geometry that represents the point set union of the Geometries.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_union(st_geom_from_text('LINESTRING(0 0, 1 1, 0 2)'), st_geom_from_text('POINT(0 2)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;LineString&quot;,&quot;coordinates&quot;:[[0,0],[1,1],[0,2]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_boundary"></a>st_boundary</h3>
+<ul>
+
+<li>
+
+<p>Return the closure of the combinatorial boundary of this Geometry.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_boundary(st_geom_from_text('POLYGON((1 1,0 0, -1 1, 1 1))'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;MultiLineString&quot;,&quot;coordinates&quot;:[[[1,1],[-1,1],[0,0],[1,1]]],&quot;crs&quot;:null}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_end_point"></a>st_end_point</h3>
+<ul>
+
+<li>
+
+<p>Return the last point of a LINESTRING or CIRCULARLINESTRING geometry as a POINT.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_end_point(st_geom_from_text('LINESTRING(1 1, 2 2, 3 3)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[3,3],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_envelope"></a>st_envelope</h3>
+<ul>
+
+<li>
+
+<p>Return a geometry representing the double precision (float8) bounding box of the supplied geometry.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_envelope(st_geom_from_text('LINESTRING(1 1, 2 2, 3 3)'));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;Polygon&quot;,&quot;coordinates&quot;:[[[1,1],[3,1],[3,3],[1,3],[1,1]]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_exterior_ring"></a>st_exterior_ring</h3>
+<ul>
+
+<li>
+
+<p>Return a line string representing the exterior ring of the POLYGON geometry. Return NULL if the geometry is not a polygon. Will not work with MULTIPOLYGON.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_exterior_ring(st_geom_from_text(&quot;POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),(20 30, 35 35, 30 20, 20 30))&quot;));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;LineString&quot;,&quot;coordinates&quot;:[[35,10],[45,45],[15,40],[10,20],[35,10]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_geometry_n"></a>st_geometry_n</h3>
+<ul>
+
+<li>
+
+<p>Return the 1-based Nth geometry if the geometry is a GEOMETRYCOLLECTION, (MULTI)POINT, (MULTI)LINESTRING, MULTICURVE or (MULTI)POLYGON, POLYHEDRALSURFACE. Otherwise, return NULL.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_geometry_n(st_geom_from_text('GEOMETRYCOLLECTION(MULTIPOINT(-2 3 , -2 2),LINESTRING(5 5 ,10 10),POLYGON((-7 4.2,-7.1 5,-7.1 4.3,-7 4.2)))'),2);
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;Polygon&quot;,&quot;coordinates&quot;:[[[-7,4.2],[-7.1,5],[-7.1,4.3],[-7,4.2]]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_interior_ring_n"></a>st_interior_ring_n</h3>
+<ul>
+
+<li>
+
+<p>Return the Nth interior linestring ring of the polygon geometry. Return NULL if the geometry is not a polygon or the given N is out of range.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_interior_ring_n(st_geom_from_text(&quot;POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),(20 30, 35 35, 30 20, 20 30))&quot;), 0);
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;LineString&quot;,&quot;coordinates&quot;:[[20,30],[35,35],[30,20],[20,30]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_point_n"></a>st_point_n</h3>
+<ul>
+
+<li>
+
+<p>Return the Nth point in the first LineString or circular LineString in the geometry. Negative values are counted backwards from the end of the LineString. Return NULL if there is no linestring in the geometry.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_point_n(st_geom_from_text(&quot;LINESTRING(1 1, 2 2, 3 3)&quot;), 1);
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[2,2],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_start_point"></a>st_start_point</h3>
+<ul>
+
+<li>
+
+<p>Return the first point of a LINESTRING geometry as a POINT.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_start_point(st_geom_from_text(&quot;LINESTRING(1 1, 2 2, 3 3)&quot;));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[1,1],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_difference"></a>st_difference</h3>
+<ul>
+
+<li>
+
+<p>Return a geometry that represents that part of geometry A that does not intersect with geometry B.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_difference(st_geom_from_text(&quot;LINESTRING(1 1, 2 2, 3 3)&quot;), st_geom_from_text(&quot;POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),(20 30, 35 35, 30 20, 20 30))&quot;));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;LineString&quot;,&quot;coordinates&quot;:[[1,1],[2,2],[3,3]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_intersection"></a>st_intersection</h3>
+<ul>
+
+<li>
+
+<p>Return a geometry that represents the shared portion of geomA and geomB.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_intersection(st_geom_from_text(&quot;LINESTRING(1 1,2 2,3 3,4 4, 5 5,6 6)&quot;), st_geom_from_text(&quot;LINESTRING(0 2,1 2,2 2,3 3,4 2,5 2)&quot;));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;LineString&quot;,&quot;coordinates&quot;:[[2,2],[3,3]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_sym_difference"></a>st_sym_difference</h3>
+<ul>
+
+<li>
+
+<p>Return a geometry that represents the portions of A and B that do not intersect. It is called a symmetric difference because ST_SymDifference(A,B) = ST_SymDifference(B,A).</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_sym_difference(st_geom_from_text(&quot;LINESTRING(1 1,2 2,3 3,4 4, 5 5,6 6)&quot;), st_geom_from_text(&quot;LINESTRING(0 2,1 2,2 2,3 3,4 2,5 2)&quot;));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;MultiLineString&quot;,&quot;coordinates&quot;:[[[0,2],[1,2],[2,2],[1,1]],[[5,2],[4,2],[3,3],[4,4],[5,5],[6,6]]],&quot;crs&quot;:null}
+</pre></div></div>
+</li>
+</ul></div>
+<div class="section">
+<h3><a name="st_polygonize"></a>st_polygonize</h3>
+<ul>
+
+<li>
+
+<p>Aggregate. Creates a GeometryCollection containing possible polygons formed from the constituent linework of a set of geometries.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_polygonize([st_geom_from_text(&quot;LINESTRING(1 1,2 2,3 3,4 4, 5 5,6 6)&quot;), st_geom_from_text(&quot;LINESTRING(0 2,1 2,2 2,3 3,4 2,5 2)&quot;)]);
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;GeometryCollection&quot;,&quot;geometries&quot;:[{&quot;type&quot;:&quot;LineString&quot;,&quot;coordinates&quot;:[[1,1],[2,2],[3,3],[4,4],[5,5],[6,6]]},{&quot;type&quot;:&quot;LineString&quot;,&quot;coordinates&quot;:[[0,2],[1,2],[2,2],[3,3],[4,2],[5,2]]}],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div></div>
+<div class="section">
+<h2><a name="Spatial_Aggregates"></a><a name="aggregate" id="aggregate">Spatial Aggregates</a></h2>
+<p>spatial aggregate function which takes as input a set of geometries and return one geometry as the result.</p>
+<div class="section">
+<h3><a name="st_union"></a>st_union</h3>
+<ul>
+
+<li>
+
+<p>Returns a geometry that represents the point set union of the Geometries.</p>
+</li>
+<li>
+
+<p>Example:</p>
+</li>
+<li>Command:
+
+<div>
+<div>
+<pre class="source">st_union((SELECT VALUE gbu FROM [st_make_point(1.0,1.0),st_make_point(1.0,2.0)] as gbu));
+</pre></div></div>
+</li>
+<li>Result:
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;MultiPoint&quot;,&quot;coordinates&quot;:[[1,1],[1,2]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</li>
+</ul></div></div>
+        </div>
+      </div>
+    </div>
+    <hr/>
+    <footer>
+      <div class="container-fluid">
+        <div class="row-fluid">
+<div class="row-fluid">Apache AsterixDB, AsterixDB, Apache, the Apache
+        feather logo, and the Apache AsterixDB project logo are either
+        registered trademarks or trademarks of The Apache Software
+        Foundation in the United States and other countries.
+        All other marks mentioned may be trademarks or registered
+        trademarks of their respective owners.
+      </div>
+        </div>
+      </div>
+    </footer>
+  </body>
+</html>
diff --git a/docs/0.9.9/site/geo/quickstart.html b/docs/0.9.9/site/geo/quickstart.html
new file mode 100644
index 0000000..fa47458
--- /dev/null
+++ b/docs/0.9.9/site/geo/quickstart.html
@@ -0,0 +1,373 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia Site Renderer 1.8.1 from src/site/markdown/geo/quickstart.md at 2024-04-01
+ | Rendered using Apache Maven Fluido Skin 1.7
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20240401" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>AsterixDB &#x2013; Getting Started with GIS in AsterixDB (DRAFT)</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.7.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.7.min.js"></script>
+
+  </head>
+  <body class="topBarDisabled">
+    <div class="container-fluid">
+      <div id="banner">
+        <div class="pull-left"><a href=".././" id="bannerLeft"><img src="../images/asterixlogo.png"  alt="AsterixDB"/></a></div>
+        <div class="pull-right"></div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+        <li id="publishDate">Last Published: 2024-04-01</li>
+      <li id="projectVersion" class="pull-right">Version: 0.9.9</li>
+      <li class="pull-right"><a href="../index.html" title="Documentation Home">Documentation Home</a></li>
+        </ul>
+      </div>
+      <div class="row-fluid">
+        <div id="leftColumn" class="span2">
+          <div class="well sidebar-nav">
+    <ul class="nav nav-list">
+      <li class="nav-header">Get Started - Installation</li>
+    <li><a href="../ncservice.html" title="Option 1: using NCService"><span class="none"></span>Option 1: using NCService</a></li>
+    <li><a href="../ansible.html" title="Option 2: using Ansible"><span class="none"></span>Option 2: using Ansible</a></li>
+    <li><a href="../aws.html" title="Option 3: using Amazon Web Services"><span class="none"></span>Option 3: using Amazon Web Services</a></li>
+      <li class="nav-header">AsterixDB Primer</li>
+    <li><a href="../sqlpp/primer-sqlpp.html" title="Using SQL++"><span class="none"></span>Using SQL++</a></li>
+      <li class="nav-header">Data Model</li>
+    <li><a href="../datamodel.html" title="The Asterix Data Model"><span class="none"></span>The Asterix Data Model</a></li>
+      <li class="nav-header">Queries</li>
+    <li><a href="../sqlpp/manual.html" title="The SQL++ Query Language"><span class="none"></span>The SQL++ Query Language</a></li>
+    <li><a href="../SQLPP.html" title="Raw SQL++ Grammar"><span class="none"></span>Raw SQL++ Grammar</a></li>
+    <li><a href="../sqlpp/builtins.html" title="Builtin Functions"><span class="none"></span>Builtin Functions</a></li>
+      <li class="nav-header">API/SDK</li>
+    <li><a href="../api.html" title="HTTP API"><span class="none"></span>HTTP API</a></li>
+    <li><a href="../csv.html" title="CSV Output"><span class="none"></span>CSV Output</a></li>
+      <li class="nav-header">Advanced Features</li>
+    <li><a href="../aql/externaldata.html" title="Accessing External Data"><span class="none"></span>Accessing External Data</a></li>
+    <li><a href="../feeds.html" title="Data Ingestion with Feeds"><span class="none"></span>Data Ingestion with Feeds</a></li>
+    <li><a href="../udf.html" title="User Defined Functions"><span class="none"></span>User Defined Functions</a></li>
+    <li><a href="../sqlpp/filters.html" title="Filter-Based LSM Index Acceleration"><span class="none"></span>Filter-Based LSM Index Acceleration</a></li>
+    <li><a href="../sqlpp/fulltext.html" title="Support of Full-text Queries"><span class="none"></span>Support of Full-text Queries</a></li>
+    <li><a href="../sqlpp/similarity.html" title="Support of Similarity Queries"><span class="none"></span>Support of Similarity Queries</a></li>
+    <li class="active"><a href="#"><span class="none"></span>GIS Support Overview</a></li>
+    <li><a href="../geo/functions.html" title="GIS Functions"><span class="none"></span>GIS Functions</a></li>
+    <li><a href="../interval_join.html" title="Support of Interval Joins"><span class="none"></span>Support of Interval Joins</a></li>
+    <li><a href="../spatial_join.html" title="Support of Spatial Joins"><span class="none"></span>Support of Spatial Joins</a></li>
+    <li><a href="../sqlpp/arrayindex.html" title="Support of Array Indexes"><span class="none"></span>Support of Array Indexes</a></li>
+      <li class="nav-header">Deprecated</li>
+    <li><a href="../aql/primer.html" title="AsterixDB Primer: Using AQL"><span class="none"></span>AsterixDB Primer: Using AQL</a></li>
+    <li><a href="../aql/manual.html" title="Queries: The Asterix Query Language (AQL)"><span class="none"></span>Queries: The Asterix Query Language (AQL)</a></li>
+    <li><a href="../aql/builtins.html" title="Queries: Builtin Functions (AQL)"><span class="none"></span>Queries: Builtin Functions (AQL)</a></li>
+</ul>
+          <hr />
+          <div id="poweredBy">
+            <div class="clear"></div>
+            <div class="clear"></div>
+            <div class="clear"></div>
+            <div class="clear"></div>
+<a href=".././" title="AsterixDB" class="builtBy"><img class="builtBy"  alt="AsterixDB" src="../images/asterixlogo.png"    /></a>
+            </div>
+          </div>
+        </div>
+        <div id="bodyColumn"  class="span10" >
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements.  See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership.  The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License.  You may obtain a copy of the License at
+ !
+ !   http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing,
+ ! software distributed under the License is distributed on an
+ ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ! KIND, either express or implied.  See the License for the
+ ! specific language governing permissions and limitations
+ ! under the License.
+ !-->
+<h1>Getting Started with GIS in AsterixDB (DRAFT)</h1>
+<div class="section">
+<h2><a name="Table_of_Contents"></a><a name="toc" id="toc">Table of Contents</a></h2>
+<ul>
+
+<li><a href="#Introduction">Introduction</a></li>
+<li><a href="#create">Create a GIS data type</a></li>
+<li><a href="#update">Insert geometry data</a></li>
+<li><a href="#query">Query geometries</a></li>
+<li><a href="#query2">Spatial analysis function</a></li>
+<li><a href="#aggre">Spatial aggregate example</a></li>
+<li><a href="#range">Range query</a></li>
+<li><a href="#knn">K Nearest Neighbor (KNN) query</a></li>
+<li><a href="#joint">Spatial join query</a></li>
+</ul></div>
+<div class="section">
+<h2><a name="Introduction" id="Introduction">Introduction</a></h2>
+<p>This page provides a simple guide to the OGC-compliant geometry functionality in AsterixDB. Internally, AsterixDB relies on the open source library <a class="externalLink" href="https://github.com/Esri/geometry-api-java">Esri/geometry-api-java</a> that provides OGC-geometry feature processing. Currently, the AsterixDB geometry library supports <a class="externalLink" href="https://tools.ietf.org/html/rfc7946">GeoJSON</a>, <a class="externalLink" href="http://docs.opengeospatial.org/is/12-063r5/12-063r5.html">Well known Text</a> and <a class="externalLink" href="http://portal.opengeospatial.org/files/?artifact_id=25354">Well known Binary formats</a>. For a complete list of all the functions, please check the <a href="functions.md">AsterixDB GIS functions page</a>. Here are some detailed examples.</p></div>
+<div class="section">
+<h2><a name="Create_a_GIS_data_type"></a><a name="create" id="create">Create a GIS data type</a></h2>
+
+<div>
+<div>
+<pre class="source">DROP  DATAVERSE GISTest IF EXISTS;
+CREATE  DATAVERSE GISTest;
+USE GISTest;
+ 
+CREATE TYPE GeometryType AS{
+  id : int,
+  myGeometry : geometry
+};
+ 
+CREATE DATASET Geometries (GeometryType) PRIMARY KEY id;
+</pre></div></div>
+</div>
+<div class="section">
+<h2><a name="Insert_geometry_data"></a><a name="update" id="update">Insert geometry data</a></h2>
+
+<div>
+<div>
+<pre class="source">USE GISTest;
+
+INSERT INTO Geometries ([
+{&quot;id&quot;: 123, &quot;myGeometry&quot;: st_geom_from_geojson({&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[-118.4,33.93]})},
+{&quot;id&quot;: 124, &quot;myGeometry&quot;: st_geom_from_geojson({&quot;type&quot;:&quot;Polygon&quot;,&quot;coordinates&quot;:[[[8.7599721,49.7103028],[8.759997,49.7102752],[8.7600145,49.7102818],[8.7600762,49.7102133],[8.760178,49.7102516],[8.7600914,49.7103478],[8.7599721,49.7103028]]]})},
+{&quot;id&quot;: 126, &quot;myGeometry&quot;: st_geom_from_geojson({&quot;type&quot;:&quot;LineString&quot;,&quot;coordinates&quot;:[[-69.1991349,-12.6006222],[-69.199136,-12.599842],[-69.1982979,-12.5998268],[-69.1982598,-12.599869],[-69.1982188,-12.5998698],[-69.19817,-12.5998707],[-69.198125,-12.5998218],[-69.1973024,-12.5998133],[-69.1972972,-12.6003109],[-69.197394,-12.6003514],[-69.1973906,-12.6009231],[-69.1975115,-12.601026],[-69.1975081,-12.6010968]]})},
+{&quot;id&quot;: 127, &quot;myGeometry&quot;: st_geom_from_geojson({&quot;type&quot;: &quot;MultiPoint&quot;,&quot;coordinates&quot;: [[10, 40], [40, 30], [20, 20], [30, 10]]})},
+{&quot;id&quot;: 128, &quot;myGeometry&quot;: st_geom_from_geojson({&quot;type&quot;: &quot;MultiLineString&quot;,&quot;coordinates&quot;: [[[10, 10], [20, 20], [10, 40]],[[40, 40], [30, 30], [40, 20], [30, 10]]]})},
+{&quot;id&quot;: 129, &quot;myGeometry&quot;: st_geom_from_geojson({&quot;type&quot;: &quot;MultiPolygon&quot;,&quot;coordinates&quot;: [[[[40, 40], [20, 45], [45, 30], [40, 40]]],[[[20, 35], [10, 30], [10, 10], [30, 5], [45, 20], [20, 35]],[[30, 20], [20, 15], [20, 25], [30, 20]]]]})},
+{&quot;id&quot;: 130, &quot;myGeometry&quot;: st_make_point(-71.1043443253471, 42.3150676015829)},
+{&quot;id&quot;: 131, &quot;myGeometry&quot;: st_make_point(1.0,2.0,3.0)},
+{&quot;id&quot;: 132, &quot;myGeometry&quot;: st_make_point(1.0,2.0,3.0,4.0)},
+{&quot;id&quot;: 133, &quot;myGeometry&quot;: st_geom_from_text('POLYGON((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,743238 2967416))')},
+{&quot;id&quot;: 134, &quot;myGeometry&quot;: st_geom_from_wkb(hex(&quot;0102000000020000001F85EB51B87E5CC0D34D621058994340105839B4C87E5CC0295C8FC2F5984340&quot;))},
+{&quot;id&quot;: 135, &quot;myGeometry&quot;: st_line_from_multipoint(st_geom_from_text('MULTIPOINT(1 2 , 4 5 , 7 8 )'))},
+{&quot;id&quot;: 136, &quot;myGeometry&quot;: st_make_envelope(10, 10, 11, 11, 4326)},
+{&quot;id&quot;: 137, &quot;myGeometry&quot;: st_geom_from_text(&quot;POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),(20 30, 35 35, 30 20, 20 30))&quot;)}
+]);
+</pre></div></div>
+</div>
+<div class="section">
+<h2><a name="Query_geometries"></a><a name="query" id="query">Query geometries</a></h2>
+
+<div>
+<div>
+<pre class="source">USE GISTest;
+
+FROM Geometries SELECT *;
+</pre></div></div>
+
+<p>result:</p>
+
+<div>
+<div>
+<pre class="source">{ &quot;Geometries&quot;: { &quot;id&quot;: 124, &quot;myGeometry&quot;: {&quot;type&quot;:&quot;Polygon&quot;,&quot;coordinates&quot;:[[[8.7599721,49.7103028],[8.759997,49.7102752],[8.7600145,49.7102818],[8.7600762,49.7102133],[8.760178,49.7102516],[8.7600914,49.7103478],[8.7599721,49.7103028]]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}} } }
+{ &quot;Geometries&quot;: { &quot;id&quot;: 126, &quot;myGeometry&quot;: {&quot;type&quot;:&quot;LineString&quot;,&quot;coordinates&quot;:[[-69.1991349,-12.6006222],[-69.199136,-12.599842],[-69.1982979,-12.5998268],[-69.1982598,-12.599869],[-69.1982188,-12.5998698],[-69.19817,-12.5998707],[-69.198125,-12.5998218],[-69.1973024,-12.5998133],[-69.1972972,-12.6003109],[-69.197394,-12.6003514],[-69.1973906,-12.6009231],[-69.1975115,-12.601026],[-69.1975081,-12.6010968]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}} } }
+{ &quot;Geometries&quot;: { &quot;id&quot;: 128, &quot;myGeometry&quot;: {&quot;type&quot;:&quot;MultiLineString&quot;,&quot;coordinates&quot;:[[[10,10],[20,20],[10,40]],[[40,40],[30,30],[40,20],[30,10]]],&quot;crs&quot;:null} } }
+{ &quot;Geometries&quot;: { &quot;id&quot;: 132, &quot;myGeometry&quot;: {&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[1,2,3,4],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}} } }
+{ &quot;Geometries&quot;: { &quot;id&quot;: 133, &quot;myGeometry&quot;: {&quot;type&quot;:&quot;Polygon&quot;,&quot;coordinates&quot;:[[[743238,2967416],[743265.625,2967416],[743265,2967450],[743238,2967450],[743238,2967416]]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}} } }
+{ &quot;Geometries&quot;: { &quot;id&quot;: 134, &quot;myGeometry&quot;: {&quot;type&quot;:&quot;LineString&quot;,&quot;coordinates&quot;:[[-113.98,39.198],[-113.981,39.195]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}} } }
+{ &quot;Geometries&quot;: { &quot;id&quot;: 135, &quot;myGeometry&quot;: {&quot;type&quot;:&quot;LineString&quot;,&quot;coordinates&quot;:[[1,2],[4,5],[7,8]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}} } }
+{ &quot;Geometries&quot;: { &quot;id&quot;: 136, &quot;myGeometry&quot;: {&quot;type&quot;:&quot;Polygon&quot;,&quot;coordinates&quot;:[[[10,10],[11,10],[11,11],[10,11],[10,10]]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}} } }
+{ &quot;Geometries&quot;: { &quot;id&quot;: 123, &quot;myGeometry&quot;: {&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[-118.4,33.93],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}} } }
+{ &quot;Geometries&quot;: { &quot;id&quot;: 127, &quot;myGeometry&quot;: {&quot;type&quot;:&quot;MultiPoint&quot;,&quot;coordinates&quot;:[[10,40],[40,30],[20,20],[30,10]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}} } }
+{ &quot;Geometries&quot;: { &quot;id&quot;: 129, &quot;myGeometry&quot;: {&quot;type&quot;:&quot;MultiPolygon&quot;,&quot;coordinates&quot;:[[[[40,40],[20,45],[45,30],[40,40]]],[[[20,35],[10,30],[10,10],[30,5],[45,20],[20,35]],[[30,20],[20,15],[20,25],[30,20]]]],&quot;crs&quot;:null} } }
+{ &quot;Geometries&quot;: { &quot;id&quot;: 130, &quot;myGeometry&quot;: {&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[-71.1043443253471,42.3150676015829],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}} } }
+{ &quot;Geometries&quot;: { &quot;id&quot;: 131, &quot;myGeometry&quot;: {&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[1,2,3],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}} } }
+{ &quot;Geometries&quot;: { &quot;id&quot;: 137, &quot;myGeometry&quot;: {&quot;type&quot;:&quot;Polygon&quot;,&quot;coordinates&quot;:[[[35,10],[45,45],[15,40],[10,20],[35,10]],[[20,30],[35,35],[30,20],[20,30]]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}} } }
+</pre></div></div>
+</div>
+<div class="section">
+<h2><a name="Spatial_analysis_functions"></a><a name="query2" id="query2">Spatial analysis functions</a></h2>
+<p>The following query filters out only the geometries of type &#x201c;Polygon&#x201d; and displays the geometry in the Well known text format along with the area of the relevant geometry.</p>
+
+<div>
+<div>
+<pre class="source">USE GISTest;
+
+FROM Geometries as geo
+WHERE geometry_type(geo.myGeometry)='Polygon'
+SELECT VALUE {&quot;Polygon&quot;:st_as_text(geo.myGeometry), &quot;Area&quot;:st_area(geo.myGeometry)};
+</pre></div></div>
+
+<p>result:</p>
+
+<div>
+<div>
+<pre class="source">{ &quot;Polygon&quot;: &quot;POLYGON ((8.7599721 49.7103028, 8.759997 49.7102752, 8.7600145 49.7102818, 8.7600762 49.7102133, 8.760178 49.7102516, 8.7600914 49.7103478, 8.7599721 49.7103028))&quot;, &quot;Area&quot;: 1.3755215000294761E-8 }
+{ &quot;Polygon&quot;: &quot;POLYGON ((743238 2967416, 743265.625 2967416, 743265 2967450, 743238 2967450, 743238 2967416))&quot;, &quot;Area&quot;: 928.625 }
+{ &quot;Polygon&quot;: &quot;POLYGON ((10 10, 11 10, 11 11, 10 11, 10 10))&quot;, &quot;Area&quot;: 1.0 }
+{ &quot;Polygon&quot;: &quot;POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30 20, 20 30))&quot;, &quot;Area&quot;: 675.0 }
+</pre></div></div>
+</div>
+<div class="section">
+<h2><a name="Spatial_aggregate_example"></a><a name="query2" id="query2">Spatial aggregate example</a></h2>
+<p><tt>st_union</tt> function has been implemented both as a normal and an aggregate function. The following query shows how to query the aggregate version of this function:</p>
+
+<div>
+<div>
+<pre class="source">USE GISTest;
+
+st_union((SELECT VALUE gbu.myGeometry FROM Geometries as gbu));
+</pre></div></div>
+
+<p>result:</p>
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;MultiPolygon&quot;,&quot;coordinates&quot;:[[[[10,10],[30,5],[35,10],[45,20],[38.90243902439025,23.65853658536585],[41.34146341463415,32.19512195121951],[45,30],[42.27272727272727,35.45454545454545],[45,45],[30,42.5],[20,45],[25.434782608695656,41.73913043478261],[15,40],[12.857142857142858,31.428571428571427],[10,30],[10,20],[10,11],[10,10]],[[32.5,27.5],[25.357142857142858,31.785714285714285],[35,35],[32.5,27.5]],[[20,15],[20,16],[21.11111111111111,15.555555555555555],[20,15]]],[[[8.7600762,49.7102133],[8.760178,49.7102516],[8.7600914,49.7103478],[8.7599721,49.7103028],[8.759997,49.7102752],[8.7600145,49.7102818],[8.7600762,49.7102133]]],[[[743238,2967416],[743265.625,2967416],[743265,2967450],[743238,2967450],[743238,2967416]]]],&quot;crs&quot;:null}
+</pre></div></div>
+</div>
+<div class="section">
+<h2><a name="Range_query"></a><a name="range" id="range">Range query</a></h2>
+
+<div>
+<div>
+<pre class="source">USE GISTest;
+
+FROM Geometries geo
+WHERE st_intersects(geo.myGeometry, st_geom_from_text(&quot;POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2))&quot;))
+SELECT VALUE geo.myGeometry;
+</pre></div></div>
+
+<p>result:</p>
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[1,2,3,4],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+{&quot;type&quot;:&quot;LineString&quot;,&quot;coordinates&quot;:[[1,2],[4,5],[7,8]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+{&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[1,2,3],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+</pre></div></div>
+</div>
+<div class="section">
+<h2><a name="K_Nearest_Neighbor_.28KNN.29_query"></a><a name="knn" id="knn">K Nearest Neighbor (KNN) query</a></h2>
+
+<div>
+<div>
+<pre class="source">USE GISTest;
+
+FROM Geometries geo
+SELECT VALUE geo.myGeometry
+ORDER BY st_distance(geo.myGeometry, st_make_point(1,2))
+LIMIT 5;
+</pre></div></div>
+
+<p>result:</p>
+
+<div>
+<div>
+<pre class="source">{&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[1,2,3,4],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+{&quot;type&quot;:&quot;LineString&quot;,&quot;coordinates&quot;:[[1,2],[4,5],[7,8]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+{&quot;type&quot;:&quot;Point&quot;,&quot;coordinates&quot;:[1,2,3],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+{&quot;type&quot;:&quot;Polygon&quot;,&quot;coordinates&quot;:[[[10,10],[11,10],[11,11],[10,11],[10,10]]],&quot;crs&quot;:{&quot;type&quot;:&quot;name&quot;,&quot;properties&quot;:{&quot;name&quot;:&quot;EPSG:4326&quot;}}}
+{&quot;type&quot;:&quot;MultiLineString&quot;,&quot;coordinates&quot;:[[[10,10],[20,20],[10,40]],[[40,40],[30,30],[40,20],[30,10]]],&quot;crs&quot;:null}
+</pre></div></div>
+</div>
+<div class="section">
+<h2><a name="Spatial_join_query"></a><a name="joint" id="joint">Spatial join query</a></h2>
+<p>For the spatial join query let us create a new dataverse and two new data types:</p>
+
+<div>
+<div>
+<pre class="source">DROP  DATAVERSE SJTest IF EXISTS;
+CREATE  DATAVERSE SJTest;
+USE SJTest;
+
+CREATE TYPE StateType AS{
+id : int,
+name: string,
+boundary : geometry
+};
+
+CREATE DATASET States (StateType) PRIMARY KEY id;
+
+CREATE TYPE POIType AS {
+id : int,
+longitude : double,
+latitude : double
+};
+
+CREATE DATASET POIS (POIType) PRIMARY KEY id;
+</pre></div></div>
+
+<p>Insert data into states:</p>
+
+<div>
+<div>
+<pre class="source">USE SJTest;
+
+INSERT INTO States ([
+                    {&quot;id&quot;: 1, &quot;name&quot;: &quot;Nebraska&quot;, &quot;boundary&quot;: st_geom_from_text(&quot;POLYGON ((-104.05341854507101 41.1705389679833, -104.053028 43.000586999999996, -98.49855 42.99856, -98.01304599999999 42.762299, -97.306677 42.867604, -96.38600699999999 42.474495, -96.06487899999999 41.79623, -96.09200799999999 41.53391, -95.87468899999999 41.307097, -95.88534899999999 40.721092999999996, -95.30829 39.999998, -102.051744 40.003077999999995, -102.051614 41.002376999999996, -104.053249 41.001405999999996, -104.05341854507101 41.1705389679833))&quot;) },
+                    {&quot;id&quot;: 2, &quot;name&quot;: &quot;Washington&quot;, &quot;boundary&quot;: st_geom_from_text(&quot;MULTIPOLYGON (((-124.732755385025 48.165328947686795, -124.676262 48.391371, -123.981032 48.164761, -123.10189199999999 48.184951999999996, -122.871992 47.993493, -122.75413 48.1447, -122.610341 47.887343, -122.784553 47.686561, -122.864651 47.804669, -123.157948 47.356235999999996, -122.874586 47.413874, -123.119681 47.385532, -122.525329 47.912335999999996, -122.54636949132416 47.317877648507704, -122.324833 47.348521, -122.43694099999999 47.661719, -122.218982 48.020275999999996, -122.383911 48.227486, -122.47892813788141 48.175746487177165, -122.388048 48.30083, -122.57760827271139 48.38291646865838, -122.505828 48.297677, -122.732358 48.226144, -122.3773 47.905941, -122.769939 48.227548, -122.60660653630984 48.395473767832804, -122.674158 48.424726, -122.425271 48.599522, -122.535803 48.776128, -122.673472 48.733081999999996, -122.75802 49.002356999999996, -117.032351 48.999188, -117.062748 46.353623999999996, -116.915989 45.995413, -118.987129 45.999855, -121.145534 45.607886, -121.533106 45.726541, -122.266701 45.543841, -122.67500799999999 45.618038999999996, -123.004233 46.133823, -124.07776799999999 46.272324, -124.06905 46.647258, -123.953699 46.378845, -123.829356 46.713356, -124.092176 46.741623999999995, -124.138225 46.905533999999996, -123.83890000000001 46.953950999999996, -124.122057 47.04165, -124.173877 46.927234999999996, -124.425195 47.738434, -124.732755385025 48.165328947686795), (-122.56199279209496 47.29381043649037, -122.683943 47.365154999999994, -122.76539771783851 47.18116187703539, -122.678476 47.102742, -122.56199279209496 47.29381043649037), (-122.77734484602688 47.19194045282469, -122.82666 47.405806999999996, -122.871472 47.276861, -122.77734484602688 47.19194045282469)), ((-122.4789801236288 48.17567493623048, -122.358963 48.054851, -122.510562 48.132207, -122.4789801236288 48.17567493623048)), ((-122.526031 47.358906, -122.457246 47.505848, -122.373627 47.388718, -122.526031 47.358906)))&quot;) },
+                    {&quot;id&quot;: 3, &quot;name&quot;: &quot;New Mexico&quot;, &quot;boundary&quot;: st_geom_from_text(&quot;POLYGON ((-109.050173 31.480003999999997, -109.045223 36.999083999999996, -103.002199 37.000104, -103.064423 32.000518, -106.618486 32.000495, -106.528242 31.783147999999997, -108.208394 31.783599, -108.208573 31.333395, -109.050044 31.332501999999998, -109.050173 31.480003999999997))&quot;) },
+                    {&quot;id&quot;: 4, &quot;name&quot;: &quot;South Dakota&quot;, &quot;boundary&quot;: st_geom_from_text(&quot;POLYGON ((-104.057698 44.997431, -104.045443 45.94531, -96.563672 45.935238999999996, -96.857751 45.605962, -96.45306699999999 45.298114999999996, -96.45326 43.500389999999996, -96.60285999999999 43.450907, -96.436589 43.120841999999996, -96.639704 42.737071, -96.44550799999999 42.490629999999996, -97.23786799999999 42.853139, -98.035034 42.764205, -98.49855 42.99856, -104.053028 43.000586999999996, -104.057698 44.997431))&quot;) }
+                    ]);
+</pre></div></div>
+
+<p>Insert data into POIS:</p>
+
+<div>
+<div>
+<pre class="source">USE SJTest;
+
+INSERT INTO POIS ([{&quot;id&quot;: 477884092592037888, &quot;latitude&quot;: 41.1029498, &quot;longitude&quot;: -96.2632202 },
+                  {&quot;id&quot;: 477689754977181696, &quot;latitude&quot;: 47.23433434, &quot;longitude&quot;: -122.15083003 },
+                  {&quot;id&quot;: 477697263058157569, &quot;latitude&quot;: 35.27988499, &quot;longitude&quot;: -106.6787443 },
+                  {&quot;id&quot;: 477833117374611456, &quot;latitude&quot;: 44.11614436, &quot;longitude&quot;: -103.06577797 },
+                  {&quot;id&quot;: 477957785909735424, &quot;latitude&quot;: 39.81871193, &quot;longitude&quot;: -75.53023171 },
+                  {&quot;id&quot;: 477890178640384001, &quot;latitude&quot;: 37.5688636, &quot;longitude&quot;: -77.4540628 },
+                  {&quot;id&quot;: 478004308827717632, &quot;latitude&quot;: 39.14933024, &quot;longitude&quot;: -84.43623134 },
+                  {&quot;id&quot;: 478029048799846401, &quot;latitude&quot;: 40.3030824, &quot;longitude&quot;: -121.228368 }
+                  ]);
+</pre></div></div>
+
+<p>Now let us perform the spatial join query:</p>
+
+<div>
+<div>
+<pre class="source">USE SJTest;
+
+FROM States, POIS
+WHERE st_contains(States.boundary, st_make_point(POIS.longitude, POIS.latitude))
+SELECT States.name, POIS.id;
+</pre></div></div>
+
+<p>result:</p>
+
+<div>
+<div>
+<pre class="source">{ &quot;name&quot;: &quot;Nebraska&quot;, &quot;id&quot;: 477884092592037888 }
+{ &quot;name&quot;: &quot;Washington&quot;, &quot;id&quot;: 477689754977181696 }
+{ &quot;name&quot;: &quot;South Dakota&quot;, &quot;id&quot;: 477833117374611456 }
+{ &quot;name&quot;: &quot;New Mexico&quot;, &quot;id&quot;: 477697263058157569 }
+</pre></div></div>
+
+<p>You can find a more comprehensive spatial join example <a href="../../resources/data/SJ.sqlpp">here</a>.</p></div>
+        </div>
+      </div>
+    </div>
+    <hr/>
+    <footer>
+      <div class="container-fluid">
+        <div class="row-fluid">
+<div class="row-fluid">Apache AsterixDB, AsterixDB, Apache, the Apache
+        feather logo, and the Apache AsterixDB project logo are either
+        registered trademarks or trademarks of The Apache Software
+        Foundation in the United States and other countries.
+        All other marks mentioned may be trademarks or registered
+        trademarks of their respective owners.
+      </div>
+        </div>
+      </div>
+    </footer>
+  </body>
+</html>
