2016-03-07 57 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()