在我的项目中,我需要从shapefiles导入一些几何学。
其中有些是MULTIPOLYGON Z类型,但所有Z坐标都是0-值.
当我试图保存几何学时,我得到了一个错误:
几何学有Z维,但列没有
去除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()发布于 2016-03-08 21:36:12
谢谢你的回复,迈克。
问题是,我需要使用GeoDjango框架实现它,而不需要直接访问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()发布于 2016-03-07 20:34:08
如果您具有SQL访问权限,则可以使用(对于较旧版本)实现这一功能。
还可以通过修改类型来更正源表,例如:
ALTER TABLE my_table
ALTER COLUMN geom TYPE geometry(MultiPolygon,4326) USING ST_Force2D(geom);https://stackoverflow.com/questions/35851577
复制相似问题