Skip to content

Commit fa69154

Browse files
committed
Add ST_OffsetCurve to Snowflake UDFs and tests
1 parent 866bd7c commit fa69154

4 files changed

Lines changed: 54 additions & 0 deletions

File tree

snowflake-tester/src/test/java/org/apache/sedona/snowflake/snowsql/TestFunctions.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -768,6 +768,18 @@ public void test_ST_NPoints() {
768768
"select sedona.ST_NPoints(sedona.ST_GeomFromText('LINESTRING(1 2, 3 4, 5 6)'))", 3);
769769
}
770770

771+
@Test
772+
public void test_ST_OffsetCurve() {
773+
registerUDF("ST_OffsetCurve", byte[].class, double.class);
774+
verifySqlSingleRes(
775+
"select sedona.ST_AsText(sedona.ST_OffsetCurve(sedona.ST_GeomFromText('LINESTRING(0 0, 10 0)'), 5.0))",
776+
"LINESTRING (0 5, 10 5)");
777+
registerUDF("ST_OffsetCurve", byte[].class, double.class, int.class);
778+
verifySqlSingleRes(
779+
"select sedona.ST_AsText(sedona.ST_OffsetCurve(sedona.ST_GeomFromText('LINESTRING(0 0, 10 0)'), 5.0, 4))",
780+
"LINESTRING (0 5, 10 5)");
781+
}
782+
771783
@Test
772784
public void test_ST_NumGeometries() {
773785
registerUDF("ST_NumGeometries", byte[].class);

snowflake-tester/src/test/java/org/apache/sedona/snowflake/snowsql/TestFunctionsV2.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -716,6 +716,18 @@ public void test_ST_NPoints() {
716716
"select sedona.ST_NPoints(ST_GeometryFromWKT('LINESTRING(1 2, 3 4, 5 6)'))", 3);
717717
}
718718

719+
@Test
720+
public void test_ST_OffsetCurve() {
721+
registerUDFV2("ST_OffsetCurve", String.class, double.class);
722+
verifySqlSingleRes(
723+
"select sedona.ST_AsText(sedona.ST_OffsetCurve(ST_GeometryFromWKT('LINESTRING(0 0, 10 0)'), 5.0))",
724+
"LINESTRING (0 5, 10 5)");
725+
registerUDFV2("ST_OffsetCurve", String.class, double.class, int.class);
726+
verifySqlSingleRes(
727+
"select sedona.ST_AsText(sedona.ST_OffsetCurve(ST_GeometryFromWKT('LINESTRING(0 0, 10 0)'), 5.0, 4))",
728+
"LINESTRING (0 5, 10 5)");
729+
}
730+
719731
@Test
720732
public void test_ST_NumGeometries() {
721733
registerUDFV2("ST_NumGeometries", String.class);

snowflake/src/main/java/org/apache/sedona/snowflake/snowsql/UDFs.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -798,6 +798,18 @@ public static byte[] ST_Normalize(byte[] geometry) {
798798
return GeometrySerde.serialize(Functions.normalize(GeometrySerde.deserialize(geometry)));
799799
}
800800

801+
@UDFAnnotations.ParamMeta(argNames = {"geometry", "distance"})
802+
public static byte[] ST_OffsetCurve(byte[] geometry, double distance) {
803+
return GeometrySerde.serialize(
804+
Functions.offsetCurve(GeometrySerde.deserialize(geometry), distance));
805+
}
806+
807+
@UDFAnnotations.ParamMeta(argNames = {"geometry", "distance", "quadrantSegments"})
808+
public static byte[] ST_OffsetCurve(byte[] geometry, double distance, int quadrantSegments) {
809+
return GeometrySerde.serialize(
810+
Functions.offsetCurve(GeometrySerde.deserialize(geometry), distance, quadrantSegments));
811+
}
812+
801813
@UDFAnnotations.ParamMeta(argNames = {"geometry"})
802814
public static int ST_NumGeometries(byte[] geometry) {
803815
return Functions.numGeometries(GeometrySerde.deserialize(geometry));

snowflake/src/main/java/org/apache/sedona/snowflake/snowsql/UDFsV2.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -961,6 +961,24 @@ public static String ST_Normalize(String geometry) {
961961
return GeometrySerde.serGeoJson(Functions.normalize(GeometrySerde.deserGeoJson(geometry)));
962962
}
963963

964+
@UDFAnnotations.ParamMeta(
965+
argNames = {"geometry", "distance"},
966+
argTypes = {"Geometry", "double"},
967+
returnTypes = "Geometry")
968+
public static String ST_OffsetCurve(String geometry, double distance) {
969+
return GeometrySerde.serGeoJson(
970+
Functions.offsetCurve(GeometrySerde.deserGeoJson(geometry), distance));
971+
}
972+
973+
@UDFAnnotations.ParamMeta(
974+
argNames = {"geometry", "distance", "quadrantSegments"},
975+
argTypes = {"Geometry", "double", "int"},
976+
returnTypes = "Geometry")
977+
public static String ST_OffsetCurve(String geometry, double distance, int quadrantSegments) {
978+
return GeometrySerde.serGeoJson(
979+
Functions.offsetCurve(GeometrySerde.deserGeoJson(geometry), distance, quadrantSegments));
980+
}
981+
964982
@UDFAnnotations.ParamMeta(
965983
argNames = {"geometry"},
966984
argTypes = {"Geometry"})

0 commit comments

Comments
 (0)