首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GeoDjango (力2D几何)上的Z维带

GeoDjango (力2D几何)上的Z维带
EN

Stack Overflow用户
提问于 2016-03-07 18:49:48
回答 2查看 1.6K关注 0票数 6

在我的项目中,我需要从shapefiles导入一些几何学。

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

当我试图保存几何学时,我得到了一个错误:

几何学有Z维,但列没有

去除Z维的最佳方法是什么?

我的代码:

代码语言:javascript
复制
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()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-08 21:36:12

谢谢你的回复,迈克。

问题是,我需要使用GeoDjango框架实现它,而不需要直接访问Postgis数据库

事实上,经过艰苦的工作,我找到了一个解决办法。我需要从.clone()对象中使用OGRGeometry方法。现在,我可以更改coord_dim属性。如果我在原始对象中更改coord_dim,什么都不会发生。

这是我的代码:

代码语言:javascript
复制
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()
票数 8
EN

Stack Overflow用户

发布于 2016-03-07 20:34:08

如果您具有SQL访问权限,则可以使用(对于较旧版本)实现这一功能。

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

代码语言:javascript
复制
ALTER TABLE my_table
  ALTER COLUMN geom TYPE geometry(MultiPolygon,4326) USING ST_Force2D(geom);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35851577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档