ArcGIS制图表达Representation-制图表达介绍
ArcGIS制图表达技术-制图表达介绍
by 李远祥
在基于GIS数据的制图中,大部分都是使用的数据+符号应用的这种模式。这种模式已经被应用很多年,而且也是非常成熟。对应在ArcGIS体系里面,就是数据+地图文档的模式。这种模式的好处就是能够保存数据和地图的独立性,任何的地图渲染都不会影响数据本身。
虽然这种应用已经非常成熟,也有很多的单位和个人使用这种方式实现了不少的地图成果和产品,以及发布一些在线地图。但这种模式有普遍存在一些难以解决的问题,就是地图的展示规则过于依赖数据,例如唯一值渲染需要有分类的字段,图标渲染需要多个数值型字段等;符号规则相对简单,一些特殊的符号形式很难通过标准的符号技术实现;对于具有非常严紧规范的地图生成(如出版地图)来说,表现能力还是不足够。
Esri很早就注意到这一点,在ArcGIS9.x的时候就推出了【制图表达】技术,用于解决上述的一些问题,只是国内很少有单位和企业关注,导致这项技术在国内没有推广开去。用过CAD的人基本上都有一种感觉,就是绘制出来的图形就是最终的图形,尽管绘制的类型分为点、线、面、文字(跟GIS类似),但绘制出来的时候是带有符号信息的,这就是CAD所见即得的做法。有如photoshop和coredraw这类型的软件,直接就是绘制最终的图形。而GIS不一样,GIS由于要表达的是真实的地理位置,因此绘制出来的都是测绘数字产品,用直接的话来说,就是将所有的图形都坐标化后进行图形重构,如点连成线、线围成面,都是简单的几何图形,不带任何的符号信息。因此,GIS数据要达到交互操作的效果,还需要进行配图工作,让这些“丑陋”的数据穿上漂亮的外衣,最终成为地图。
一般来说,要实现地图的制作,使用传统的数据+地图文档方式即可实现,能够达到使用要求,但对于出版地图来说,会有更高的地图制作要求;还有一部分人对地图天生的执着,希望进一步来提升地图的表现能力,在数据+地图文档 这种模式下,还是很难发挥出来。
笔者从2010年就开始接触制图表达,并不遗余力的研究其优缺点和使用价值。经过了非常长的时间使用,发现ArcGIS的制图表达技术确实是一项很好的技术,在图形的表达上有跟多的优势,其表现能力可以更加接近现实世界。之前我也引用地图学的一些经典论调,地图是显示世界的抽象描述。如果使用了制图表达去制作地图的话,地图就变得更加直观了。下面我们一张图可以看出制图表达技术的特点(这种图笔者在很多次制图讲座中均有引用)

左边第一张图是GIS数据,数据是点线面基础图形,原则上是不带任何的符号和色彩的,为了显示数据,GIS软件会默认给定数据一个符号。
中间的图是初步可以称得上是地图,因为已经根据其数据的特性进行了符号配置,例如河流用蓝色线符号表示,绿地用绿色面状填充表示。
右边的那种图就是用了制图表达之后的地图,从图上可以看到河流已经应用了一些跟现实相似的规则,河流发源部分符号相对幼细,下游部分相对宽广,线要素就用了一个逐渐变宽的面来表达。
从这三张图可以看到,数据、地图、制图表达的区别。制图表达使用后,地图的显示更加接近现实规则。制图表达技术通过一些列的规则来约束地图的显示,这些规则可以相互的叠加使用,从而实现不同的显示效果。
可能上述的文字都不足以描述制图表达的一些具体的优势,那么我们先来看制图表达做的几张地图,这样更能帮助我们了解制图表达的作用(尽管这几张图在2010年的时候已经制作,那时候是使用的是ArcGIS9.3 进行制作的)

上图是行政区划的面状表达,传统的方式是非常扁平的色彩渲染,用纯色去显示行政区面。利用制图表达,可以实现类似coredraw的色彩渐变和发光效果,关键是我们使用的是GIS数据,而不是在一个制图软件中重新绘制这些图形去实现。

再来看这个建筑面,在制图表达中使用了简单的规则,就可以使二维的建筑面看起来具备简单的立体效果。

再看具体的符号规则,在边界类中使用了虚线符号,能够让边界交汇处符号实现实部相交,而不是随机的虚线显示(一般使用虚线符号,在端头处是符号是随机的,可以存在空白对接)。

