merca opened a new issue, #1065:
URL: https://github.com/apache/sedona/issues/1065

   ## Expected behavior
   `st_makeline(collect_list(st_astext(st_point(lon,lat))))` return a line
   
   ## Actual behavior
   Error: `IllegalArgumentException: function ST_MakeLine takes at least 2 
argument(s)`
   
   ## Steps to reproduce the problem
   ```python
   # Dummy data
   ais_data = [
       ('2023-01-01 00:00:01', 259322000, 
'0101000020E6100000105839B4C8F62D40E9263108AC145140'),
       ('2023-01-01 00:00:07', 259322000, 
'0101000020E61000008104C58F31F72D404D840D4FAF145140'),
       ('2023-01-01 00:00:13', 259322000, 
'0101000020E61000008126C286A7F72D4062105839B4145140'),
       ('2023-01-01 00:00:19', 259322000, 
'0101000020E6100000D5E76A2BF6F72D40C66D3480B7145140'),
       ('2023-01-01 00:00:26', 259322000, 
'0101000020E6100000637FD93D79F82D40DBF97E6ABC145140')
   ]
   
   # Create DataFrame with schema
   from pyspark.sql.types import StructType, StructField, StringType, 
IntegerType, TimestampType
   
   schema = StructType([
       StructField("date_time_utc_s", StringType(), True),
       StructField("mmsi", IntegerType(), True),
       StructField("geo_wkb", StringType(), True)
   ])
   
   ais_df = spark.createDataFrame(ais_data,schema)
   
   from pyspark.sql.functions import col
   ais_df = ais_df.withColumn("date_time_utc", 
col("date_time_utc_s").cast("timestamp")).drop("date_time_utc_s")
   
   # Register DataFrame as temporary table
   ais_df.createOrReplaceTempView("temp_ais")
   ```
   I have tried converting between different variants
   ```sql
   %sql
   with ais as (
        select 
                date_time_utc, 
                mmsi, 
                geo_wkb, -- so this is the binary, but stored as string 
(0101000020E61000000ABABDA4317A1B405E4BC8073D734F40)
                st_astext(st_geomfromwkb(geo_wkb)) as geo_wkt -- human readable 
point string (POINT (6.86933 62.9003))
        from temp_ais   
        order by mmsi,date_time_utc
   ),
   all_geo as(
        select 
                date_time_utc, 
                mmsi, 
                geo_wkb,
                st_geomfromwkb(geo_wkb) as geo_wkb_point, 
                geo_wkt
        from ais
   ),
   point_list as (
        select 
                date_time_utc::DATE as date_utc, 
                mmsi, 
                collect_list(geo_wkb_point) as geo_wkb_point_list, -- binary
                collect_list(geo_wkb) as geo_wkb_list, -- string
                collect_list(geo_wkt) as geo_wkt_list --string
        from all_geo
        group by 1,2
   )
   select date_utc, mmsi, st_MakeLine(geo_wkb_list) from point_list
   
   -- select date_utc, mmsi, st_MakeLine(geo_wkb_list) from point_list -- 
IllegalArgumentException: function ST_MakeLine takes at least 2 argument(s)
   -- select date_utc, mmsi, st_MakeLine(geo_wkb_point_list) from point_list -- 
IllegalArgumentException: function ST_MakeLine takes at least 2 argument(s)
   -- select date_utc, mmsi, st_MakeLine(geo_wkt_list) from point_list -- 
IllegalArgumentException: function ST_MakeLine takes at least 2 argument(s)
   ```
   
   Databricks MOsaic works fine with both `collect_list` and `array_agg`, but 
Sedona will not acknowledge the the array as an array 
   
   ## Settings
   
   Sedona version = 1.5.0
   
   Apache Spark version = 3.4.1
   
   Apache Flink version = ?
   
   API type = SQL, Python
   
   Scala version =  2.12
   
   JRE version = ?
   
   Python version = ?
   
   Environment = Databricks


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@sedona.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to