我用SRID:4326创建了一个空间表。现在,我想将总投影更改为SRID:32644到新表中。旧表应保持不变。

评论

我将其添加为注释而不是答案,因为应该有一个更优雅的方法。但是您可以复制表,然后运行:UPDATE <表> SET the_geom = ST_Transform(the_geom,32644); (假设您在space_ref_sys中具有32644的完整条目。)

我尝试但忘记了此错误更新abc SET geom = ST_Transform(geom,32644);关系“ abc”的新行违反了检查约束“ enforce_srid_geom”

取消该约束。及其固定的

#1 楼

如果您使用的是PostGIS 2.0+,则可以:

ALTER TABLE mytable 
  ALTER COLUMN geom 
  TYPE Geometry(Point, 32644) 
  USING ST_Transform(geom, 32644);


评论


当然,应注意将“点”替换为几何的实际几何类型。

– Paul Ramsey
2012年11月6日在18:15

有没有简单的方法可以将Point替换为原来的几何类型?

– Mohayemin
2015年1月11日下午4:01

不,不怕。

– Paul Ramsey
2015年1月13日在2:23

#2 楼

CREATE TABLE new_table AS 
  SELECT ST_Transform(the_geom,32644) AS the_geom 
  FROM original_table;


空间表中应该有一个整数ID字段,以便将其添加到QGIS。

评论


我如上所述尝试并成功,但即使将其显示在数据库中,也无法将结果表导出到qgis / udig中?

– Satya Chandra
2012年11月2日上午10:58

你到底是什么问题?

–弗拉基米尔
2012年11月2日,11:10

如果您使用的PostGIS版本早于2.0版,则需要在指向新表的Geometry_Columns表中添加一条记录。

–HeyOverThere
2012年11月2日14:57

#3 楼

请按照以下方式进行操作:

如果您不能在第一行中创建新表,请尝试2和3.首先创建编号为1的表。 br />

评论


此解决方案不会重新投影几何形状。如果使用其他SRID存储几何,则更改约束后数据将不一致。您需要使用st_trasnform。

–天使
2012年11月12日8:52