You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sedona.apache.org by ji...@apache.org on 2024/01/13 09:02:26 UTC

(sedona) 02/02: Add steps to explain how to install Sedona Snowflake manually

This is an automated email from the ASF dual-hosted git repository.

jiayu pushed a commit to branch sedonasnow-doc
in repository https://gitbox.apache.org/repos/asf/sedona.git

commit 78faaad6334087b90aa5ef6366b71d3bc940d427
Author: Jia Yu <ji...@apache.org>
AuthorDate: Sat Jan 13 01:02:14 2024 -0800

    Add steps to explain how to install Sedona Snowflake manually
---
 docs/image/snowflake/sedona-snowflake.sql | 2395 +++++++++++++++++++++++++++++
 docs/image/snowflake/snowflake-1.png      |  Bin 0 -> 68008 bytes
 docs/image/snowflake/snowflake-2.png      |  Bin 0 -> 35804 bytes
 docs/image/snowflake/snowflake-3.png      |  Bin 0 -> 55069 bytes
 docs/image/snowflake/snowflake-4.png      |  Bin 0 -> 39683 bytes
 docs/image/snowflake/snowflake-5.png      |  Bin 0 -> 9487 bytes
 docs/image/snowflake/snowflake-6.png      |  Bin 0 -> 60114 bytes
 docs/image/snowflake/snowflake-7.png      |  Bin 0 -> 102852 bytes
 docs/image/snowflake/snowflake-8.png      |  Bin 0 -> 63719 bytes
 docs/setup/maven-coordinates.md           |   28 +-
 docs/setup/snowflake/install.md           |  103 +-
 docs/tutorial/snowflake/sql.md            |   20 +-
 12 files changed, 2524 insertions(+), 22 deletions(-)

