ArcMap是一个功能丰富的复杂系统,但凡对它有些认知的会同意这个观点。

它的丰富与复杂体现在一个objective有多种implementation,还体现在多种implementation有类似的result。分析这些同与不同,可以帮助我们更好地认识与综合运用这个系统。

这里,博主单拎出“面转线”这个objective小议一下。

Preparation

1、演示使用软件版本为ArcGIS Desktop 10.1,其他版本可能存在结果不一致的情况(这也是“复杂”的一种表现),演示中会使用ArcToolbox组件。

2、搞一个面要素类,最好存在如下图所示的孔洞、岛屿、重叠面等要素,保证我们测试数据足够的复杂。

Implementation 1—Feature To Line

第一种实现方式我们选择“要素转线”,它在ArcToolbox的“数据管理”工具箱——“要素”工具集中,具体的工具功能可以阅读其说明。

输入的要素类是我们准备的面要素类,输出结果博主这里是"p2_FeatureToLine"面要素类,使该要素类图层进入编辑状态,我们看一下结果的特征:

1、线是根据面相接或者面重叠断开的

2、所有的交界部分的公共边(下图高亮部分)生成了2次

需要特别说明的是最下边的圆形是一个岛屿与外围面的公共边。

Implementation 2—Polygon To Line

第二种实现方式使用“面转线”工具,它的路径与“要素转线”工具路径一致。

输入的要素类仍然是我们准备的面要素类,输出结果博主这里是"p2_PolygonToLine"面要素类,使该要素类图层进入编辑状态,我们看一下结果的特征:

1、线是根据面相接或者面重叠断开的(同上一种公具,不再附图)

2、公共边界只生成了一条线

3、重叠面的边界生成了2次,重叠面覆盖的公共边生成了4次

Implementation 3—Polygon Copy To Polyline

这是一种简单生硬的操作方式。

新建一个线要素类(注意空间参考与面要素类一致),将要转线的面要素类在编辑状态选中所有要素图斑,复制→粘贴到这个新建的要素类,博主这里该要素类的名字是“Polygon2Polyline”。

同样,我们看一下它的特征(请忽略图中的2,4字样注记,截图疏忽,忘记删掉):

1、所有的面要素均转为了独立的线要素,不受要素图斑空间关系的影响

2、多部件面要素会转换为多部件线要素

需要补充一下的是不知道如何验证是否多部件的翻翻博主的这一篇博文→解析ArcGis的字段计算器(二)——有玄机的要素Geometry属性,在属性表就能查出孔洞、多部件

Implementation 4—Intersect

这个工具有一个快捷打开入口,在工具栏——“地理处理”下拉。

可以将输出类型设置为“LIne”,从而输出面公共边为线要素类。

接下来,编辑一下,看看特征:

1、结果不受重叠面的影响,只是将公共边生成线要素(如下图,红色)

2、所有公共边生成2次线要素

Summary

1、如果需要获取面要素根据邻接关系转换成多线,使用Polygon To Line工具,需要注意的是先排除一下面要素类可能存在的重叠问题,再进行转换。

2、如果需要获取面要素完全转换成单个线要素,使用上述的第3种实现方式,即Polygon Copy To Polyline,借助这种操作可以变相使用线要素类的自相交拓扑检查面要素的自相交。

3、如果需要获取面要素的公共边,使用Interset工具,注意设置输出类型为“Line”。

4、对于“面转线”这个objective,想不出Feature To Line工具有啥鸟用。

小议ArcMap面转线的几种方式的更多相关文章

  1. 不停止MySQL服务增加从库的两种方式

    不停止MySQL服务增加从库的两种方式 转载自:http://lizhenliang.blog.51cto.com/7876557/1669829 现在生产环境MySQL数据库是一主一从,由于业务量访 ...

  2. Spring依赖注入三种方式详解

    在讲解Spring依赖注入之前的准备工作: 下载包含Spring的工具jar包的压缩包 解压缩下载下来的Spring压缩包文件 解压缩之后我们会看到libs文件夹下有许多jar包,而我们只需要其中的c ...

  3. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

  4. 创建线程的两种方式比较Thread VS Runnable

    1.首先来说说创建线程的两种方式 一种方式是继承Thread类,并重写run()方法 public class MyThread extends Thread{ @Override public vo ...

  5. IOS--实现滤镜效果的四种方式

    IOS–实现滤镜效果 demo地址: https://github.com/AbeDay/ios–.git 使用CIFilter来完成IOS中滤镜效果 在IOS中可以使用系统自带的方法来达到路径效果: ...

  6. 加载xib文件的两种方式

    一.加载xib文件的两种方式 1.方法一(NewsCell是xib文件的名称) NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@&quo ...

  7. 不停止MySQL服务增加从库的两种方式【转载】

    现在生产环境MySQL数据库是一主一从,由于业务量访问不断增大,故再增加一台从库.前提是不能影响线上业务使用,也就是说不能重启MySQL服务,为了避免出现其他情况,选择在网站访问量低峰期时间段操作. ...

  8. HBase读写的几种方式(三)flink篇

    1. HBase连接的方式概况 主要分为: 纯Java API读写HBase的方式: Spark读写HBase的方式: Flink读写HBase的方式: HBase通过Phoenix读写的方式: 第一 ...

  9. MySQL InnoDB 备份与恢复七种方式

    有几种方式: 1 mysqldump, 这种方式不仅适用于InnoDB,还适用于其它类型的存储引擎,如MyISAM.备份的时候将数据库备份成SQL(包含drop,create,insert等语句),恢 ...

随机推荐

  1. CSS3中resize属性

    说明: resize属性是指定一个元素是否可由用户调整大小的. 语法: resize:none | both | horizontal | vertical none:用户不可一调整元素的尺寸(默认值 ...

  2. django报错

    报错: SyntaxError Generator expression must be parenthesized 问题原因: 由于django 1.11版本和python3.7版本不兼容, 2.0 ...

  3. 前端学习(三十七)angular(笔记)

    MVC     后台    M         Module             数据层    V         View             视图层    C         Contro ...

  4. MySQL中常见函数

    一.日期函数 1.NOW()   返回当前日期和时间 mysql> SELECT NOW(); +---------------------+ | NOW() | +-------------- ...

  5. vagrant(一)初识与安装

    链接:https://pan.baidu.com/s/1I2RNMNq9G-P4k42-U1Jjtw (这里有需要准备的安装包以及镜像文件,也可自己去官网下载)提取码:jis8 安装VirtualBo ...

  6. js中的回钓函数,C#中的委托

    $(function(){ myfunction(sayHi); }); var sayHi=function(){ alter('你好'); } function myfunction(a){ a( ...

  7. jmeter.bat无法启动

    jmeter.bat启动时提示:'findstr' 不是内部或外部命令,也不是可运行的程序或批处理文件. 学习中遇到的问题: 'findstr' 不是内部或外部命令,也不是可运行的程序或批处理文件. ...

  8. UIView响应事件的两个方法

    参考自:https://blog.csdn.net/mushaofeng1990/article/details/62434349 用户触摸屏幕后的事件传递过程: //方法A-(UIView *)hi ...

  9. 替换OSD操作的优化与分析

    http://www.zphj1987.com/2016/09/19/%E6%9B%BF%E6%8D%A2OSD%E6%93%8D%E4%BD%9C%E7%9A%84%E4%BC%98%E5%8C%9 ...

  10. LDD快速参考

    第二章 快速参考 本节中出现的条目会以它们在文中出现的顺序列出: insmod modprobe rmmod 用来装载模块到正运行的内核和移除模块的用户空间工具: #include <linux ...