ArcMap中如何计算Polyline的直线长度

欢迎访问我的博客GISer空间

0. 数据

        这儿有这么一群线。

1. Haversine formula公式

        计算直线长度,我首先想到的是,利用Haversine formula公式根据起止点的经纬度来计算距离,因为在ArcMap中可以用Calculate Geometry(如下图)计算线的起止点坐标。实际长度用 !shape.length 计算。但是在计算曲折度的时候,发现部分线的实际长度比直线长度还小。我就挑选了一条线,用测量工具测算出的距离与Haversine formula公式计算的距离不一致。

猜想原因:①直线长度和实际长度两种计算方法的原理不一致,因此导致了“实际长度比直线长度还小”的问题;②投影问题。

Calculate Geometry

        因为我比较懒,我也没去深究ArcMap中 !shape.length 的计算原理,也没去管投影问题,因为只要直线长度和实际长度的计算方法一致,就可以计算曲折度。所以,下面这种方法就诞生了。

2. !shape.length

        既然实际长度采用 !shape.length 计算,那么我把起、止点连接成直线,再用同样方法计算,就能保证两个长度的计算方法一致了。

        那么怎么连接起、止点呢?

2.1 使用Feature Vertices To Points工具生成起、止点(Points)

Feature Vertices To Points

        生成的起、止点图层如下图。

起止点

2.2 合并起、止点图层

       将两个图层合并可以使用Append或者Dissolve工具。在这里,我选择Append工具,将“End”图层追加到“Start”图层。

Append

2.3 将起、止点连接成线(Points To Line)

        将“End”图层追加到“Start”图层后,打开属性表,可以发现起、止点都在同一图层,并且ORIG_FID字段存在相同的值,因为他们表示同一条线的起、止点。(下图为FID=1066的线)

属性表

        使用Point To Line工具将点转换为线,注意Line Field选择ORIG_FID。

Points To Line

        生成的结果如图。

2.4 计算直线长度

        打开属性表,新建字段,使用字段计算器计算长度。

2.4 将计算结果添加到线图层属性表(Join)

Jion Data

2.5 结果

计算结果

转载于:https://my.oschina.net/huanglii/blog/881814

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值