From 0e024eb25e99ea9e259e268cbe78b8e1033ff9f0 Mon Sep 17 00:00:00 2001 From: Sophie de Virieu Date: Thu, 21 Aug 2025 16:56:08 +0200 Subject: [PATCH 1/2] add tpointseq_make_coords_modifier --- builder/build_pymeos_functions_modifiers.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/builder/build_pymeos_functions_modifiers.py b/builder/build_pymeos_functions_modifiers.py index 9ad4176..d797fb6 100644 --- a/builder/build_pymeos_functions_modifiers.py +++ b/builder/build_pymeos_functions_modifiers.py @@ -110,3 +110,23 @@ def spanset_make_modifier(function: str) -> str: .replace("_ffi.cast('Span *', spans)", "_ffi.new('Span []', spans)") .replace(", count", ", len(spans)") ) + +def tpointseq_make_coords_modifier(function: str) -> str: + return ( + "import numpy as np\n" + + function.replace("interp: 'interpType'", "linear: bool") + .replace("(\"const double", "(\"double") + .replace("xcoords)", "np.ascontiguousarray(xcoords, dtype=np.float64).ctypes.data)") + .replace("ycoords)", "np.ascontiguousarray(ycoords, dtype=np.float64).ctypes.data)") + .replace("zcoords_converted = _ffi.cast('const double *', zcoords)", "if zcoords is not None:\n" + " zcoords = np.ascontiguousarray(zcoords, dtype=np.float64)\n" + " zcoords_converted = _ffi.cast('double *', zcoords.ctypes.data)\n" + " else:\n" + " zcoords_converted = _ffi.NULL") + .replace("interp_converted = _ffi.cast('interpType', interp)", "") + .replace("interp_converted", "linear") + .replace("times_converted = _ffi.cast('const TimestampTz *', times)", "") + .replace("srid_converted = _ffi.cast('int32', srid)", "") + .replace("times_converted", "times") + .replace("srid_converted", "srid") + ) \ No newline at end of file From 1c206b25866a5a366e6a2229e99184402c17b817 Mon Sep 17 00:00:00 2001 From: Sophie de Virieu Date: Fri, 22 Aug 2025 09:05:06 +0200 Subject: [PATCH 2/2] declare tpointseq_make_coords_modifier --- builder/build_pymeos_functions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/builder/build_pymeos_functions.py b/builder/build_pymeos_functions.py index 7f7b7c5..e7757ca 100644 --- a/builder/build_pymeos_functions.py +++ b/builder/build_pymeos_functions.py @@ -90,6 +90,7 @@ def __init__(self, ctype: str, ptype: str, conversion: Optional[str]) -> None: "textset_make": textset_make_modifier, "geoset_make": array_length_remover_modifier("values", "count"), "tsequenceset_make_gaps": array_length_remover_modifier("instants", "count"), + "tpointseq_make_coords": tpointseq_make_coords_modifier } # List of result function parameters in tuples of (function, parameter)