terça-feira, 13 de maio de 2014

Modificações no tipo de geometria no Postgis 2.0



Quando criei este post meu problema e solução foi este:
Depois de criado uma tabela espacial no banco Postgresql eu fui ver meus dados utilizando o Quantun GIS. Notei que não estava aparecendo na listagem das layers disponíveis aquela que me interessava. Para corrigir o problema descobri que a partir da versão 2.0 do Postgis o controle das minhas layers deixou de ser uma tabela e passou para uma view do sistema (ver detalhes em http://postgis.refractions.net/docs/using_postgis_dbmanagement.html#Manual_Register_Spatial_Column).

Enfim para resolver a receita é a seguinte:

  ALTER TABLE footprint_noaa ADD COLUMN geom2 geometry(MULTIPOLYGON,4291);

  UPDATE footprint_noaa
   SET  poligono=r.gm
   from
   (
Select st_multi(the_geom)::geometry(MultiPolygon, 4291) as gm ,gid from footprint_noaa
   ) as r
   WHERE footprint_noaa.gid = r.gid;
 
   ALTER TABLE footprint_noaa DROP COLUMN the_geom;
 
   ALTER TABLE geom2 RENAME footprint_noaa TO the_geom;
 
Assim a tabela ficou devidamente registrada na GEOMETRY_COLUMNS e o quantum-gis entendeu tudo direitinho.

Depois disto eu aprendi outra maneira mais correta e direta da seguinte maneira:


ALTER TABLE my_table
    ALTER COLUMN geom TYPE geometry(LineString, 4326) 
    USING ST_SetSRID(geom, 4326);