diff --git a/docs/image/snowflake/sedona-snowflake.sql b/docs/image/snowflake/sedona-snowflake.sql
new file mode 100644
index 000000000..ea71e528b
--- /dev/null
+++ b/docs/image/snowflake/sedona-snowflake.sql
@@ -0,0 +1,2395 @@
+-- IsNativeApp is false. Generating DDL for User-Managed Snowflake Account
+-- UDFs --
+create or replace function sedona.ST_SimplifyPreserveTopology (geometry BINARY, distanceTolerance DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_SimplifyPreserveTopology'
+;
+create or replace function sedona.ST_Affine (geometry BINARY, a DOUBLE, b DOUBLE, c DOUBLE, d DOUBLE, e DOUBLE, f DOUBLE, g DOUBLE, h DOUBLE, i DOUBLE, xOff DOUBLE, yOff DOUBLE, zOff DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Affine'
+;
+create or replace function sedona.ST_Affine (geometry BINARY, a DOUBLE, b DOUBLE, c DOUBLE, d DOUBLE, e DOUBLE, f DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Affine'
+;
+create or replace function sedona.ST_Angle (geom1 BINARY, geom2 BINARY, geom3 BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Angle'
+;
+create or replace function sedona.ST_Angle (geom1 BINARY, geom2 BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Angle'
+;
+create or replace function sedona.ST_Angle (geom1 BINARY, geom2 BINARY, geom3 BINARY, geom4 BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Angle'
+;
+create or replace function sedona.ST_Area (geometry BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Area'
+;
+create or replace function sedona.ST_AsEWKB (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_AsEWKB'
+;
+create or replace function sedona.ST_AsEWKT (geometry BINARY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_AsEWKT'
+;
+create or replace function sedona.ST_AsGML (geometry BINARY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_AsGML'
+;
+create or replace function sedona.ST_AsKML (geometry BINARY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_AsKML'
+;
+create or replace function sedona.ST_Azimuth (left BINARY, right BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Azimuth'
+;
+create or replace function sedona.ST_Buffer (geometry BINARY, radius DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Buffer'
+;
+create or replace function sedona.ST_Covers (leftGeometry BINARY, rightGeometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Covers'
+;
+create or replace function sedona.ST_Crosses (leftGeometry BINARY, rightGeometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Crosses'
+;
+create or replace function sedona.ST_Degrees (angleInRadian DOUBLE)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Degrees'
+;
+create or replace function sedona.ST_Equals (leftGeometry BINARY, rightGeometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Equals'
+;
+create or replace function sedona.ST_Force2D (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Force2D'
+;
+create or replace function sedona.ST_GeoHash (geometry BINARY, precision NUMBER)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeoHash'
+;
+create or replace function sedona.ST_IsEmpty (geometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_IsEmpty'
+;
+create or replace function sedona.ST_IsRing (geometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_IsRing'
+;
+create or replace function sedona.ST_IsValid (geometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_IsValid'
+;
+create or replace function sedona.ST_IsValid (geometry BINARY, flags NUMBER)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_IsValid'
+;
+create or replace function sedona.ST_Length (geometry BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Length'
+;
+create or replace function sedona.ST_Multi (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Multi'
+;
+create or replace function sedona.ST_NDims (geometry BINARY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_NDims'
+;
+create or replace function sedona.ST_NPoints (geometry BINARY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_NPoints'
+;
+create or replace function sedona.ST_Point (x DOUBLE, y DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Point'
+;
+create or replace function sedona.ST_PointN (geometry BINARY, n NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_PointN'
+;
+create or replace function sedona.ST_PointZ (x DOUBLE, y DOUBLE, z DOUBLE, srid NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_PointZ'
+;
+create or replace function sedona.ST_PointZ (x DOUBLE, y DOUBLE, z DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_PointZ'
+;
+create or replace function sedona.ST_Polygon (geometry BINARY, srid NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Polygon'
+;
+create or replace function sedona.ST_Reverse (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Reverse'
+;
+create or replace function sedona.ST_SRID (geometry BINARY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_SRID'
+;
+create or replace function sedona.ST_AsText (geometry BINARY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_AsText'
+;
+create or replace function sedona.ST_SetSRID (geometry BINARY, srid NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_SetSRID'
+;
+create or replace function sedona.ST_Split (input BINARY, blade BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Split'
+;
+create or replace function sedona.ST_Touches (leftGeometry BINARY, rightGeometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Touches'
+;
+create or replace function sedona.ST_Union (leftGeom BINARY, rightGeom BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Union'
+;
+create or replace function sedona.ST_Within (leftGeometry BINARY, rightGeometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Within'
+;
+create or replace function sedona.ST_X (geometry BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_X'
+;
+create or replace function sedona.ST_XMax (geometry BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_XMax'
+;
+create or replace function sedona.ST_XMin (geometry BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_XMin'
+;
+create or replace function sedona.ST_Y (geometry BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Y'
+;
+create or replace function sedona.ST_YMax (geometry BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_YMax'
+;
+create or replace function sedona.ST_YMin (geometry BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_YMin'
+;
+create or replace function sedona.ST_Z (geometry BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Z'
+;
+create or replace function sedona.ST_ZMax (geometry BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_ZMax'
+;
+create or replace function sedona.ST_ZMin (geometry BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_ZMin'
+;
+create or replace function sedona.ST_DWithin (geomA BINARY, geomB BINARY, distance DOUBLE)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_DWithin'
+;
+create or replace function sedona.ST_Force3D (geom BINARY, zValue DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Force3D'
+;
+create or replace function sedona.ST_Force3D (geom BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Force3D'
+;
+create or replace function sedona.ST_NRings (geom BINARY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_NRings'
+;
+create or replace function sedona.GeometryType (geometry BINARY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.GeometryType'
+;
+create or replace function sedona.ST_AddPoint (linestring BINARY, point BINARY, position NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_AddPoint'
+;
+create or replace function sedona.ST_AsBinary (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_AsBinary'
+;
+create or replace function sedona.ST_AsGeoJSON (geometry BINARY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_AsGeoJSON'
+;
+create or replace function sedona.ST_Boundary (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Boundary'
+;
+create or replace function sedona.ST_BoundingDiagonal (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_BoundingDiagonal'
+;
+create or replace function sedona.ST_BuildArea (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_BuildArea'
+;
+create or replace function sedona.ST_Centroid (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Centroid'
+;
+create or replace function sedona.ST_ClosestPoint (geometry1 BINARY, geometry2 BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_ClosestPoint'
+;
+create or replace function sedona.ST_CollectionExtract (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_CollectionExtract'
+;
+create or replace function sedona.ST_CollectionExtract (geometry BINARY, geomType NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_CollectionExtract'
+;
+create or replace function sedona.ST_ConcaveHull (geometry BINARY, pctConvex DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_ConcaveHull'
+;
+create or replace function sedona.ST_ConcaveHull (geometry BINARY, pctConvex DOUBLE, allowHoles BOOLEAN)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_ConcaveHull'
+;
+create or replace function sedona.ST_Contains (leftGeometry BINARY, rightGeometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Contains'
+;
+create or replace function sedona.ST_CoordDim (geometry BINARY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_CoordDim'
+;
+create or replace function sedona.ST_ConvexHull (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_ConvexHull'
+;
+create or replace function sedona.ST_CoveredBy (leftGeometry BINARY, rightGeometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_CoveredBy'
+;
+create or replace function sedona.ST_Difference (leftGeometry BINARY, rightGeometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Difference'
+;
+create or replace function sedona.ST_Dimension (geometry BINARY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Dimension'
+;
+create or replace function sedona.ST_Disjoint (leftGeometry BINARY, rightGeometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Disjoint'
+;
+create or replace function sedona.ST_Distance (left BINARY, right BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Distance'
+;
+create or replace function sedona.ST_3DDistance (left BINARY, right BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_3DDistance'
+;
+create or replace function sedona.ST_DumpPoints (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_DumpPoints'
+;
+create or replace function sedona.ST_EndPoint (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_EndPoint'
+;
+create or replace function sedona.ST_Envelope (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Envelope'
+;
+create or replace function sedona.ST_ExteriorRing (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_ExteriorRing'
+;
+create or replace function sedona.ST_FlipCoordinates (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_FlipCoordinates'
+;
+create or replace function sedona.ST_Force_2D (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Force_2D'
+;
+create or replace function sedona.ST_GeomFromGML (gml VARCHAR)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeomFromGML'
+;
+create or replace function sedona.ST_GeomFromGeoHash (geoHash VARCHAR, precision NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeomFromGeoHash'
+;
+create or replace function sedona.ST_GeomFromGeoJSON (geoJson VARCHAR)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeomFromGeoJSON'
+;
+create or replace function sedona.ST_GeomFromKML (kml VARCHAR)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeomFromKML'
+;
+create or replace function sedona.ST_GeomFromText (wkt VARCHAR)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeomFromText'
+;
+create or replace function sedona.ST_GeomFromText (wkt VARCHAR, srid NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeomFromText'
+;
+create or replace function sedona.ST_GeomFromWKB (wkb BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeomFromWKB'
+;
+create or replace function sedona.ST_GeomFromWKT (wkt VARCHAR, srid NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeomFromWKT'
+;
+create or replace function sedona.ST_GeomFromWKT (wkt VARCHAR)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeomFromWKT'
+;
+create or replace function sedona.ST_GeometryN (geometry BINARY, n NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeometryN'
+;
+create or replace function sedona.ST_GeometryType (geometry BINARY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeometryType'
+;
+create or replace function sedona.ST_HausdorffDistance (geom1 BINARY, geom2 BINARY, densifyFrac DOUBLE)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_HausdorffDistance'
+;
+create or replace function sedona.ST_HausdorffDistance (geom1 BINARY, geom2 BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_HausdorffDistance'
+;
+create or replace function sedona.ST_InteriorRingN (geometry BINARY, n NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_InteriorRingN'
+;
+create or replace function sedona.ST_Intersection (leftGeometry BINARY, rightGeometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Intersection'
+;
+create or replace function sedona.ST_Intersects (leftGeometry BINARY, rightGeometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Intersects'
+;
+create or replace function sedona.ST_IsClosed (geometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_IsClosed'
+;
+create or replace function sedona.ST_IsCollection (geometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_IsCollection'
+;
+create or replace function sedona.ST_IsSimple (geometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_IsSimple'
+;
+create or replace function sedona.ST_IsValidReason (geometry BINARY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_IsValidReason'
+;
+create or replace function sedona.ST_IsValidReason (geometry BINARY, flags NUMBER)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_IsValidReason'
+;
+create or replace function sedona.ST_LineFromMultiPoint (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_LineFromMultiPoint'
+;
+create or replace function sedona.ST_LineFromText (geomString VARCHAR)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_LineFromText'
+;
+create or replace function sedona.ST_LineInterpolatePoint (geom BINARY, fraction DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_LineInterpolatePoint'
+;
+create or replace function sedona.ST_LineLocatePoint (geom BINARY, point BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_LineLocatePoint'
+;
+create or replace function sedona.ST_LineMerge (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_LineMerge'
+;
+create or replace function sedona.ST_LineStringFromText (geomString VARCHAR, delimiter VARCHAR)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_LineStringFromText'
+;
+create or replace function sedona.ST_LineSubstring (geom BINARY, fromFraction DOUBLE, toFraction DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_LineSubstring'
+;
+create or replace function sedona.ST_MakeLine (geometryCollection BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_MakeLine'
+;
+create or replace function sedona.ST_MakeLine (point1 BINARY, point2 BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_MakeLine'
+;
+create or replace function sedona.ST_MakePoint (x DOUBLE, y DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_MakePoint'
+;
+create or replace function sedona.ST_MakePoint (x DOUBLE, y DOUBLE, z DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_MakePoint'
+;
+create or replace function sedona.ST_MakePoint (x DOUBLE, y DOUBLE, z DOUBLE, m DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_MakePoint'
+;
+create or replace function sedona.ST_MLineFromText (wkt VARCHAR, srid NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_MLineFromText'
+;
+create or replace function sedona.ST_MLineFromText (wkt VARCHAR)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_MLineFromText'
+;
+create or replace function sedona.ST_MPolyFromText (wkt VARCHAR)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_MPolyFromText'
+;
+create or replace function sedona.ST_MPolyFromText (wkt VARCHAR, srid NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_MPolyFromText'
+;
+create or replace function sedona.ST_MakePolygon (shell BINARY, holes BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_MakePolygon'
+;
+create or replace function sedona.ST_MakePolygon (shell BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_MakePolygon'
+;
+create or replace function sedona.ST_MakeValid (geometry BINARY, keepCollapsed BOOLEAN)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_MakeValid'
+;
+create or replace function sedona.ST_MakeValid (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_MakeValid'
+;
+create or replace function sedona.ST_MinimumBoundingCircle (geometry BINARY, quadrantSegments NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_MinimumBoundingCircle'
+;
+create or replace function sedona.ST_Normalize (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Normalize'
+;
+create or replace function sedona.ST_NumGeometries (geometry BINARY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_NumGeometries'
+;
+create or replace function sedona.ST_NumInteriorRings (geometry BINARY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_NumInteriorRings'
+;
+create or replace function sedona.ST_OrderingEquals (leftGeometry BINARY, rightGeometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_OrderingEquals'
+;
+create or replace function sedona.ST_Overlaps (leftGeometry BINARY, rightGeometry BINARY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Overlaps'
+;
+create or replace function sedona.ST_PointFromText (geomString VARCHAR, geomFormat VARCHAR)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_PointFromText'
+;
+create or replace function sedona.ST_PointOnSurface (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_PointOnSurface'
+;
+create or replace function sedona.ST_PolygonFromEnvelope (minX DOUBLE, minY DOUBLE, maxX DOUBLE, maxY DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_PolygonFromEnvelope'
+;
+create or replace function sedona.ST_PolygonFromText (geomString VARCHAR, delimiter VARCHAR)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_PolygonFromText'
+;
+create or replace function sedona.ST_PrecisionReduce (geometry BINARY, precisionScale NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_PrecisionReduce'
+;
+create or replace function sedona.ST_ReducePrecision (geometry BINARY, precisionScale NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_ReducePrecision'
+;
+create or replace function sedona.ST_RemovePoint (linestring BINARY, position NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_RemovePoint'
+;
+create or replace function sedona.ST_RemovePoint (linestring BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_RemovePoint'
+;
+create or replace function sedona.ST_S2CellIDs (input BINARY, level NUMBER)
+returns ARRAY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_S2CellIDs'
+;
+create or replace function sedona.ST_SetPoint (linestring BINARY, position NUMBER, point BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_SetPoint'
+;
+create or replace function sedona.ST_StartPoint (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_StartPoint'
+;
+create or replace function sedona.ST_SubDivide (geometry BINARY, maxVertices NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_SubDivide'
+;
+create or replace function sedona.ST_SymDifference (leftGeom BINARY, rightGeom BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_SymDifference'
+;
+create or replace function sedona.ST_Transform (geometry BINARY, sourceCRS VARCHAR, targetCRS VARCHAR, lenient BOOLEAN)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Transform'
+;
+create or replace function sedona.ST_Transform (geometry BINARY, sourceCRS VARCHAR, targetCRS VARCHAR)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Transform'
+;
+create or replace function sedona.ST_VoronoiPolygons (geometry BINARY, tolerance DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_VoronoiPolygons'
+;
+create or replace function sedona.ST_VoronoiPolygons (geometry BINARY, tolerance DOUBLE, extent BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_VoronoiPolygons'
+;
+create or replace function sedona.ST_VoronoiPolygons (geometry BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_VoronoiPolygons'
+;
+create or replace function sedona.ST_AreaSpheroid (geometry BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_AreaSpheroid'
+;
+create or replace function sedona.ST_DistanceSphere (geomA BINARY, geomB BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_DistanceSphere'
+;
+create or replace function sedona.ST_DistanceSphere (geomA BINARY, geomB BINARY, radius DOUBLE)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_DistanceSphere'
+;
+create or replace function sedona.ST_DistanceSpheroid (geomA BINARY, geomB BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_DistanceSpheroid'
+;
+create or replace function sedona.ST_FrechetDistance (geomA BINARY, geomB BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_FrechetDistance'
+;
+create or replace function sedona.ST_LengthSpheroid (geom BINARY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_LengthSpheroid'
+;
+create or replace function sedona.ST_GeometricMedian (geom BINARY, tolerance FLOAT, maxIter NUMBER)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeometricMedian'
+;
+create or replace function sedona.ST_GeometricMedian (geom BINARY, tolerance FLOAT, maxIter NUMBER, failIfNotConverged BOOLEAN)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeometricMedian'
+;
+create or replace function sedona.ST_GeometricMedian (geom BINARY, tolerance FLOAT)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeometricMedian'
+;
+create or replace function sedona.ST_GeometricMedian (geom BINARY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_GeometricMedian'
+;
+create or replace function sedona.ST_NumPoints (geom BINARY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_NumPoints'
+;
+create or replace function sedona.ST_Translate (geom BINARY, deltaX DOUBLE, deltaY DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Translate'
+;
+create or replace function sedona.ST_Translate (geom BINARY, deltaX DOUBLE, deltaY DOUBLE, deltaZ DOUBLE)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFs.ST_Translate'
+;
+create or replace function sedona.ST_SimplifyPreserveTopology (geometry GEOMETRY, distanceTolerance DOUBLE)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_SimplifyPreserveTopology'
+;
+create or replace function sedona.ST_Affine (geometry GEOMETRY, a DOUBLE, b DOUBLE, c DOUBLE, d DOUBLE, e DOUBLE, f DOUBLE, g DOUBLE, h DOUBLE, i DOUBLE, xOff DOUBLE, yOff DOUBLE, zOff DOUBLE)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Affine'
+;
+create or replace function sedona.ST_Affine (geometry GEOMETRY, a DOUBLE, b DOUBLE, c DOUBLE, d DOUBLE, e DOUBLE, f DOUBLE)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Affine'
+;
+create or replace function sedona.ST_Angle (geom1 GEOMETRY, geom2 GEOMETRY, geom3 GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Angle'
+;
+create or replace function sedona.ST_Angle (geom1 GEOMETRY, geom2 GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Angle'
+;
+create or replace function sedona.ST_Angle (geom1 GEOMETRY, geom2 GEOMETRY, geom3 GEOMETRY, geom4 GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Angle'
+;
+create or replace function sedona.ST_Area (geometry GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Area'
+;
+create or replace function sedona.ST_AsEWKB (geometry GEOMETRY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_AsEWKB'
+;
+create or replace function sedona.ST_AsEWKT (geometry GEOMETRY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_AsEWKT'
+;
+create or replace function sedona.ST_AsGML (geometry GEOMETRY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_AsGML'
+;
+create or replace function sedona.ST_AsKML (geometry GEOMETRY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_AsKML'
+;
+create or replace function sedona.ST_Azimuth (left GEOMETRY, right GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Azimuth'
+;
+create or replace function sedona.ST_Buffer (geometry GEOMETRY, radius DOUBLE)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Buffer'
+;
+create or replace function sedona.ST_Covers (leftGeometry GEOMETRY, rightGeometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Covers'
+;
+create or replace function sedona.ST_Crosses (leftGeometry GEOMETRY, rightGeometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Crosses'
+;
+create or replace function sedona.ST_Equals (leftGeometry GEOMETRY, rightGeometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Equals'
+;
+create or replace function sedona.ST_Force2D (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Force2D'
+;
+create or replace function sedona.ST_GeoHash (geometry GEOMETRY, precision NUMBER)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_GeoHash'
+;
+create or replace function sedona.ST_IsEmpty (geometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_IsEmpty'
+;
+create or replace function sedona.ST_IsRing (geometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_IsRing'
+;
+create or replace function sedona.ST_IsValid (geometry GEOMETRY, flags NUMBER)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_IsValid'
+;
+create or replace function sedona.ST_IsValid (geometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_IsValid'
+;
+create or replace function sedona.ST_Length (geometry GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Length'
+;
+create or replace function sedona.ST_Multi (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Multi'
+;
+create or replace function sedona.ST_NDims (geometry GEOMETRY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_NDims'
+;
+create or replace function sedona.ST_NPoints (geometry GEOMETRY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_NPoints'
+;
+create or replace function sedona.ST_PointN (geometry GEOMETRY, n NUMBER)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_PointN'
+;
+create or replace function sedona.ST_Polygon (geometry GEOMETRY, srid NUMBER)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Polygon'
+;
+create or replace function sedona.ST_Reverse (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Reverse'
+;
+create or replace function sedona.ST_SRID (geometry GEOMETRY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_SRID'
+;
+create or replace function sedona.ST_AsText (geometry GEOMETRY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_AsText'
+;
+create or replace function sedona.ST_SetSRID (geometry GEOMETRY, srid NUMBER)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_SetSRID'
+;
+create or replace function sedona.ST_Split (input GEOMETRY, blade GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Split'
+;
+create or replace function sedona.ST_Touches (leftGeometry GEOMETRY, rightGeometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Touches'
+;
+create or replace function sedona.ST_Union (leftGeom GEOMETRY, rightGeom GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Union'
+;
+create or replace function sedona.ST_Within (leftGeometry GEOMETRY, rightGeometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Within'
+;
+create or replace function sedona.ST_X (geometry GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_X'
+;
+create or replace function sedona.ST_XMax (geometry GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_XMax'
+;
+create or replace function sedona.ST_XMin (geometry GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_XMin'
+;
+create or replace function sedona.ST_Y (geometry GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Y'
+;
+create or replace function sedona.ST_YMax (geometry GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_YMax'
+;
+create or replace function sedona.ST_YMin (geometry GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_YMin'
+;
+create or replace function sedona.ST_Z (geometry GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Z'
+;
+create or replace function sedona.ST_ZMax (geometry GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_ZMax'
+;
+create or replace function sedona.ST_ZMin (geometry GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_ZMin'
+;
+create or replace function sedona.ST_DWithin (geomA GEOMETRY, geomB GEOMETRY, distance DOUBLE)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_DWithin'
+;
+create or replace function sedona.ST_Force3D (geom GEOMETRY, zValue DOUBLE)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Force3D'
+;
+create or replace function sedona.ST_Force3D (geom GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Force3D'
+;
+create or replace function sedona.ST_NRings (geom GEOMETRY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_NRings'
+;
+create or replace function sedona.GeometryType (geometry GEOMETRY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.GeometryType'
+;
+create or replace function sedona.ST_AddPoint (linestring GEOMETRY, point GEOMETRY, position NUMBER)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_AddPoint'
+;
+create or replace function sedona.ST_AsBinary (geometry GEOMETRY)
+returns BINARY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_AsBinary'
+;
+create or replace function sedona.ST_AsGeoJSON (geometry GEOMETRY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_AsGeoJSON'
+;
+create or replace function sedona.ST_Boundary (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Boundary'
+;
+create or replace function sedona.ST_BoundingDiagonal (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_BoundingDiagonal'
+;
+create or replace function sedona.ST_BuildArea (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_BuildArea'
+;
+create or replace function sedona.ST_Centroid (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Centroid'
+;
+create or replace function sedona.ST_ClosestPoint (geometry1 GEOMETRY, geometry2 GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_ClosestPoint'
+;
+create or replace function sedona.ST_CollectionExtract (geometry GEOMETRY, geomType NUMBER)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_CollectionExtract'
+;
+create or replace function sedona.ST_CollectionExtract (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_CollectionExtract'
+;
+create or replace function sedona.ST_ConcaveHull (geometry GEOMETRY, pctConvex DOUBLE)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_ConcaveHull'
+;
+create or replace function sedona.ST_ConcaveHull (geometry GEOMETRY, pctConvex DOUBLE, allowHoles BOOLEAN)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_ConcaveHull'
+;
+create or replace function sedona.ST_Contains (leftGeometry GEOMETRY, rightGeometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Contains'
+;
+create or replace function sedona.ST_CoordDim (geometry GEOMETRY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_CoordDim'
+;
+create or replace function sedona.ST_ConvexHull (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_ConvexHull'
+;
+create or replace function sedona.ST_CoveredBy (leftGeometry GEOMETRY, rightGeometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_CoveredBy'
+;
+create or replace function sedona.ST_Difference (leftGeometry GEOMETRY, rightGeometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Difference'
+;
+create or replace function sedona.ST_Dimension (geometry GEOMETRY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Dimension'
+;
+create or replace function sedona.ST_Disjoint (leftGeometry GEOMETRY, rightGeometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Disjoint'
+;
+create or replace function sedona.ST_Distance (left GEOMETRY, right GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Distance'
+;
+create or replace function sedona.ST_3DDistance (left GEOMETRY, right GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_3DDistance'
+;
+create or replace function sedona.ST_DumpPoints (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_DumpPoints'
+;
+create or replace function sedona.ST_EndPoint (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_EndPoint'
+;
+create or replace function sedona.ST_Envelope (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Envelope'
+;
+create or replace function sedona.ST_ExteriorRing (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_ExteriorRing'
+;
+create or replace function sedona.ST_FlipCoordinates (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_FlipCoordinates'
+;
+create or replace function sedona.ST_Force_2D (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Force_2D'
+;
+create or replace function sedona.ST_GeometryN (geometry GEOMETRY, n NUMBER)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_GeometryN'
+;
+create or replace function sedona.ST_GeometryType (geometry GEOMETRY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_GeometryType'
+;
+create or replace function sedona.ST_HausdorffDistance (geom1 GEOMETRY, geom2 GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_HausdorffDistance'
+;
+create or replace function sedona.ST_HausdorffDistance (geom1 GEOMETRY, geom2 GEOMETRY, densifyFrac DOUBLE)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_HausdorffDistance'
+;
+create or replace function sedona.ST_InteriorRingN (geometry GEOMETRY, n NUMBER)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_InteriorRingN'
+;
+create or replace function sedona.ST_Intersection (leftGeometry GEOMETRY, rightGeometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Intersection'
+;
+create or replace function sedona.ST_Intersects (leftGeometry GEOMETRY, rightGeometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Intersects'
+;
+create or replace function sedona.ST_IsClosed (geometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_IsClosed'
+;
+create or replace function sedona.ST_IsCollection (geometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_IsCollection'
+;
+create or replace function sedona.ST_IsSimple (geometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_IsSimple'
+;
+create or replace function sedona.ST_IsValidReason (geometry GEOMETRY, flags NUMBER)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_IsValidReason'
+;
+create or replace function sedona.ST_IsValidReason (geometry GEOMETRY)
+returns VARCHAR
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_IsValidReason'
+;
+create or replace function sedona.ST_LineFromMultiPoint (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_LineFromMultiPoint'
+;
+create or replace function sedona.ST_LineInterpolatePoint (geom GEOMETRY, fraction DOUBLE)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_LineInterpolatePoint'
+;
+create or replace function sedona.ST_LineLocatePoint (geom GEOMETRY, point GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_LineLocatePoint'
+;
+create or replace function sedona.ST_LineMerge (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_LineMerge'
+;
+create or replace function sedona.ST_LineSubstring (geom GEOMETRY, fromFraction DOUBLE, toFraction DOUBLE)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_LineSubstring'
+;
+create or replace function sedona.ST_MakeLine (geometryCollection GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_MakeLine'
+;
+create or replace function sedona.ST_MakeLine (point1 GEOMETRY, point2 GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_MakeLine'
+;
+create or replace function sedona.ST_MakePolygon (shell GEOMETRY, holes GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_MakePolygon'
+;
+create or replace function sedona.ST_MakePolygon (shell GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_MakePolygon'
+;
+create or replace function sedona.ST_MakeValid (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_MakeValid'
+;
+create or replace function sedona.ST_MakeValid (geometry GEOMETRY, keepCollapsed BOOLEAN)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_MakeValid'
+;
+create or replace function sedona.ST_MinimumBoundingCircle (geometry GEOMETRY, quadrantSegments NUMBER)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_MinimumBoundingCircle'
+;
+create or replace function sedona.ST_Normalize (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Normalize'
+;
+create or replace function sedona.ST_NumGeometries (geometry GEOMETRY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_NumGeometries'
+;
+create or replace function sedona.ST_NumInteriorRings (geometry GEOMETRY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_NumInteriorRings'
+;
+create or replace function sedona.ST_OrderingEquals (leftGeometry GEOMETRY, rightGeometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_OrderingEquals'
+;
+create or replace function sedona.ST_Overlaps (leftGeometry GEOMETRY, rightGeometry GEOMETRY)
+returns BOOLEAN
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Overlaps'
+;
+create or replace function sedona.ST_PointOnSurface (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_PointOnSurface'
+;
+create or replace function sedona.ST_PrecisionReduce (geometry GEOMETRY, precisionScale NUMBER)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_PrecisionReduce'
+;
+create or replace function sedona.ST_ReducePrecision (geometry GEOMETRY, precisionScale NUMBER)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_ReducePrecision'
+;
+create or replace function sedona.ST_RemovePoint (linestring GEOMETRY, position NUMBER)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_RemovePoint'
+;
+create or replace function sedona.ST_RemovePoint (linestring GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_RemovePoint'
+;
+create or replace function sedona.ST_S2CellIDs (input GEOMETRY, level NUMBER)
+returns ARRAY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_S2CellIDs'
+;
+create or replace function sedona.ST_SetPoint (linestring GEOMETRY, position NUMBER, point GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_SetPoint'
+;
+create or replace function sedona.ST_StartPoint (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_StartPoint'
+;
+create or replace function sedona.ST_SubDivide (geometry GEOMETRY, maxVertices NUMBER)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_SubDivide'
+;
+create or replace function sedona.ST_SymDifference (leftGeom GEOMETRY, rightGeom GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_SymDifference'
+;
+create or replace function sedona.ST_Transform (geometry GEOMETRY, sourceCRS VARCHAR, targetCRS VARCHAR)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Transform'
+;
+create or replace function sedona.ST_Transform (geometry GEOMETRY, sourceCRS VARCHAR, targetCRS VARCHAR, lenient BOOLEAN)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Transform'
+;
+create or replace function sedona.ST_VoronoiPolygons (geometry GEOMETRY, tolerance DOUBLE, extent GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_VoronoiPolygons'
+;
+create or replace function sedona.ST_VoronoiPolygons (geometry GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_VoronoiPolygons'
+;
+create or replace function sedona.ST_VoronoiPolygons (geometry GEOMETRY, tolerance DOUBLE)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_VoronoiPolygons'
+;
+create or replace function sedona.ST_AreaSpheroid (geometry GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_AreaSpheroid'
+;
+create or replace function sedona.ST_DistanceSphere (geomA GEOMETRY, geomB GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_DistanceSphere'
+;
+create or replace function sedona.ST_DistanceSphere (geomA GEOMETRY, geomB GEOMETRY, radius DOUBLE)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_DistanceSphere'
+;
+create or replace function sedona.ST_DistanceSpheroid (geomA GEOMETRY, geomB GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_DistanceSpheroid'
+;
+create or replace function sedona.ST_FrechetDistance (geomA GEOMETRY, geomB GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_FrechetDistance'
+;
+create or replace function sedona.ST_LengthSpheroid (geom GEOMETRY)
+returns DOUBLE
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_LengthSpheroid'
+;
+create or replace function sedona.ST_GeometricMedian (geom GEOMETRY)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_GeometricMedian'
+;
+create or replace function sedona.ST_GeometricMedian (geom GEOMETRY, tolerance FLOAT)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_GeometricMedian'
+;
+create or replace function sedona.ST_GeometricMedian (geom GEOMETRY, tolerance FLOAT, maxIter NUMBER)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_GeometricMedian'
+;
+create or replace function sedona.ST_NumPoints (geom GEOMETRY)
+returns NUMBER
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_NumPoints'
+;
+create or replace function sedona.ST_Translate (geom GEOMETRY, deltaX DOUBLE, deltaY DOUBLE)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Translate'
+;
+create or replace function sedona.ST_Translate (geom GEOMETRY, deltaX DOUBLE, deltaY DOUBLE, deltaZ DOUBLE)
+returns GEOMETRY
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.UDFsV2.ST_Translate'
+;
+-- UDTFs --
+create or replace function sedona.ST_MinimumBoundingRadius (geom BINARY)
+returns table(center BINARY, radius DOUBLE)
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.udtfs.ST_MinimumBoundingRadius'
+;
+create or replace function sedona.ST_InterSection_Aggr (geom BINARY)
+returns table(intersected BINARY)
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.udtfs.ST_Intersection_Aggr'
+;
+create or replace function sedona.ST_SubDivideExplode (geom BINARY, maxVertices NUMBER)
+returns table(geom BINARY)
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.udtfs.ST_SubDivideExplode'
+;
+create or replace function sedona.ST_Envelope_Aggr (geom BINARY)
+returns table(envelope BINARY)
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.udtfs.ST_Envelope_Aggr'
+;
+create or replace function sedona.ST_Union_Aggr (geom BINARY)
+returns table(unioned BINARY)
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.udtfs.ST_Union_Aggr'
+;
+create or replace function sedona.ST_Collect (geom BINARY)
+returns table(collection BINARY)
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.udtfs.ST_Collect'
+;
+create or replace function sedona.ST_Dump (geomCollection BINARY)
+returns table(geom BINARY)
+language java
+RETURNS NULL ON NULL INPUT
+IMMUTABLE
+imports = ('@ApacheSedona/sedona-snowflake-1.5.1-SNAPSHOT.jar', '@ApacheSedona/geotools-wrapper-1.5.1-28.2.jar')
+handler = 'org.apache.sedona.snowflake.snowsql.udtfs.ST_Dump'
+;
diff --git a/docs/image/snowflake/snowflake-1.png b/docs/image/snowflake/snowflake-1.png
new file mode 100644
index 000000000..937cc833c
Binary files /dev/null and b/docs/image/snowflake/snowflake-1.png differ
diff --git a/docs/image/snowflake/snowflake-2.png b/docs/image/snowflake/snowflake-2.png
new file mode 100644
index 000000000..cb12967f8
Binary files /dev/null and b/docs/image/snowflake/snowflake-2.png differ
diff --git a/docs/image/snowflake/snowflake-3.png b/docs/image/snowflake/snowflake-3.png
new file mode 100644
index 000000000..c9f981357
Binary files /dev/null and b/docs/image/snowflake/snowflake-3.png differ
diff --git a/docs/image/snowflake/snowflake-4.png b/docs/image/snowflake/snowflake-4.png
new file mode 100644
index 000000000..fb2e6558b
Binary files /dev/null and b/docs/image/snowflake/snowflake-4.png differ
diff --git a/docs/image/snowflake/snowflake-5.png b/docs/image/snowflake/snowflake-5.png
new file mode 100644
index 000000000..32626680f
Binary files /dev/null and b/docs/image/snowflake/snowflake-5.png differ
diff --git a/docs/image/snowflake/snowflake-6.png b/docs/image/snowflake/snowflake-6.png
new file mode 100644
index 000000000..d1989a9a8
Binary files /dev/null and b/docs/image/snowflake/snowflake-6.png differ
diff --git a/docs/image/snowflake/snowflake-7.png b/docs/image/snowflake/snowflake-7.png
new file mode 100644
index 000000000..1a29ea615
Binary files /dev/null and b/docs/image/snowflake/snowflake-7.png differ
diff --git a/docs/image/snowflake/snowflake-8.png b/docs/image/snowflake/snowflake-8.png
new file mode 100644
index 000000000..4dd2fa0eb
Binary files /dev/null and b/docs/image/snowflake/snowflake-8.png differ
diff --git a/docs/setup/maven-coordinates.md b/docs/setup/maven-coordinates.md
index 88e09a9b9..faf0d964d 100644
--- a/docs/setup/maven-coordinates.md
+++ b/docs/setup/maven-coordinates.md
@@ -103,11 +103,27 @@ The optional GeoTools library is required if you want to use CRS transformation,
 		</dependency>
 		```
 
-### netCDF-Java 5.4.2
+!!! abstract "Sedona with Snowflake"
+
+	=== "Snowflake 7.0+ (Year 2023 and later)"
+
+		```xml
+		<dependency>
+		  <groupId>org.apache.sedona</groupId>
+		  <artifactId>sedona-snowflake</artifactId>
+		  <version>{{ sedona.current_version }}</version>
+		</dependency>
+		<!-- Optional: https://mvnrepository.com/artifact/org.datasyslab/geotools-wrapper -->
+		<dependency>
+		    <groupId>org.datasyslab</groupId>
+		    <artifactId>geotools-wrapper</artifactId>
+		    <version>{{ sedona.current_geotools }}</version>
+		</dependency>
+		```
 
-For Scala / Java API, it is required only if you want to read HDF/NetCDF files.
+### netCDF-Java 5.4.2
 
-HDF/NetCDF function is only supported in Spark RDD with Java/Scala API. The current function is deprecated and more mature support will be released soon.
+This is required only if you want to read HDF/NetCDF files using `RS_FromNetCDF`. Note that this JAR is not in Maven Central so you will need to add this repository to your pom.xml or build.sbt, or specify the URL in Spark Config `spark.jars.repositories` or spark-submit `--repositories` option.
 
 Under BSD 3-clause (compatible with Apache 2.0 license)
 
@@ -236,11 +252,11 @@ The optional GeoTools library is required if you want to use CRS transformation,
 		</dependency>
 		```
 
-### netCDF-Java 5.4.2
+Sedona Snowflake does not have an unshaded version.
 
-For Scala / Java API, it is required only if you want to read HDF/NetCDF files.
+### netCDF-Java 5.4.2
 
-HDF/NetCDF function is only supported in Spark RDD with Java/Scala API. The current function is deprecated and more mature support will be released soon.
+This is required only if you want to read HDF/NetCDF files using `RS_FromNetCDF`. Note that this JAR is not in Maven Central so you will need to add this repository to your pom.xml or build.sbt, or specify the URL in Spark Config `spark.jars.repositories` or spark-submit `--repositories` option.
 
 Under BSD 3-clause (compatible with Apache 2.0 license)
 
diff --git a/docs/setup/snowflake/install.md b/docs/setup/snowflake/install.md
index 7b80aed75..b5b242964 100644
--- a/docs/setup/snowflake/install.md
+++ b/docs/setup/snowflake/install.md
@@ -1,11 +1,102 @@
-# SedonaSnow
 
-SedonaSnow is a plugin that brings the open-source Apache Sedona functions to Snowflake. The plugin doubles the spatial SQL functions supported by Snowflake, and hence enables snowflake users to do more with their geospatial data.
+!!! note
+    This tutorial is for you to manually install Sedona on Snowflake. If you want to use Sedona on Snowflake without manually installing it, you can use the free [SedonaSnow](https://app.snowflake.com/marketplace/listing/GZTYZF0RTY3/wherobots-sedonasnow) native app shipped by [Wherobots](https://wherobots.com/).
 
-# Why Integrate Apache Sedona with Snowflake?
+## Prerequisites
 
-Apache Sedona is a powerful open-source library for large-scaling geospatial data processing and analysis. It has been used in use cases where data engineers need to process spatial data at scale in their complicated data stack. On the other hand, Snowflake is a cloud-based data warehousing platform that allows for seamless data integration and processing.
+To install Sedona on Snowflake, you need to prepare a Snowflake account and a Snowflake user that can access at least one `DATABASE` and run at least one `WAREHOUSE`. Then you can follow the steps below to install Sedona on Snowflake.
 
-Many Snowflake users collect and store geospatial data in the platform. To meet this need, Snowflake released the GEOGRAPHY data type and corresponding geospatial functions in June 2021. Since then, new features have been added to fulfill computation demands.
+You can refer to [Snowflake Documentation](https://docs.snowflake.com/en/sql-reference/sql/create-database) to how to create a DATABASE.
+
+In this tutorial, we will use a database created by the following SQL statement. But you can use any database you want.
+
+```sql
+CREATE DATABASE SEDONA_TEST;
+```
+
+## Step 1: Create a stage in the database
+
+A stage is a Snowflake object that maps to a location in a cloud storage provider, such as Amazon S3, Azure Blob Storage, or Google Cloud Storage. You can use a stage to load data into a table, or unload data from a table.
+
+In this case, we will create a stage named `ApacheSedona` in the `public` schema of the database created in the previous step. The stage will be used to load Sedona's JAR files into the database. We will choose a `Snowflake managed` stage.
+
+![Create Stage](../../../../image/snowflake/snowflake-1.png)
+
+
+After creating the stage, you should be able to see the stage in the database.
+
+![Stage Details](../../../../image/snowflake/snowflake-2.png)
+
+You can refer to [Snowflake Documentation](https://docs.snowflake.com/en/sql-reference/sql/create-stage.html) to how to create a stage.
+
+## Step 2: Upload Sedona's JAR files to the stage
+
+You will need to download the following 2 JAR files:
+
+* sedona-snowflake-{{ sedona.current_version }}.jar: [Sedona's Maven Central repository](https://central.sonatype.com/artifact/org.apache.sedona/sedona-snowflake/versions)
+* geotools-wrapper-{{ sedona.current_geotools }}.jar: [GeoTools-wrapper's Maven Central repository](https://central.sonatype.com/artifact/org.datasyslab/geotools-wrapper/versions)
+
+Then you can upload the 2 JAR files to the stage created in the previous step.
+
+After uploading the 2 JAR files, you should be able to see the 2 JAR files in the stage.
+
+![JAR Details](../../../../image/snowflake/snowflake-3.png)
+
+You can refer to [Snowflake Documentation](https://docs.snowflake.com/en/sql-reference/sql/put.html) to how to upload files to a stage.
+
+## Step 3: Create a schema in the database
+
+A schema is a Snowflake object that maps to a database. You can use a schema to organize your tables into groups based on business functions or other categories.
+
+In this case, we will create a schema named `SEDONA` in the database created in the previous step. The schema will be used to create Sedona's functions.
+
+![Create Schema](../../../../image/snowflake/snowflake-4.png)
+
+You can find your schema in the database as follows:
+
+![Schema Details](../../../../image/snowflake/snowflake-5.png)
+
+You can refer to [Snowflake Documentation](https://docs.snowflake.com/en/sql-reference/sql/create-schema.html) to how to create a schema.
+
+## Step 4: Get the SQL script for creating Sedona's functions
+
+You will need to download [sedona-snowflake.sql](../../../../image/snowflake/sedona-snowflake.sql) to create Sedona's functions in the schema created in the previous step.
+
+You can also get this SQL script by running the following command:
+
+```bash
+java -jar sedona-snowflake-{{ sedona.current_version }}.jar --geotools-version {{ sedona.current_geotools }} > sedona-snowflake.sql
+```
+
+sedona-snowflake-{{ sedona.current_version }}.jar is the JAR file downloaded in Step 2.
+
+## Step 5: Run the SQL script to create Sedona's functions
+
+We will create a worksheet in the database created in the previous step, and run the SQL script to create Sedona's functions.
+
+In this case, we will choose the option `Create Worksheet from SQL File`.
+
+![Create Worksheet](../../../../image/snowflake/snowflake-6.png)
+
+In the worksheet, choose `SEDONA_TEST` as the database, and `PUBLIC` as the schema. The SQL script should be in the worksheet. Then right click the worksheet and choose `Run All`. Snowflake will take 3 minutes to create Sedona's functions.
+
+![Worksheet](../../../../image/snowflake/snowflake-7.png)
+
+## Step 6: Verify the installation
+
+Open a new worksheet, choose `SEDONA_TEST` as the database, and any schema as the schema. Then run the following SQL statement:
+
+```sql
+SELECT SEDONA.ST_AsEWKT(SEDONA.ST_SETSRID(SEDONA.ST_POINT(1, 2), 4326));
+```
+
+You should be able to see the following result:
+
+```
+SRID=4326;POINT (1 2)
+```
+
+The worksheet should look like this:
+
+![Worksheet](../../../../image/snowflake/snowflake-8.png)
 
-The Wherobots team has observed a significant overlap in user bases between Snowflake and Sedona. For users who have been utilizing Sedona Spatial SQL APIs, we aim to enable them to continue using their favorite Sedona-flavored ST functions through Snowflake SQL.
\ No newline at end of file
diff --git a/docs/tutorial/snowflake/sql.md b/docs/tutorial/snowflake/sql.md
index 2ed842261..43a008853 100644
--- a/docs/tutorial/snowflake/sql.md
+++ b/docs/tutorial/snowflake/sql.md
@@ -1,7 +1,7 @@
 After the installation done, you can start using Sedona functions. Please log in to Snowflake again using the user that has the privilege to access the database.
 
 !!!note
-	A good practice is to always keep at least the schema name "SEDONA" to avoid conflicting with Snowflake's built-in functions.
+	Please always keep the schema name `SEDONA` (e.g., `SEDONA.ST_GeomFromWKT`) when you use Sedona functions to avoid conflicting with Snowflake's built-in functions.
 
 ## Create a sample table
 
@@ -71,7 +71,7 @@ We use `lon/lat` order in the following functions:
 
 In Sedona `v1.5.0` and above, all functions will be fixed to lon/lat order.
 
-If your original data is in lon/lat order, you need to flip the coordinate using `ST_FlipCoordinates(geom: Geometry)` if you want to use those functions.
+If your original data is not in the order you want, you need to flip the coordinate using `ST_FlipCoordinates(geom: Geometry)`.
 
 The sample data used above is in lon/lat order, we can flip the coordinates as follows:
 
@@ -123,7 +123,7 @@ The second EPSG code EPSG:3857 in `ST_Transform` is the target CRS of the geomet
 This `ST_Transform` transform the CRS of these geometries from EPSG:4326 to EPSG:3857. The details CRS information can be found on [EPSG.io](https://epsg.io/).
 
 !!!note
-	This function follows lat/lon order. If your data is in lon/lat order, you can use `ST_FlipCoordinates` to swap X and Y.
+	This function follows lon/order in 1.5.0+ and lat/lon order in 1.4.1 and before. You can use `ST_FlipCoordinates` to swap X and Y.
 
 We can transform our sample data as follows
 
@@ -135,8 +135,8 @@ FROM city_tbl_geom
 The output will be like this:
 
 ```
-POINT (-13617713.308741156 6042216.250411431)  Seattle
-POINT (-13627732.06291255 4545577.120361927)  San Francisco
+POINT (6042216.250411431 -13617713.308741156)  Seattle
+POINT (4545577.120361927 -13627732.06291255)  San Francisco
 ```
 
 `ST_Transform` also supports the CRS string in OGC WKT format. For example, the following query generates the same output but with a OGC WKT CRS string.
@@ -198,9 +198,9 @@ LIMIT 5
 ## Range join query
 
 !!!warning
-	Sedona range join in Snowflake does not trigger Sedona's optimized spatial join algorithm while Sedona Spark does. It uses Snowflake's default Cartesian join which is very slow. Therefore, it is recommended to use Sedona's S2-based join or Snowflake's native ST functions to do range join, which will trigger Snowflake's `GeoJoin` algorithm.
+	Sedona range join in Snowflake does not trigger Sedona's optimized spatial join algorithm while Sedona Spark does. It uses Snowflake's default Cartesian join which is very slow. Therefore, it is recommended to use Sedona's S2-based join or Snowflake's native ST functions + native `Geography` type to do range join, which will trigger Snowflake's `GeoJoin` algorithm.
 
-Introduction: Find geometries from A and geometries from B such that each geometry pair satisfies a certain predicate. Most predicates supported by SedonaSQL can trigger a range join.
+Introduction: Find geometries from A and geometries from B such that each geometry pair satisfies a certain predicate.
 
 Example:
 
@@ -250,7 +250,7 @@ WHERE ST_FrechetDistance(pointDf.pointshape, polygonDf.polygonshape) < 2
 ```
 
 !!!warning
-	If you use planar euclidean distance functions like `ST_Distance`, `ST_HausdorffDistance` or `ST_FrechetDistance` as the predicate, Sedona doesn't control the distance's unit (degree or meter). It is same with the geometry. If your coordinates are in the longitude and latitude system, the unit of `distance` should be degree instead of meter or mile. To change the geometry's unit, please either transform the coordinate reference system to a meter-based system. See [ST_Transform](Function [...]
+	If you use planar euclidean distance functions like `ST_Distance`, `ST_HausdorffDistance` or `ST_FrechetDistance` as the predicate, Sedona doesn't control the distance's unit (degree or meter). It is same with the geometry. If your coordinates are in the longitude and latitude system, the unit of `distance` should be degree instead of meter or mile. To change the geometry's unit, please either transform the coordinate reference system to a meter-based system. See [ST_Transform](../../.. [...]
 
 ```sql
 SELECT *
@@ -266,7 +266,7 @@ Please use the following steps:
 
 ### 1. Generate S2 ids for both tables
 
-Use [ST_S2CellIds](../Function/#st_s2cellids) to generate cell IDs. Each geometry may produce one or more IDs.
+Use [ST_S2CellIds](../../../api/snowflake/vector-data/Function/#st_s2cellids) to generate cell IDs. Each geometry may produce one or more IDs.
 
 ```sql
 SELECT * FROM lefts, TABLE(FLATTEN(ST_S2CellIDs(lefts.geom, 15))) s1
@@ -289,7 +289,7 @@ FROM lcs JOIN rcs ON lcs.cellId = rcs.cellId
 
 Due to the nature of S2 Cellid, the equi-join results might have a few false-positives depending on the S2 level you choose. A smaller level indicates bigger cells, less exploded rows, but more false positives.
 
-To ensure the correctness, you can use one of the [Spatial Predicates](../Predicate/) to filter out them. Use this query instead of the query in Step 2.
+To ensure the correctness, you can use one of the [Spatial Predicates](../../../api/snowflake/vector-data/Predicate/) to filter out them. Use this query instead of the query in Step 2.
 
 ```sql
 SELECT lcs.id as lcs_id, lcs.geom as lcs_geom, lcs.name as lcs_name, rcs.id as rcs_id, rcs.geom as rcs_geom, rcs.name as rcs_name