• arcengine 判断要素是否有z值


    //判断IFeatureClass图形是否含有Z值信息
    IFeatureClass featureClass = this.pLayer.FeatureClass;
    string shapeFieldName = featureClass.ShapeFieldName;
    if (featureClass.Fields.get_Field(featureClass.FindField(shapeFieldName)).GeometryDef.HasZ)
     {
             this.hasZ = true;
    }
    //若有为IPoint赋Z值:
    IPoint point = new PointClass();
    point.X = num;
    point.Y = num2;
    if (this.hasZ)
    {
           IZAware aware = point as IZAware;
           aware.ZAware = true;
           double num3 = Convert.ToDouble(this.Z_numericUpDown.Text);
           point.Z = num3;
    }
    ————————————————
    版权声明:本文为CSDN博主「GIS_百度」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/GIS_Y_C_B/article/details/119949462

    Arcengine 开发,FeatureClass新增feature时“The Geometry has no z-value”或"The Geometry has null z-value"的解决方...

    Arcengine 开发,当图层含有Z值时,新增的feature没有Z值就会 出现“The Geometry has no z-value”的错误。意思很明显,新增的geometry没有Z值。

    此时按照常规想法,取出geometry的每个点,分别设置Z=0,理论可行,但实际调试过程中依然报“The Geometry has no z-value”。

    可用解决方案如下:

    1.  
      IGeometry geometry = feature.ShapeCopy;
    2.  
      IZAware zAware = (IZAware)geometry;
    3.  
      zAware.ZAware = true;

    这样转换一下,geometry就有Z属性了。zAware.ZAware是控制geometry是否有Z值的,当然也可以使用IZAware除去geometry的Z值。

    故事到这里应该就结束了,可是调试时候又报错了,这时的错误是“The Geometry has null z-value”,意思也很明显,z为空,不通过....

    这时再使用常规方案,取出geometry的每个点,分别设置Z=0...结果还是一样的报错。

    解决方案如下:

    1.  
      IZ iz = (IZ)geometry;
    2.  
      iz.SetConstantZ(0);

    运行,通过....

    AE提供了很多转换接口,比我们自己写要简单和有效的很多...当然也是因为AE中有很多结构没有公开,我们的一些常规解决方案有时候不是那么有用。希望能帮到有这么方面困扰的AE coder!

  • 相关阅读:
    前端验证银行卡(Luhn校验算法)
    常见的三狼布局
    项目中的分页插件
    JavaScript葵花宝典之闭包
    CSS 高级布局技巧
    window.open打开新窗口被浏览器拦截的处理方法
    Input输入框输入银行卡号自动空格
    关于NSURLSession的上传和下载
    将一个字符串从第40个字节开始替换为@"..."
    IOS开发之高级功能---远程推送
  • 原文地址:https://www.cnblogs.com/gisoracle/p/16010935.html
Copyright © 2020-2023  润新知