Skip to content

Commit 6e2af80

Browse files
committed
chore: add the new parameter to all engines and add tests
1 parent 046df95 commit 6e2af80

File tree

8 files changed

+56
-2
lines changed

8 files changed

+56
-2
lines changed

common/src/main/java/org/apache/sedona/common/Functions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1804,7 +1804,7 @@ private static Geometry[] convertGeometryToArray(Geometry geom) {
18041804
return array;
18051805
}
18061806

1807-
public static Geometry generatePoints(Geometry geom, int numPoints, int seed) {
1807+
public static Geometry generatePoints(Geometry geom, int numPoints, long seed) {
18081808
RandomPointsBuilderSeed pointsBuilder = new RandomPointsBuilderSeed(geom.getFactory(), seed);
18091809
pointsBuilder.setExtent(geom);
18101810
pointsBuilder.setNumPoints(numPoints);

flink/src/main/java/org/apache/sedona/flink/expressions/Functions.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1557,6 +1557,15 @@ public Geometry eval(
15571557
Geometry geom = (Geometry) o;
15581558
return org.apache.sedona.common.Functions.generatePoints(geom, numPoints);
15591559
}
1560+
1561+
@DataTypeHint(value = "RAW", bridgedTo = org.locationtech.jts.geom.Geometry.class)
1562+
public Geometry eval(
1563+
@DataTypeHint(value = "RAW", bridgedTo = org.locationtech.jts.geom.Geometry.class) Object o,
1564+
@DataTypeHint(value = "Integer") Integer numPoints,
1565+
@DataTypeHint(value = "BIGINT") Long seed) {
1566+
Geometry geom = (Geometry) o;
1567+
return org.apache.sedona.common.Functions.generatePoints(geom, numPoints, seed);
1568+
}
15601569
}
15611570

15621571
public static class ST_NRings extends ScalarFunction {

flink/src/test/java/org/apache/sedona/flink/FunctionTest.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2146,7 +2146,7 @@ public void testIsPolygonCW() {
21462146
public void testGeneratePoints() {
21472147
Table polyTable =
21482148
tableEnv.sqlQuery(
2149-
"SELECT ST_Buffer(ST_GeomFromWKT('LINESTRING(50 50,150 150,150 50)'), 10, false, 'endcap=round join=round') AS geom");
2149+
"SELECT ST_Buffer(ST_GeomFromWKT('LINESTRING(50 50,10 10,10 50)'), 10, false, 'endcap=round join=round') AS geom");
21502150
Geometry actual =
21512151
(Geometry)
21522152
first(
@@ -2155,6 +2155,24 @@ public void testGeneratePoints() {
21552155
.getField(0);
21562156
assertEquals(actual.getNumGeometries(), 15);
21572157

2158+
actual =
2159+
(Geometry)
2160+
first(
2161+
polyTable
2162+
.select(
2163+
call(
2164+
Functions.ST_GeneratePoints.class.getSimpleName(),
2165+
$("geom"),
2166+
5,
2167+
100L))
2168+
.as("geom")
2169+
.select(
2170+
call(Functions.ST_ReducePrecision.class.getSimpleName(), $("geom"), 5)))
2171+
.getField(0);
2172+
String expected =
2173+
"MULTIPOINT ((40.02957 46.70645), (37.11646 37.38582), (14.2051 29.23363), (40.82533 31.47273), (28.16839 34.16338))";
2174+
assertEquals(expected, actual.toString());
2175+
21582176
polyTable =
21592177
tableEnv.sqlQuery(
21602178
"SELECT ST_GeomFromWKT('MULTIPOLYGON (((10 0, 10 10, 20 10, 20 0, 10 0)), ((50 0, 50 10, 70 10, 70 0, 50 0)))') AS geom");

python/tests/sql/test_function.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1611,6 +1611,12 @@ def test_generate_points(self):
16111611
.first()[0]
16121612
assert actual == 15
16131613

1614+
actual = self.spark.sql(
1615+
"SELECT ST_AsText(ST_ReducePrecision(ST_GeneratePoints(ST_GeomFromWKT('MULTIPOLYGON (((10 0, 10 10, 20 10, 20 0, 10 0)), ((50 0, 50 10, 70 10, 70 0, 50 0)))'), 5, 10), 5))") \
1616+
.first()[0]
1617+
expected = "MULTIPOINT ((53.82582 2.57803), (13.55212 2.44117), (59.12854 3.70611), (61.37698 7.14985), (10.49657 4.40622))"
1618+
assert expected == actual
1619+
16141620
actual = self.spark.sql(
16151621
"SELECT ST_NumGeometries(ST_GeneratePoints(ST_Buffer(ST_GeomFromWKT('LINESTRING(50 50,150 150,150 50)'), 10, false, 'endcap=round join=round'), 15, 100))") \
16161622
.first()[0]

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,9 @@ public void test_ST_GeneratePoints() {
401401
verifySqlSingleRes(
402402
"select sedona.ST_NumGeometries(sedona.ST_GeneratePoints(sedona.ST_GeomFromWKT('POLYGON ((1 0, 1 1, 2 1, 2 0, 1 0))'), 15))",
403403
15);
404+
verifySqlSingleRes(
405+
"select sedona.ST_NumGeometries(sedona.ST_GeneratePoints(sedona.ST_GeomFromWKT('POLYGON ((1 0, 1 1, 2 1, 2 0, 1 0))'), 15, 100))",
406+
15);
404407
}
405408

406409
@Test

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,9 @@ public void test_ST_GeneratePoints() {
383383
verifySqlSingleRes(
384384
"select sedona.ST_NumGeometries(sedona.ST_GeneratePoints(ST_GeomFromWKT('POLYGON ((1 0, 1 1, 2 1, 2 0, 1 0))'), 15))",
385385
15);
386+
verifySqlSingleRes(
387+
"select sedona.ST_NumGeometries(sedona.ST_GeneratePoints(ST_GeomFromWKT('POLYGON ((1 0, 1 1, 2 1, 2 0, 1 0))'), 15, 100))",
388+
15);
386389
}
387390

388391
@Test

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,12 @@ public static byte[] ST_GeneratePoints(byte[] geometry, int numPoints) {
372372
Functions.generatePoints(GeometrySerde.deserialize(geometry), numPoints));
373373
}
374374

375+
@UDFAnnotations.ParamMeta(argNames = {"geometry", "numPoints", "seed"})
376+
public static byte[] ST_GeneratePoints(byte[] geometry, int numPoints, long seed) {
377+
return GeometrySerde.serialize(
378+
Functions.generatePoints(GeometrySerde.deserialize(geometry), numPoints, seed));
379+
}
380+
375381
@UDFAnnotations.ParamMeta(argNames = {"geometry", "precision"})
376382
public static String ST_GeoHash(byte[] geometry, int precision) {
377383
return Functions.geohash(GeometrySerde.deserialize(geometry), precision);

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,15 @@ public static String ST_GeneratePoints(String geometry, int numPoints) {
518518
Functions.generatePoints(GeometrySerde.deserGeoJson(geometry), numPoints));
519519
}
520520

521+
@UDFAnnotations.ParamMeta(
522+
argNames = {"geometry", "numPoints", "seed"},
523+
argTypes = {"Geometry", "int", "long"},
524+
returnTypes = "Geometry")
525+
public static String ST_GeneratePoints(String geometry, int numPoints, long seed) {
526+
return GeometrySerde.serGeoJson(
527+
Functions.generatePoints(GeometrySerde.deserGeoJson(geometry), numPoints, seed));
528+
}
529+
521530
@UDFAnnotations.ParamMeta(
522531
argNames = {"geometry", "precision"},
523532
argTypes = {"Geometry", "int"})

0 commit comments

Comments
 (0)