दस्तावेज़ों के अनुसार
, ST_GeomFromText
(text, integer)
. की आवश्यकता है , नहीं (double precision)
।
आपको बस इतना करना है CONCAT()
और यह काम करना चाहिए।
समाधान
ST_GeomFromText(CONCAT('LINESTRING(', "YourTable"."YourString", ')'), 4326);
आपके परीक्षण के लिए
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";
सिर्फ मनोरंजन के लिए
मैंने आपकी स्ट्रिंग को मूल रूप से अनुरोधित DOUBLE PRECISION
. में बदलने का निर्णय लिया है और फिर वापस एक स्ट्रिंग में ... अंतिम परिणाम ऊपर जैसा ही है, लेकिन यह बहुत अधिक काम के साथ करता है। फिर भी, आपने यही मांगा है।
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";