2016-03-07 27 views
1

在我的项目中,我需要从shape文件导入一些几何图形。GeoDjango上的条形Z尺寸(力2D几何图形)

其中一些是MULTIPOLYGON Z类型,但所有Z坐标都是0值。

当我尝试保存的几何形状,我得到的错误:

"Geometry has Z dimension but column does not"

什么是剥离Z方向的最佳方式?

我的代码:

ds = DataSource(file_path, encoding='ISO-8859-1') 
layers = ds[0] 

#need something HERE to coerce geometry to 2D 

obj=MyModel(geometry=GEOSGeometry(layers[0].geom.hex)) 
obj.save() 

回答

0

如果您有SQL访问,你可以用ST_Force2D (or ST_Force_2D for older versions)得到这个。

您也可以通过修改类型更正源表,例如:

ALTER TABLE my_table 
    ALTER COLUMN geom TYPE geometry(MultiPolygon,4326) USING ST_Force2D(geom); 
0

感谢回答,麦克T.

的事情是,我需要使用GeoDjango framework它,没有直接访问Postgis数据库

其实经过艰苦的努力,我找到了解决办法。我需要使用.clone()方法从OGRGeometry对象。我可以更改coord_dim属性。如果我在原始对象中更改coord_dim,则不会有任何反应。

这里是我的代码:

ds = DataSource(file_path, encoding='ISO-8859-1') 
layers = ds[0] 

#HERE IS THE TRICK 
new_layer = layers[0].geom.clone() 
new_layer.coord_dim = 2 

obj=MyModel(geometry=GEOSGeometry(layers[0].geom.hex)) 
obj.save()