PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

ST_GeomFromText (PostGIS) का उपयोग करने के लिए असंगत स्ट्रिंग्स से दोहरा सटीक मान प्राप्त करें

दस्तावेज़ों के अनुसार , 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";



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. त्रुटि:PostgreSQL COPY का उपयोग करते समय अंतिम अपेक्षित कॉलम के बाद अतिरिक्त डेटा

  2. PostgreSQL में सप्ताह की शुरुआत और समाप्ति तिथि स्ट्रिंग कैसे प्राप्त करें?

  3. स्प्रिंग स्टैंडर्डपासवर्डएनकोड का उपयोग कैसे करें और नमक उत्पन्न करें?

  4. MS Access को PostgreSQL में माइग्रेट करें

  5. Erlang . में Postgresql कनेक्शन पूलिंग