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. 4——class和struct

    class的定义看上去很像struct定义的扩展, 事实上,类定义时的关键字class完全可以替换成struct,也就是说,结构体变量也可以有成员函数. class和struct的唯一区别在于:str ...

  2. CS184.1X 计算机图形学导论(第四讲)

    一.齐次变换 1.平移变换 变换矩阵不能包含X,Y,Z等坐标变量 如果x坐标向右平移了5个单位长度,则x~=x+5.在变换矩阵中表示的时候添加一个w坐标变量.通过加入一个w坐标,可以实现平移变换 1& ...

  3. CSS重置浏览器所有默认的样式

    ::-webkit-scrollbar-track-piece { width: 8px; height:8px; background-color: #f0f0f0; /* 背景色 */ } ::- ...

  4. 【C++11新特性】 C++11智能指针之shared_ptr

    C++中的智能指针首先出现在“准”标准库boost中.随着使用的人越来越多,为了让开发人员更方便.更安全的使用动态内存,C++11也引入了智能指针来管理动态对象.在新标准中,主要提供了shared_p ...

  5. vector内存增长方式

    首先必须要了解vector是一种特殊的数组,因此其内存必然是连续的 其次它的连续是建立在不断地对内存的预分配上的,即不断地销毁当前,重新建立内存,效率有点低.所以存在几个函数capacity, siz ...

  6. Python基础教程(019)--执行Python的方式,IPython

    前言 了解IPython 内容 IPython 是一个Python的交互式shell,比默认的Python shell 好用的多 查看图片 在提示符下执行 目的 了解进入IPython 退出IPyth ...

  7. url 上回调函数(JSONP原理)

    1.JSONP原理:就是跨域的 js程序(get请求对应url,获取到文本数据,在script标签中,就是按照 js 程序执行,)执行时  调用  当前程序中写好的函数,并且把跨域的数据(即参数),传 ...

  8. rabbitmqadmin命令行管理工具-4

    rabbitmqadmin命令行管理工具原文地址: https://www.cnblogs.com/wuzhiyuan/p/6856985.htmlhttps://www.cnblogs.com/mr ...

  9. js中Array方法重写(二):myForEach;myEvery;mySome;myFilter;myReduce

    一.myForEach //myForeach 数组每个元素都执行一次回调函数 Array.prototype.myForEach = function(callback){ for(var i = ...

  10. python中的list和generator

    # -*- coding:utf-8 -*- # author : Keekuun # 列表生成式,list l1 = [i for i in range(10)] # 或者 l2 = list(ra ...