Description
The spoly_deg()
function can construct a spoly
from an array of float8
:
CREATE FUNCTION spoly_deg(float8[])
RETURNS spoly
AS 'MODULE_PATHNAME', 'spherepoly_deg'
LANGUAGE 'c'
IMMUTABLE STRICT;
(Aside: Why is this function not PARALLEL SAFE? Should it be?)
But there's no corresponding spoly
constructor that takes an array of float8
in radians:
testdb=> SELECT spoly(ARRAY[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]);
ERROR: function spoly(numeric[]) does not exist
LINE 1: SELECT spoly(ARRAY[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]);
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
I don't want to use a temporary table to construct a spoly
in my PLpgsql functions. It's horribly inefficient and doesn't scale when operating over very large tables. So that means I have to either convert my coordinates to degrees (only for spherepoly_deg()
to convert them back to radians) in order to avoid that or construct a string to contain the array of coordinates and use the spoly
constructor on the string.
Also, I think it would be nice if there was a constructor that takes an array of spoint
as well, so that you can do this:
SELECT spoly([spoint(1.0, 2.0), spoint(3.0, 4.0), spoint(5.0, 6.0)]);
Should that be possible? What do you think?