postgresql - Insert forms from a query in postgis -


i try insert polygon in table geofield query. table geofield defined this:

create table geofield(id serial primary key, field geometry);  insert geofield(field) values (myfield) select     'polygon(('||cast((select lat coordinates id=1)as varchar)||' '||       cast((select lon coordinates id=1)as varchar)||','||       cast((select lat coordinates id=2)as varchar)||' '||       cast((select lon coordinates id=2)as varchar)||','||       cast((select lat coordinates id=3)as varchar)||' '||       cast((select lon coordinates id=3)as varchar)||','||       cast((select lat coordinates id=4)as varchar)||' '||       cast((select lon coordinates id=4)as varchar)||','||       cast((select lat coordinates id=1)as varchar)||' '||       cast((select lon coordinates id=1)as varchar)||'))') myfield; 

the select alone returns me:

polygon((46.744628268759314 6.569952920654968,46.74441692818192 6.570487107359068,46.74426116111054 6.570355867853787,46.74447250168793 6.569821681149689,46.744628268759314 6.569952920654968)) 

but doesn't work, tryed st_geomfromtext same result.

i avoid working text concatenation , work plain postgis functions instead:

select     /* make polygon linestring */     st_makepolygon(         /* close polygon */         st_addpoint(             t.linestring,             st_startpoint(t.linestring)         )     ) (     select         /* aggregate linestring */         st_makeline(st_makepoint(c.lon, c.lat) order c.id) linestring     coordinates c ) t ; 

following prior question, json directly if wish:

select     /* make polygon linestring */     st_makepolygon(         /* close polygon */         st_addpoint(             t.linestring,             st_startpoint(t.linestring)         )     ) (     select         /* aggregate linestring */         st_makeline(st_makepoint(c.lon, c.lat) order c.id) linestring         (         select             e.id,             (e.element->>'lat')::numeric lat,             (e.element->>'lon')::numeric lon                     field f,             json_array_elements(f.data->'vertices') ordinality e(element, id)     ) c ) t ; 

Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -