`
NickWar
  • 浏览: 72558 次
  • 来自: 南京
文章分类
社区版块
存档分类

在ArcEngine中创建带高程Z值的点和线图层

 
阅读更多

管线和其附属物的坐标数据都是带有Z值的

而且有些情况下,一个管段的两个端点的x,y值一模一样(垂直的管段)

这样的线,在直接生成shape图层的时候,就会产生问题,特别是

使用ArcSDE的C API直接创建到表中的时候你会发现,这样的数据是生成不了的

解决的方法就是为图层添加Z值,一个图层是否带有高程值,可以在ArcMap中通过查看

图层的属性表得知,带有Z值的图元,在Shape字段中,其类型后面会有个ZM字样

比如point ZM,Polyline ZM

带高程值的图元Shape字段显示状态

创建带高程Z值的图层时,只设置Point的Z属性是没有用的,默认情况下

ArcEngine会忽略Z值,

两步走,解决问题:

第一步:创建Shape图层,使用IFeatureWorkspace.CreateFeatureClass

此函数的第二个参数是IFields,字段定义,在字段定义中对Shape字段的类型

使用IGeometryDefEdit.HasZ_2 = true指定其包含Z值,

第二步:添加图元,需要使用IZAware接口指定其ZAware为true

顺便提一下ArcSDE C API中的此种问题,

一开始我以为比较简单,使用SE_layerinfo_set_3D就能解决问题,

但老有几条记录导入不了,使用field calculator查看一下图元的Z值才发现,

高程都变成整数了,我可以确定传入的数据是double型的,但是调用

SE_shape_generate_point和SE_shape_generate_line之后,生成的数据就是高程为整数

查了查,网上有代码说使用SE_coordref_set_precision设置坐标为高精度的,

我在创建layerinfo和插入shape的时候都进行了设置,却没有任何效果,只好暂时作罢..

20100723更新:

上面高程精度丢失问题解决了,

本来以为很简单,直接生成shape再用ArcCatalog导入到ArcSDE中,

用的时候发现,有几个图层死活导入不了,

提示错误是ORA-01426:numericoverflow,

于是还是得写代码直接导入,今天折腾了将近一天,想法是用C++直接调用SDE的C API来做,试试看值传入的有没有问题,

搞到下午,折腾的差不多了的时候,突然发现这个函数SE_coordref_set_z_by_range

使用高程的最大值最小值加0.001后传入这个函数,效果是立竿见影啊,立即搞定了,

囧的是,为了这个问题,午饭都没吃

分享到:
评论

相关推荐

    arcengine9.2点生成等高线

    在"arcengine9.2点生成等高线"这个项目中,我们聚焦的是如何利用ArcEngine 9.2版本的功能,从一系列点数据生成等高线。等高线是地图上用来表示地形高度变化的重要元素,通过连接相同海拔高度的点,可以清晰地展示...

    Feature设置Z值

    这样就可以在地图上看到带有Z值的多边形了。 #### 示例代码解析 在提供的代码片段中,可以看出作者采用了VB.NET语言进行开发,并且遵循了ESRI ArcObjects SDK的API设计。代码首先进行了环境初始化检查,然后通过`...

    Arcengine二次开发的宝典级电子书

    使用 ArcGIS Engine 的地形分析功能,可以将带有高程信息的点数据转换为等高线图层,生成地形表面模型。 8. **空间查询的实现**: `IQueryFilter` 和 `IFeatureSelection` 接口协同工作,实现了基于空间位置、...

    arcengine下tin的三维显示 c#代码.docx

    在ArcEngine中,TIN(Triangulated Irregular Network,不规则三角网)是一种用于表示三维地形表面的数据结构。TIN通常由一系列互不相交的三角形组成,每个三角形都有自己的高度值,用于精确地模拟地形表面。C#编程...

    反距离权重法生成等值线.txt

    在给定的部分内容中,展示了一个使用 ArcEngine 通过反距离权重法生成等值线的过程。具体步骤如下: 1. **创建插值操作对象**:通过 `New RasterInterpolationOp` 创建一个插值操作对象 `pInterpolationOp`。 2. ...

    arcengine下tin的三维显示 c#代码.pdf

    接下来,我们需要设置TIN图层的属性,包括Z轴缩放、Z轴偏移和在平面与三维显示间的切换。这涉及到`I3DProperties`接口,它提供了对三维数据属性的访问。例如,调整Z轴缩放因子的代码如下: ```csharp public void ...

    ArcEnginee xue

    3. **ArcSDE中的图层几何类型**:ArcSDE是Esri的数据库连接技术,开发者可以通过其接口获取图层的几何类型(点、线、面或Z值),这对于数据处理和空间分析至关重要。 4. **ArcGIS Server常见问题及解决**:在开发...

    获取空间三维点坐标

    在本文中,我们将深入探讨如何使用ArcEngine这一强大的GIS开发平台,基于栅格文件来获取地理位置的X、Y坐标以及高程(Z值)信息。ArcEngine是由Esri公司提供的一个用于构建桌面和服务器端GIS应用的开发组件,它支持...

    海图总结报告

    - **点坐标获取**:获取的点坐标Z值是高程而非深度,需通过查找点图层属性表获取正确的三维坐标。 - **自动布点算法**:难点在于确定海底空间的不规则性,尝试通过切割空间的方式解决,但实际操作中面临空间信息获取...

    基于CAD数据生产ArcGIS制图数据的研究与应用.pdf

    在厦门市1:2000CAD地形图数据中,除了基本的分层、颜色、线型等属性之外,点状、线状、文字注记地物的编码均存放在CAD的厚度属性里,线状地物的高程值存放在标高属性中,点状地物的高程值存放在z属性中,有向点状...

    ArcGlobe组件开发入门

    - **浮动图层**: 通过设置z值定义自身在三维空间中的位置。 - **叠加图层**: 放置在已知表面图层之上,从该图层获取z值。 - **高程图层**: 提供三维表面,用于放置其他图层。 ##### 2.2 导航控制 - **地球模式**: ...

    city示例教程

    标题《city示例教程》所指向的知识点主要集中在CityEngine这一三维建模工具的入门使用方法,尤其是在创建三维数字城市方面。CityEngine作为一款专业的三维城市建模软件,它结合了GIS(地理信息系统)数据的强大功能...

Global site tag (gtag.js) - Google Analytics