I have 8 real values in a table that I\'d like to combine into a polygon. I haven\'t been able to figure out how to create a polygon using these values though. I keep trying
The syntax for a regular postgres polygon is more like:
insert into geo_table values (1, '((2,2),(3,4),(3,6),(1,1))');
Where 1 is some id and the quoted entry is the polygon. I would expect the query to be similar, you probably need parentheses etc for the coordinates. Typically for geospatial data you want (Lon Lat) coordinates. Postgis also takes WKT statements like:
GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))')
This example takes longitude and latitude coordinates from a table and converts them into a geometry. The dimensions of each box are given as long_high, long_low, lat_high, and lat_low. Here, a box of approximately 500m by 500m.
Add a new geometry column 'box' to the table
SELECT AddGeometryColumn('public', 'predpol_raw', 'box', 2240, 'POLYGON', 2);
Update the new field with those values.
UPDATE predpol_raw SET box = ST_Transform( ST_GeomFromText( format('POLYGON((%s %s, %s %s, %s %s, %s %s, %s %s))', long_high,lat_high, long_low,lat_high, long_low,lat_low, long_high,lat_low, long_high,lat_high ), 4326 ), 2240 );
Note the transformation to a different spatial reference. The POLYGON keyword requires double parentheses '(( ))'.
As mentioned by bvmou - GeomFromText
will work fine.
I'll just add a small syntax update:
GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))')