Engine中如何把没有Z值的Gemetry转为有Z值的Geomtry:报错"the geometry has no Z values"

转载 2013年12月05日 14:30:55

在用Feedback新建要素时,得到的要素没有Z值,如果数据源(图层要素)有Z值,则新建要素不成功,报错"the geometry has no Z values"。可有用以下方法解决:
//先判断图层要素是否有Z值
 int index;
                index = pFeature.Fields.FindField("Shape");
                IGeometryDef pGeometryDef;
                pGeometryDef = pFeature.Fields.get_Field(index).GeometryDef  as IGeometryDef;

                IPointCollection  pPointCollection = pGeom as IPointCollection;
                if (pGeometryDef.HasZ)
                {                                     
                    IZAware pZAware = (IZAware)pGeom;
                    pZAware.ZAware = true;                  
                    IZ iz1 = (IZ)pGeom;
                    iz1.SetConstantZ(0); //将Z值设置为0
                }
                else
                {
                    IZAware pZAware = (IZAware)pGeom;
                    pZAware.ZAware = false;
                }
                if (pGeometryDef.HasM)
                {
                    IMAware pMAware = (IMAware)pGeom;
                    pMAware.MAware = true;                  
                }
                else
                {
                    IMAware pMAware = (IMAware)pGeom;
                    pMAware.MAware = false;
                }


(转)在把Geodatabase数据进行要素类间倒腾的时候,如果数据源是没有Z值的,但目标数据源是有Z值的,在进行set a.Shape =b.Shape的时候会出错。

解决办法简单的就是用FME进行转换,把没有要素类的数据源进行转换,默认的Z值都为零。这种方法的缺点就是麻烦。

在用Engine的借口进行转换行不行呢?可以。但是如果直接获得数据源的Geometry然后强行给它赋Z值(使用IZWare=True是不行的),而需要根据这个数据源的Geometry重新New 一个相应的Geometry,然后对每个节点进行赋Z值。

需要注意两个问题:在循环数据源的Geoemtry节点的时候需要注意临时变量需要为long,一般人喜欢dim i as integer,但是节点数据很多会大于3万哦:)

第二个需要注意的问题是:数据源的要素可能是多个部分组成,polyline可能有多个path,而polygon可能有多个ring,呵呵,好好再看看geometry 的Modal pdf文件哦,如果数据源只有一个part,遍历所有pointcollection的point赋Z值是可以的,如果有多个part,稍微有经验的人就知道,这样不行的。呵呵,要一个part一个part的搞哦。

在对要素切割的时候,如果要素是有Z值的,也是同样的道理。

相关文章推荐

垃圾3D打印机Makerbot Replicator Z18 常见报错

“Stratasys和MakerBot吹嘘第五代质量无与伦比、且非常便捷,而以前的MakerBot员工却证实说打印机喷头确实存在报道中出现的那些问题。Makerbot第五代在投入生产之前,并没有进行常...

OpenGL通过读取Z Buffer深度值将屏幕2D坐标转化为场景3D坐标(含完整源码)

出处:http://blog.csdn.net/skymanwu/article/details/504956 如需转载请注明出处:http://blog.csdn.net/skym...

李奎元:说说那些征信模型(Z计分模型、巴萨利模型和A值模型)

李奎元称:根据企业信用管理理论,5C原则是指考察客户信用价值的5个因素,即品行(character)、能力(capacity)、资本(capital)、担保品(collateral)和环境状况(con...

ArcGIS中去除Z或M值的方法

ARCGIS数据处理中Z值或M值对线转面的操作造成了错误,本文介绍如何去除坐标中的Z值和M值......

[cocos2d-x3.x学习笔记]坐标系 锚点 Z值

坐标系: 引擎坐标(左下为原点)          世界坐标/绝对坐标/全局坐标          本地坐标/相对坐标 屏幕坐标(左上为原点) Node类转换工具函数:          ...

soft-svm的理解+logistic 与SVM结合输出概率值+logistic 用到z域

软svm就是L2规范化 soft-svm的errsvmerr_svm是err01err_01的上限且svm就是对logistic regression 进行L2处理形式 logistic 与SVM结合...
  • MosBest
  • MosBest
  • 2016年08月15日 12:01
  • 275

利用遗传算法求出下面函数的极小值:z=2-exp[-(x2+y2)]

**遗传算法方法介绍: 第一步:确定决策变量及其约束条件:[-5,+5]第二步:建立优化模型:min z(x,y)=2-exp[-(x2+y2)] 第三步:确定编码方法...

OpenGL中的深度值winz与相机空间z值的关系推导

待渲染的照相机空间中的深度经常定义为近距 near 到远距 far 之间的 z 值,在透视变换之后,得到新的 z' 值,下面将对z'与z值之间的关系进行推导: 在此之前,先介绍两个必要的基础知识: 1...

白话空间统计之四:P值和Z得分(中)

要说P、Z之前(本文的P、Z写法,请忽略大小写),我们先看看一个中学化学的概念:PH值。 另外,还要纠正一个说法,p 是一个值(p value),而z是一个得分(z scores),上篇文章中,称...

OCP-1Z0-051 补充题库 第19题 限制替代变量的输入值

一、原题 Examine the structure of the EMPLOYEES table: You want to create a SQL script file that conta...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Engine中如何把没有Z值的Gemetry转为有Z值的Geomtry:报错"the geometry has no Z values"
举报原因:
原因补充:

(最多只允许输入30个字)