上图是一个运动场的效果,左边是原始数据,右边是经过制图表达处理后的地图,右图更加接近现实效果。
看了这几张图之后,估计大家已经对制图表达能做到什么效果已经心中有数了。后面的章节会从制图表达的原理、使用、技巧方面进行全面论述。
ArcGIS制图表达Representation-制图表达介绍的更多相关文章
- ArcGIS制图表达Representation实战篇4-自由式制图表达
ArcGIS制图表达Representation实战篇4-自由式制图表达 by 李远祥 上一章节关于制图表达的控制点中已经介绍过制图表达的编辑功能,利用制图表达的编辑功能,可以实现一些规则以外的效果. ...
- ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转
ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转 by 李远祥 上一章节主要是从实战中使用规则和几何效果,如何分解制图规则.本章主要还是通过一些特殊要求如河流线宽渐变和符号 ...
- ArcGIS制图表达Representation实战篇1-边界线和行道树制作
ArcGIS制图表达Representation实战篇1-边界线和行道树制作 by 李远祥 即便是有了一些制图表达的基础,很多人还是对ArcGIS制图表达理解停留在表面,因为没有实际的强化训练是很难体 ...
- ArcGIS制图表达Representation实战篇3-控制点
ArcGIS制图表达Representation实战篇3-控制点 by 李远祥 这一章讲述的是一个非常专业的名词,叫控制点.此控制点非测绘行业术语的控制点,而是制图表达里面的控制点,所以不能混为一谈. ...
- 使用python制作ArcGIS插件(1)工具介绍
使用python制作ArcGIS插件(1)工具介绍 by 李远祥 ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作.相对于以往9.x系列,addin的无论是 ...
- ArcGIS Engine中的重点类库介绍
转自原文ArcGIS Engine中的重点类库介绍 System类库 System类库是ArcGIS体系结构中最底层的类库.System类库包含给构成ArcGIS的其他类库提供服务的组件.System ...
- 如何在ArcGIS中恢复MapGIS制图表达信息
1.输出符号信息 Map2Shp软件中提供了图示表达转换功能,提供对MapGIS图形特征可视表达信息的跨平台支持.若要使用该功能,必须在转换时,"图元参数输出方式"选定为[图元参数 ...
- ArcGIS制图表达Representation-规则和几何效果
ArcGIS制图表达Representation-规则和几何效果 by 李远祥 对制图表达运用是否纯熟,主要是看对制图表达规则的理解和巧妙运用.前面章节已经粗略介绍过制图表达的运用,通过一些简单的规则 ...
- ArcGIS制图表达Representation-制图表达原理
ArcGIS制图表达技术-制图表达原理 by 李远祥 在讲述原理之前,需要对上一章内容进行一些必要的补充说明.既然制图表达有很多优势,是不是什么情况下都可以使用制图表达技术呢?如果有以下的一些特殊的要 ...
随机推荐
- LNMP(Linux+Nginx+Mysql+PHP---源码)环境搭建
LNMP(Linux+Nginx+Mysql+PHP(Perl)) Linux:[root@dep5 mysql]# cat /etc/issueRed Hat Enterprise Linux Se ...
- java类集: collection, list , set, map
都在java.util包里.容器:装各种对象. Collections类 : 集合工具类, 提供了一些静态方法, 方法里的参数是List等. Colection接口,子接口主要有: Set: 内容 ...
- 《SpringMVC数据绑定入门》笔记
基本类型 最好使用封装类型 简单多数据&多层级对象 简单多数据 单个对象,直接使用属性名=值即可 多层级对象 属性.属性=值即可 同属性多对象 WebDataBinder只在当前类中生效,不是 ...
- bzoj 4002: [JLOI2015]有意义的字符串
这个题... #include <bits/stdc++.h> #define rep(i, a, b) for (int i = a; i <= b; i++) #define d ...
- Java-JNA调用DLL(转)
源:JNA调用DLL 介绍 给大家介绍一个最新的访问本机代码的Java框架—JNA. JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的J ...
- linux学习小记:如何查看linux服务器的cpu数量,内核数,和cpu线程数
查看物理cpu个数 grep 'physical id' /proc/cpuinfo | sort -u | wc -l 查看每个cpu核心数量 grep 'core id' /proc/cpuinf ...
- mongodb更新数据
1. 获取当前时间: Calendar.getInstance().getTime(); 2. 更新数据: public void updateProcessLandLog(ProcessLandLo ...
- Hibernate中sessionfactory和session的多线程问题
http://blog.sina.com.cn/s/blog_7ffb8dd5010146i3.html
- java系列--并发
1.Executor 原博:http://blog.csdn.net/linghu_java/article/details/17123057 2.CountDownLatch()方法 浅析Java中 ...
- Nodejs之发送邮件nodemailer
nodejs邮件模块nodemailer的使用说明 1.介绍 nodemailer是node的一个发送邮件的组件,其功能相当强大,普通邮件,传送附件,邮件加密等等都能实现,而且操作也十分方便. nod ...