Laut der Dokumentation
, ST_GeomFromText
benötigt (text, integer)
, nicht (double precision)
.
Alles, was Sie tun müssen, ist CONCAT()
und es sollte funktionieren.
Lösung
ST_GeomFromText(CONCAT('LINESTRING(', "YourTable"."YourString", ')'), 4326);
Zum Testen
SELECT
ST_GeomFromText('LINESTRING(3.985 58.934, 4.56 61.2323, 5.4 63.234355, 3.25982 59.309)', 4326),
CONCAT('LINESTRING(', "T1"."C1", ')'),
ST_GeomFromText(CONCAT('LINESTRING(', "T1"."C1", ')'), 4326)
FROM
(
SELECT '3.985 58.934, 4.56 61.2323, 5.4 63.234355, 3.25982 59.309, 4.5632 58.32423' AS "C1"
) AS "T1";
Nur so zum Spaß
Ich habe mich entschieden, Ihre Zeichenfolge in die ursprünglich angeforderte DOUBLE PRECISION
umzuwandeln und dann zurück in eine Zeichenfolge ... das Endergebnis ist das gleiche wie oben, aber es macht es mit viel mehr Arbeit. Trotzdem haben Sie darum gebeten.
SELECT
ST_GeomFromText(CONCAT('LINESTRING(', (SELECT STRING_AGG(ARRAY_TO_STRING("Line"."Points", ' '), ',') FROM REGEXP_MATCHES(ARRAY_TO_STRING(REGEXP_SPLIT_TO_ARRAY("T1"."C1", E', | ')::DOUBLE PRECISION[], ' '), '(\d*\.\d*) (\d*\.\d*)', 'g') AS "Line"("Points")), ')'), 4326)
FROM
(
SELECT '3.985 58.934, 4.56 61.2323, 5.4 63.234355, 3.25982 59.309, 4.5632 58.32423'::TEXT AS "C1"
) AS "T1";