摘要: 当我们对线图层进行重投影的时候,它的Z值不会更新,这就需要我们额外去操作了。下面将会描述如何将图层节点的Z值从英尺变换到米。 内容:
1.使用ArcToolbox——Data Management Tools——Projections and Transformations——Feature——Project工具将数据重投影到需要的坐标系; 2.使用ArcToolbox——Data Management Tools——Features——Feature Vertices to Points将投影后的线数据转换成点; 3.打开ArcMap,添加上一步的点图层,打开属性表,添加一个新的Double类型的字段; 4.使用Field Calculator计算每个节点的Z值: 下面将会详细介绍如何将点的x、y、z坐标值填入属性表,使用Field Calculator和VBA代码可以将点数据的x、y、z坐标值(数据所在的坐标系下)放入属性表。下面的示例代码将会返回一个double类型的值,因此在给字段计算值的时候,请选择已存在的double字段,或者新建一个double类型的字段。 后面的操作需要使用图层属性表中一个新建或已存在的double类型的字段,如果需要添加新字段,请参考ArcGIS帮助文档里的“Adding and deleting fields in a table”。 1)将点图层加入ArcMap; 2)开始编辑; 3)右键点击图层,打开属性表; 4)右键点击需要修改的字段,选择Calculate Values; 5)选中AdVanced,出现两个空的文本编辑框; 6)将以下代码拷贝到'Pre-Logic VBA Script Code'文本框: Dim Output As Double
Dim pPoint As IPoint
Set pPoint = [Shape]
Output = pPoint.X
7)在Expression行输入:output
点击OK开始计算字段值。
这样添加进去的坐标值的单位即是要素实际存储的单位,而不是地图当前显示的坐标系的单位。
如果图层数据是以英尺为单位存储的,那么刚才计算出来的坐标值单位就是英尺。如果要让计算的坐标值单位和数据本身坐标单位不一致,要么在计算表达式里添加单位转换的过程,要么先将数据投影到需要的坐标系(单位)后,再做字段计算。
8)如果想要计算y或z值,只需相应地将上述代码中的pPoint.X变为pPoint.Y或pPoint.Z即可。
注:从3D图层里计算Z值是不需要3D Analyst扩展许可的。
5.如果需要,可以再创建一个新的字段,计算它的值等于之前的高程字段的值乘以单位转换因子。例如从feet转换到meters,应该将高程字段乘以0.3048;
6.从前面准备好的节点图层创建TIN数据。点击3D Analyst工具条上的下拉菜单——Create/Modify TIN——Create TIN from Features——select the vertices shapefile under ‘Layers:’——‘Source of Heights’选择转换后的新的高程字段,指定’Triangulate’参数为’mass points’,’Tag Values’参数为’Node’;
7.创建好TIN。点击3D Analyst工具条上的下拉菜单——Convert——Features to 3D,使用投影后的线数据作为’Input Feature’,选择创建的TIN作为’Source of Height’;
8.线图层的节点Z值将会更新为新坐标系下的值。可以这样验证一下:开始编辑——选择modify task——选择一条线要素——选择’Sketch Properties’按钮,你可以看到节点的Z值是更新后的。
1 个回复
易智瑞技术支持
赞同来自:
内容:
1.使用ArcToolbox——Data Management Tools——Projections and Transformations——Feature——Project工具将数据重投影到需要的坐标系; 2.使用ArcToolbox——Data Management Tools——Features——Feature Vertices to Points将投影后的线数据转换成点; 3.打开ArcMap,添加上一步的点图层,打开属性表,添加一个新的Double类型的字段; 4.使用Field Calculator计算每个节点的Z值: 下面将会详细介绍如何将点的x、y、z坐标值填入属性表,使用Field Calculator和VBA代码可以将点数据的x、y、z坐标值(数据所在的坐标系下)放入属性表。下面的示例代码将会返回一个double类型的值,因此在给字段计算值的时候,请选择已存在的double字段,或者新建一个double类型的字段。 后面的操作需要使用图层属性表中一个新建或已存在的double类型的字段,如果需要添加新字段,请参考ArcGIS帮助文档里的“Adding and deleting fields in a table”。 1)将点图层加入ArcMap; 2)开始编辑; 3)右键点击图层,打开属性表; 4)右键点击需要修改的字段,选择Calculate Values; 5)选中AdVanced,出现两个空的文本编辑框; 6)将以下代码拷贝到'Pre-Logic VBA Script Code'文本框: Dim Output As Double
Dim pPoint As IPoint
Set pPoint = [Shape]
Output = pPoint.X
7)在Expression行输入:output
点击OK开始计算字段值。
这样添加进去的坐标值的单位即是要素实际存储的单位,而不是地图当前显示的坐标系的单位。
如果图层数据是以英尺为单位存储的,那么刚才计算出来的坐标值单位就是英尺。如果要让计算的坐标值单位和数据本身坐标单位不一致,要么在计算表达式里添加单位转换的过程,要么先将数据投影到需要的坐标系(单位)后,再做字段计算。
8)如果想要计算y或z值,只需相应地将上述代码中的pPoint.X变为pPoint.Y或pPoint.Z即可。
注:从3D图层里计算Z值是不需要3D Analyst扩展许可的。
5.如果需要,可以再创建一个新的字段,计算它的值等于之前的高程字段的值乘以单位转换因子。例如从feet转换到meters,应该将高程字段乘以0.3048;
6.从前面准备好的节点图层创建TIN数据。点击3D Analyst工具条上的下拉菜单——Create/Modify TIN——Create TIN from Features——select the vertices shapefile under ‘Layers:’——‘Source of Heights’选择转换后的新的高程字段,指定’Triangulate’参数为’mass points’,’Tag Values’参数为’Node’;
7.创建好TIN。点击3D Analyst工具条上的下拉菜单——Convert——Features to 3D,使用投影后的线数据作为’Input Feature’,选择创建的TIN作为’Source of Height’;
8.线图层的节点Z值将会更新为新坐标系下的值。可以这样验证一下:开始编辑——选择modify task——选择一条线要素——选择’Sketch Properties’按钮,你可以看到节点的Z值是更新后的。
创建时间:2006-03-03
最近更新: 2009-12-18
【原文链接】
http://support.esrichina.com.cn/2006/0303/663.html
要回复问题请先登录或注册