You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sedona.apache.org by im...@apache.org on 2026/01/03 23:58:08 UTC
(sedona) 01/24: serde
This is an automated email from the ASF dual-hosted git repository.
imbruced pushed a commit to branch arrow-worker
in repository https://gitbox.apache.org/repos/asf/sedona.git
commit 812f0a9436cf8ca7b4cfd3051527353d8610b58f
Author: pawelkocinski <pa...@gmail.com>
AuthorDate: Fri Dec 19 23:13:31 2025 +0100
serde
---
.../sedona/sql/utils/GeometrySerializer.scala | 5 +-
.../apache/sedona/sql/GeoPackageReaderTest.scala | 93 ++++++++++++++++++++++
2 files changed, 97 insertions(+), 1 deletion(-)
diff --git a/spark/common/src/main/scala/org/apache/sedona/sql/utils/GeometrySerializer.scala b/spark/common/src/main/scala/org/apache/sedona/sql/utils/GeometrySerializer.scala
index a75a88f7ba..246286c608 100644
--- a/spark/common/src/main/scala/org/apache/sedona/sql/utils/GeometrySerializer.scala
+++ b/spark/common/src/main/scala/org/apache/sedona/sql/utils/GeometrySerializer.scala
@@ -35,7 +35,10 @@ object GeometrySerializer {
* Array of bites represents this geometry
*/
def serialize(geometry: Geometry): Array[Byte] = {
- geometrySerde.GeometrySerializer.serialize(geometry)
+ val serialized = geometrySerde.GeometrySerializer.serialize(geometry)
+
+ println(serialized.map(el => if (el < 0) el + 256 else el ).mkString(","))
+ serialized
}
/**
diff --git a/spark/spark-3.5/src/test/scala/org/apache/sedona/sql/GeoPackageReaderTest.scala b/spark/spark-3.5/src/test/scala/org/apache/sedona/sql/GeoPackageReaderTest.scala
index 6d9f41bf4e..54f2cc0ea9 100644
--- a/spark/spark-3.5/src/test/scala/org/apache/sedona/sql/GeoPackageReaderTest.scala
+++ b/spark/spark-3.5/src/test/scala/org/apache/sedona/sql/GeoPackageReaderTest.scala
@@ -277,6 +277,99 @@ class GeoPackageReaderTest extends TestBaseScala with Matchers {
}
+ describe("check the binary format") {
+ it("should read binary format correctly") {
+// sparkSession.sql(
+// "SELECT ST_SetSRID(ST_GeomFromText('POINT (1 1)'), 4326) AS geometry"
+// ).show
+
+// sparkSession.sql(
+// "SELECT ST_GeomFromText('POINT EMPTY') AS geometry"
+// ).show
+
+// sparkSession.sql(
+// "SELECT ST_GeomFromText('GEOMETRYCOLLECTION EMPTY') AS geometry"
+// ).show
+
+ sparkSession.sql(
+ """SELECT ST_GeomFromText('
+ |POLYGON (
+ | (
+ | 12.345678901234 45.678901234567,
+ | 23.456789012345 67.890123456789,
+ | 34.567890123456 56.789012345678,
+ | 45.678901234567 34.567890123456,
+ | 29.876543210987 22.345678901234,
+ | 12.345678901234 45.678901234567
+ | ),
+ | (
+ | 25.123456789012 45.987654321098,
+ | 30.987654321098 50.123456789012,
+ | 35.456789012345 45.456789012345,
+ | 30.234567890123 40.987654321098,
+ | 25.123456789012 45.987654321098
+ | )
+ |)
+ |'
+ |)""".stripMargin
+ ).show
+
+// sparkSession.sql(
+// "SELECT ST_GeomFromText('MULTILINESTRING((1 1, 2 2), (4 5, 6 7))') AS geometry"
+// ).show
+//
+// sparkSession.sql(
+// """
+// |SELECT ST_GeomFromText('
+// |MULTIPOLYGON (
+// | (
+// | (1 1, 10 1, 10 10, 1 10, 1 1),
+// | (2 2, 4 2, 4 4, 2 4, 2 2),
+// | (6 6, 8 6, 8 8, 6 8, 6 6)
+// | ),
+// | (
+// | (12 1, 20 1, 20 9, 12 9, 12 1),
+// | (13 2, 15 2, 15 4, 13 4, 13 2),
+// | (17 5, 19 5, 19 7, 17 7, 17 5)
+// | )
+// |)
+// |')
+// |
+// |""".stripMargin
+// ).show
+
+// sparkSession.sql(
+// "SELECT ST_GeomFromText('GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10), POLYGON((4 6,7 10,4 10,4 6)), MULTIPOINT((1 2),(3 4)))') AS geometry"
+// ).show()
+
+// sparkSession.sql(
+// """
+// |SELECT ST_GeomFromText('
+// |GEOMETRYCOLLECTION (
+// | POINT (1 1),
+// | GEOMETRYCOLLECTION (
+// | LINESTRING (0 0, 1 1),
+// | POLYGON ((0 0, 2 0, 2 2, 0 2, 0 0))
+// | )
+// |)')
+// |
+// |
+// |""".stripMargin
+// ).show()
+
+
+// sparkSession.sql(
+// "SELECT ST_GeomFromText('MULTIPOINT((1 1), (2 2), (4 5))') AS geometry"
+// ).show
+//
+// sparkSession.sql(
+// "SELECT ST_GeomFromText('LINESTRING (0 0, 1 1, 2 2)') AS geometry"
+// ).show
+
+ }
+
+ }
+
describe("Reading from S3") {
it("should be able to read files from S3") {
val container = new MinIOContainer("minio/minio:latest")