arcgis线段方向中为什么有些线段明明存在长度却还为0

查看: 24655|回复: 14
ARCGIS计算面积或者长度
马上注册地信网,享受更多功能,学习更多知识,成就人生精彩!
才可以下载或查看,没有帐号?
ARCGIS计算面积或者长度
(注意要是投影之后的哦!) 打开你要计算的shape文件的属性表,添加一个叫area的字段,然后选择area这个字段,右击,calculate,打开对话框后,点advanced的复选框,把下面的代码拷入就可以了.
Dim dblArea as double
Dim pArea as IArea
Set pArea = [shape]
dblArea = pArea.area
一,计算面积
添加AREA字段,然后右键点击字段列,然后点击CALCULATE VALUES; ---&选择ADVANCED--》把下面的代码输入,然后在最下面=处写OUTPUT。点击OK就OK了。
Dim Output as double
Dim pArea as Iarea
Set pArea = [shape]
Output = pArea.area
二。计算长度
同上添加LENGTH字段,然后右键点击字段列,然后点击CALCULATE VALUES; ---&选择ADVANCED--》把下面的代码输入,然后在最下面=处写OUTPUT。点击OK就OK了。
Dim Output as double
Dim pCurve as ICurve
Set pCurve = [shape]
Output = pCurve.Length
ARCGIS计算面积或者长度
用一副遥感影像作为底图配准后进行矢量化,想要求出上面每个图斑面积的大小
首先应该把地理坐标(经纬度)转换为投影坐标。然后打开多边形的attribute table, 里面有一个功能叫calculate geometry
打开要计算的shape文件的属性表,添加一个叫area的字段,然后选择area这个字段,右击,calculate,打开对话框后,点advanced的复选框,把下面的代码拷入就可以了.
Dim dblArea as double
Dim pArea as IArea
Set pArea = [shape]
dblArea = pArea.area
如果shape文件有真实的坐标,把shape转化为geodatabase中的feature class,面积字段就直接出来了。
TOOLBOX下的空间分析里IDENTIFY
需要说明的是:面积单位根据你当前数据的地理坐标单位,如果是米,则是平方米,如果是公里,则是平方公里.可以转换为平方公里,公顷,亩等.但如果是经纬度,则仅仅是经纬度作为平面单位的几何值.
好文章 顶一个先 [s:195]
现在9.3版本直接就有了,不需要用脚本了
9.2的好像也不需要脚本了。
我想知道10.0版本计算面积、长度的脚本代码,谁能告诉我?
好像听说10去掉了vba的支持了,不知道是真是假
我还是没有看明白,能不能录一下啊,我上传了一个能录的东西,谢谢
09:50 上传
点击文件名下载附件
下载积分: 铜板 -1 个
586.02 KB, 下载次数: 17, 下载积分: 铜板 -1 个
感谢LZ分享~~~~
探讨一下,ARCGIS计算面积好象还可以通过建立一个新的地理数据库的方法进行计算但是地理数据库必须先投影
楼主辛苦了,顶你啊
热线: 400-
Powered byArcGIS中的线性参考/动态分段技术(一):Linear Referencing背景
ArcGIS中的线性参考/动态分段技术(一):Linear Referencing背景
发布时间: 15:15:15
编辑:www.fx114.net
本篇文章主要介绍了"ArcGIS中的线性参考/动态分段技术(一):Linear Referencing背景",主要涉及到ArcGIS中的线性参考/动态分段技术(一):Linear Referencing背景方面的内容,对于ArcGIS中的线性参考/动态分段技术(一):Linear Referencing背景感兴趣的同学可以参考一下。
&Linear Referencing背景
定位:介绍Linear Referencing背景;在ArcMap中关于Linear Referencing的结构和功能;以及ArcGIS Server中几个应用场景的实现。
注:有关更详细的操作可查看在线帮助,或搜索论坛。
什么是Linear Referencing
Linear Referencing(下文引用为LR)翻译过来是线性参考,在公路,管网等行业的GIS应用中时常提到。LR是一种利用沿着可测量的线要素的相对方位来存储地理位置的方法。比如下图中:
下面线的长度一次标为0,10,20,30,40……,而沿着这条线,我们看到上面有:
一个位于坐标12处的点; 一个位于坐标10东侧4个坐标的点; 一段起始坐标分别为18和26的线段; 一段起始坐标为28,长度为12的线段。
为什么要用到LR技术?主要有两个原因:1、很多事件,像上边的例子一样,是通过沿着(曲)线的相对位置来记录的;2、要显示一条线上的多个属性集合时,由于各个属性在(曲)线上所对应的位置不同,同一数据源如果不做处理,很难达到要求。使用LR技术可解决此问题。
以公路方面的一个应用场景为例说明。我们要显示一条公路的4种不同属性:道路管辖情况、路面材料、路段限速情况和路况,假设该公路长100公里:
1、前40公里为交警2大队管辖,后60公里为交警4大队管辖;
2、30至70公里为水泥路面,其余为沥青路面;
3、0-20公里的路段限速45km/h,20-40公里的路段限速35km/h,40-70公里路段限速45km/h,70-100公里路段限速55km/h;
4、0-20公里路况一般,20-40公里路况很好,40-60公里路况很差,60-100公里路况很好。
属于同一数据源对应多个属性(且属沿线分布)的情况。如果不使用LR技术,那么需要4个公路图层,每个图层的公路根据属性分成长短不同的段落(Feature),才能够将这些属性展示出来;而是用了LR技术后,只需要一个公路数据(Feature数量不限),和四个事件表即可在不改变实际公路数据的情况下,按要求显示上述四种属性。
Dynamic Segmentation:动态分段,属于LR采用的一种技术(一般应称之为线性参考问题中的动态分段技术)。是根据属性表中存储的相对位置信息,以及相应的线性数据,动态计算出线性数据上相对位置所对应的实际地理坐标的过程。动态分段正是因为表达不同属性时,不用去分割实际的地理数据,而是动态计算出该属性对应的地理位置而得名。
ArcGIS中Linear Referencing的实现原理
ArcGIS中实现Linear Referencing主要通过以下两种数据结构:
1、Route FeatureClass
2、Event Table
通过Dynamic Segmentation技术,Event Table中不同位置的Event就定位到了Route FeatureClass下对应的Line Feature上。
Route FeatureClass
实际上是拥有两个特殊字段的Polyline FeatureClass:
1、必须包含有M(Measure)值的Shape字段。拥有M值的Shape字段,不但能存储x,y(,z)坐标,还能够多存储一个M数值;
2、必须包含有一个标识线段ID的字段,可以是Number或者Text类型。
除了上述两个字段要求,还可以有其他字段。
Route FeatureClass不同于普通的Polyline FeatureClass,是因为它具有一个测量系统,而这个测量系统的原理就是,通过存储在Feature的Vertice中的M值以及该Feature实际的ShapeLength,来动态插值出线上每一点的相对位置。比如一条公路数字化时,有两个节点(Vertice),分别表示该公路的起始桩号0公里和结束桩号100公里,该Feature存储在WGS1984坐标系中,ShapeLength为2.00,那么该公路上40公里处的位置,就应该位于图上该Feature的40%的位置,也就是ShapeLength为0.80的位置。
而ArcGIS中,不要求每个节点都必须有M值。对于没有M值的节点其M值会标记为NaN(not a number):
此外在不违反逻辑错误的情况下,M值可以随意设置。比如上图左边的图形,0-10段的实际ShapeLength看起来比10-20段的ShapeLength明显要长,也可以将上述四个节点的M值随意地设置为0,3,7,30。但是如果设置为0,10,5,30的话就产生了逻辑错误(route measure anomalies),ArcMap中会将其突出显示,提醒用户使用工具修改。
Event Table
实际上是拥有2-3个特殊字段的表(ArcGIS支持的表均可,甚至可以是有特定格式的text文件):
1、类似Route FeatureClass中RouteID的一个字段。用来存储与Route FeatureClass中哪个线Feature对应。可以是Number或Text类型;
2、根据Event类型不同而必须的1-2个字段:
Point Event:比如108国道1900公里处发生了交通事故这个Event,需要一个Number类型的字段来记录1900这个相对位置; Line Event:比如108国道公里段的路况很差这个Event,需要两个Number类型的字段来分别记录这两个起止位置。
除了上述两个字段要求,还可以有其他字段。
Event Table中一条记录就对应了需要在线上定位的一个点或一段距离,可以用来标识事件或属性等。下图描述了Dynamic Segmentation技术利用Route FeatureClass和Event Table产生的结果:
ArcGIS桌面中对Linear Referencing的实现
ArcGIS桌面中不仅提供了专门的Linear Referencing Toolbox,对于产生的结果图层,也能像普通图层一样进行各种操作,而针对Linear Referencing的方方面面也提供了非常细粒度的操作供用户调整。
对Route FeatureClass的创建与修改。包括:通过Catalog或Tool或向导创建RouteFeatureClass;利用Tool从已有的Polyline FeatureClass创建Route FeatureClass;通过Tool或向导利用已有的Point FeatureClass来校准Route FeatureClass的M值(注:通过对RouteID字段建立索引,可提高Dynamic Segmentation的效率); 利用Route Editing Toolbar对其进行修改;
将Route FeatureClass作为图层显示,并对其进行查询。包括:对Route进行Identify。查询出线上任意点的M值(Identify Route Locations工具需从Customize中调出);查找某条线上指定M值的位置(包括Point和Line两种),通过Find工具实现;自定义符号显示M值的异常。包括逻辑错误等,可通过Route图层的属性对话框实现;在地图上像刻度尺一样任意显示Route的M值(Hatch)。通过将定义Hatch Definition(可多个),将其组织在Hatch
Class(可多个)下,并附加SQL Query和Range Scale操作,基本实现任意复杂的“道路标尺”,而“标尺”的Label也可进行Script的高级控制,最终还能将“标尺”转换为Graphics,或将“标尺”风格另存为Style。在Route图层的属性对话框中实现;
通过Tool和Attribute Table,对Event Table进行创建和修改; 通过Tool,利用Dynamic Segmentation技术将Event Table中的Event显示在Route上(可显示点、线、面),其结果作为一个图层添加到TOC中,可进行显示、查询和分析等操作;
通过Tool或向导,对Route Event进行Overlay,Aggregate,Transform等操作。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:}

我要回帖

更多关于 arcgis计算线长度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信