Feng Zhang created SEDONA-700:
---------------------------------

             Summary: ST_KNN fails on null and empty geometries
                 Key: SEDONA-700
                 URL: https://issues.apache.org/jira/browse/SEDONA-700
             Project: Apache Sedona
          Issue Type: Bug
            Reporter: Feng Zhang


ST_KNN in Sedona 1.7.0 fails on null geometries:
 {{df1 = spark.sql("SELECT ST_GeomFromText(col1) as geom1 from values ('POINT 
(0.0 0.0)'), (null)").cache()
df2 = spark.sql("SELECT ST_Point(0.0, 0.0) as geom2").cache()

df1.join(df2, f.expr("ST_KNN(geom1, geom2, 1)")).show()}}
 
 {{java.lang.NullPointerException: Cannot read the array length because 
"this.bytes" is null
        at 
org.apache.sedona.common.geometrySerde.UnsafeGeometryBuffer.getLength(UnsafeGeometryBuffer.java:86)
        at 
org.apache.sedona.common.geometrySerde.GeometrySerializer.checkBufferSize(GeometrySerializer.java:428)
        at 
org.apache.sedona.common.geometrySerde.GeometrySerializer.deserialize(GeometrySerializer.java:73)
        at 
org.apache.sedona.common.geometrySerde.GeometrySerializer.deserialize(GeometrySerializer.java:69)
        at 
org.apache.sedona.common.geometrySerde.GeometrySerializer.deserialize(GeometrySerializer.java:65)
        at 
org.apache.sedona.sql.utils.GeometrySerializer$.deserialize(GeometrySerializer.scala:50)
        at 
org.apache.spark.sql.sedona_sql.strategy.join.TraitJoinQueryBase.$anonfun$toSpatialRDD$1(TraitJoinQueryBase.scala:52)}}
 
And empty geomtries:
 {{df1 = spark.sql("SELECT ST_GeomFromText('POINT EMPTY') as geom1").cache()
df2 = spark.sql("SELECT ST_Point(0.0, 0.0) as geom2").cache()

df1.join(df2, f.expr("ST_KNN(geom1, geom2, 1)")).show()}}
 
 {{java.lang.IllegalStateException: getX called on empty Point
        at org.locationtech.jts.geom.Point.getX(Point.java:100)
        at 
org.apache.sedona.common.utils.HalfOpenRectangle.contains(HalfOpenRectangle.java:32)
        at 
org.apache.sedona.core.spatialPartitioning.quadtree.ExtendedQuadTree.placeObject(ExtendedQuadTree.java:150)
        at 
org.apache.sedona.core.spatialPartitioning.QuadTreeRTPartitioner.placeObject(QuadTreeRTPartitioner.java:89)
        at 
org.apache.sedona.core.spatialRDD.SpatialRDD$3.call(SpatialRDD.java:299)
        at 
org.apache.sedona.core.spatialRDD.SpatialRDD$3.call(SpatialRDD.java:296)
        at 
org.apache.spark.api.java.JavaRDDLike.$anonfun$flatMapToPair$1(JavaRDDLike.scala:143)
        at scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)
        at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)
        at 
org.apache.spark.shuffle.sort.BypassMergeSortShuffleWriter.write(BypassMergeSortShuffleWriter.java:140)
        at 
org.apache.spark.shuffle.ShuffleWriteProcessor.write(ShuffleWriteProcessor.scala:59)
        at 
org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:104)
        at 
org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:54)}}
{{}}
{{Converted from:}}
{{}}
https://github.com/apache/sedona/issues/1757{{{}{}}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to