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 2026/09/12 02:52:53 UTC

(sedona) branch master updated: [GH-3351][Python] Preserve generated GeoArrow column names (#3354)

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

jiayuasu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sedona.git


The following commit(s) were added to refs/heads/master by this push:
     new 1335a1e672a [GH-3351][Python] Preserve generated GeoArrow column names (#3354)
1335a1e672a is described below

commit 1335a1e672a0beaca9a826f58b5dbb6c49ba3011
Author: akashchamp <11...@users.noreply.github.com>
AuthorDate: Sat Sep 12 08:22:48 2026 +0530

    [GH-3351][Python] Preserve generated GeoArrow column names (#3354)
---
 python/sedona/spark/geoarrow/geoarrow.py | 3 ++-
 python/tests/utils/test_geoarrow.py      | 8 ++++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/python/sedona/spark/geoarrow/geoarrow.py b/python/sedona/spark/geoarrow/geoarrow.py
index 1c8a949dc56..4877e0cff1b 100644
--- a/python/sedona/spark/geoarrow/geoarrow.py
+++ b/python/sedona/spark/geoarrow/geoarrow.py
@@ -24,6 +24,7 @@ from typing import TYPE_CHECKING, Callable, List
 from sedona.spark.sql.st_functions import ST_AsEWKB
 from pyspark.sql import SparkSession
 from pyspark.sql import DataFrame
+from pyspark.sql.functions import col
 from pyspark.sql.types import StructType, StructField, DataType, ArrayType, MapType
 
 from sedona.spark.sql.types import GeometryType
@@ -59,8 +60,8 @@ def dataframe_to_arrow(df, crs=None):
     if not any(col_is_geometry):
         return dataframe_to_arrow_raw(df)
 
-    df_columns = list(df)
     df_column_names = df.schema.fieldNames()
+    df_columns = [col("`" + name.replace("`", "``") + "`") for name in df_column_names]
     for i, is_geom in enumerate(col_is_geometry):
         if is_geom:
             df_columns[i] = ST_AsEWKB(df_columns[i]).alias(df_column_names[i])
diff --git a/python/tests/utils/test_geoarrow.py b/python/tests/utils/test_geoarrow.py
index 8499a021929..2f59a0402ca 100644
--- a/python/tests/utils/test_geoarrow.py
+++ b/python/tests/utils/test_geoarrow.py
@@ -62,6 +62,14 @@ class TestGeoArrow(TestBase):
             assert field.metadata[b"ARROW:extension:name"] == b"geoarrow.wkb"
             assert field.metadata[b"ARROW:extension:metadata"] == b"{}"
 
+    def test_to_geoarrow_with_unaliased_geometry_expression(self):
+        geo_df = TestGeoArrow.spark.sql("SELECT ST_Point(1.0, 2.0)")
+
+        geo_table = dataframe_to_arrow(geo_df)
+
+        assert geo_table.column_names == ["st_point(1.0, 2.0)"]
+        assert geo_table.num_rows == 1
+
     def test_to_geoarrow_with_geometry_with_srid(self):
         schema = StructType().add("wkt", StringType())
         wkt_df = TestGeoArrow.spark.createDataFrame(zip(TEST_WKT), schema)