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 李远祥 在讲述原理之前,需要对上一章内容进行一些必要的补充说明.既然制图表达有很多优势,是不是什么情况下都可以使用制图表达技术呢?如果有以下的一些特殊的要 ...
随机推荐
- Android之事件分发
网上总结的很详细了,有时间总结下做个笔记
- Unity3d ShaderLab之WorldNormalVector
首先来看看Unity 3d官方文档上对WorldNormalVector的解释: float3 worldNormal; INTERNAL_DATA - will contain world norm ...
- (简单) POJ 1321 棋盘问题,回溯。
Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ...
- jquery toggle 替换的实现
$('#example').click(function(){$("#exampleBox").toggle();}) 改为 $('#example').click(functio ...
- mysql之SQL---存储过程
1.存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用 ...
- Ext实现简单计算器
以下是本人原创,如若转载和使用请注明转载地址.本博客信息切勿用于商业,可以个人使用,若喜欢我的博客,请关注我,谢谢!少帅的博客 使用Ext实现简单计算器,网页版实现 1.页面部分calculator. ...
- CodeForces 626C Block Towers
构造AC的.左右两边都先不用6的倍数,然后哪边数字大那一边往回退一下,然后再比较哪边数字大.......直到结束 #include<cstdio> #include<cstring& ...
- 求两个字符串最大的子字符串C#
此代码由Java改写而来,字符串支持中文格式的. string str1 = "中国ab-15"; string str2 = "中国ab-23"; byte[ ...
- php小知识。
合并数组的2个方式区别 1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖) 2)键 ...
- UVa 543 - Goldbach's Conjecture
题目大意:给一个偶数,判断是否是两个素数的和. 先用sieve方法生成一个素数表,然后再进行判断即可. #include <cstdio> #include <vector> ...