Skip to main content
1 of 5
John Powell
  • 13.7k
  • 5
  • 48
  • 62

I have no idea how you got the [] round what appears to be a text representation of a LINESTRING, but, to remove them, you can use regexp_replace. Then use concat to add a leading LINESTRING so that you have a valid textual representation of a geometry and finally use ST_GeomFromText to convert to a geometry.

For example, using a simplified geometry, as I am too lazy to type out yours:

SELECT ST_GeomFromText(concat('LINESTRING',
            regexp_replace('[(1 1, 2 2, 3 3)]', '(\[|\])','', 'g')));

returns a linestring -- if you wrap this in ST_AsText, you get,

LINESTRING(1 1,2 2,3 3)

Note, the (a|b) syntax means either, or, the [ is an escape character, as [ and ] have special meaning in regular expressions, and g is a global flag, meaning replace everywhere.

Putting this altogether:

ALTER TABLE area_grid_01 ALTER COLUMN coordinates TYPE Geometry(LINESTRING, 4326) 
USING ST_SetSRID(ST_GeomFromText(concat('LINESTRING', 
           regexp_replace(coordinates, '(\[|\])','', 'g'))), 4326);

ought to do what you want, using your coordinates column instead of hard-coded numbers as above. The last bit is untested, so there may be an extra/missing ( or ) somewhere.

John Powell
  • 13.7k
  • 5
  • 48
  • 62