《arcgis的符号单位换算》由会员分享,可在线阅读,更多相关《arcgis的符号单位换算(9页珍藏版)》请在金锄头文库上搜索。
1、GIS 软件中的各种要素的尺寸关系(ZT) (ZT)最近用 ArcGIS,碰到出图中符号和布局要素大小问题,结合自己做 GIS 平台的经验进行总结。对于 ArcGIS 部分,实验不是完全充分,但根据经验来看,应该是这样的。1 对于 GIS 软件,几套不同要素都有尺寸,这些尺寸的单位有区别,之间通过一些关系换算出来1) 地图要素尺寸:地图中的要素都有坐标,坐标有单位,比如米。地图要素打印出来后的尺寸,并不是其坐标单位表示的尺寸,要根据比例尺计算,比如打印 1:1 万比例尺地图,地图上的 100m到图纸上就是 1cm。 2) 布局要素尺寸:软件布局页面设计时使用的布局要素尺寸单位跟打印出来图纸上的
2、尺寸单位是一样的,比如线宽、点距等,都以毫米、厘米之类的为单位。布局页面通常有一个表示纸张尺寸的框,供用户参考,比如用 A4 的纸张进行打印,纸张的尺寸就是29.7*21cm。这两者在软件中都以米、厘米之类的为单位,但打印出来一个要按照比例尺重新计算,一个是无需计算直接输出,是有区别的。3) 地图符号和字体尺寸 计算机屏幕上绘制图形图像,都是以屏幕像素为单位(屏幕像素可看做是电脑屏幕最小的显示单元),因此设置符号尺寸时,常以像素为单位。每个像素最终打印到图纸上的尺寸要根据 ppi(pixels per inch,每英寸多少个点,分辨率)来计算。通常电脑屏幕是96ppi,而 1 英寸=25.4m
3、m,所以每个像素尺寸为1/96*25.4=0.26458 毫米。另外,图纸打印时,用到一个 dpi(dots per inch,也叫分辨率)的概念,跟 ppi 差不多,只不过因为打印机不使用像素为最小单位,而使用点为最小单位。软件中设置一个尺寸为 n 个像素或者点的符号,实际打印出来的尺寸为 n/dpi*25.4 毫米。有的软件支持用像素为单位设置尺寸,有的则支持用点(如在ArcGIS 软件中,其按照 PostScript 的规定,每英寸有 72 个 points,一个点尺寸为 1/72*25.4=0.35278 毫米)。符号显示通常是固定尺寸的,1 个像素尺寸的符号在电脑屏幕上显示的尺寸是
4、0.26458 毫米(按 96ppi 计算)。如果设置一个基准比例尺,并在此基础上按比例缩放符号尺寸,则“当前比例尺/基准比例尺*符号尺寸(计算成毫米后的尺寸)”为屏幕上显示的符号尺寸。在 ArcGIS 中,符号单位不是用像素,而是用点,不知其跟屏幕分辨率如何发生关系。如果把点直接作为像素,则在屏幕上显示的大小,用尺子量出的大小会偏小,1 英寸(72 个点)大的符号应该在屏幕上显示大小为 19.05 毫米(25.4*72/96)。但实际上测试发现在屏幕上显示的大小为 20 毫米多些,所以搞不清楚。符号化的地图打印出来后,符号的尺寸要根据打印的 dpi 计算。如果按照 100dpi 打印图纸,则
5、 1 个像素或点(此时单位是点还是像素没有关系,最终都作为一个点)大小的符号,打印出来的尺寸是1/dpi*25.4 毫米。很多符号是用字体编辑器编辑的,字体编辑器中的尺寸单位是点,这跟 ArcGIS 相同。但实际上在 ArcGIS 用字体做点符号时,可以重新指定符号大小,估计是把字体整体大小缩放到跟该符号大小相同了吧。2 如何在 ArcGIS 中为打印进行配图和布局设计1) ArcGIS 配置符号的时候,指定尺寸时都可以指定单位,虽然其实质还是转换成 point 为单位存起来,但可以方便我们设置要打印出来的符号大小。比如设置符号大小 1 英寸,且地图没有设置符号随比例缩放,则该符号打印出来就是
6、 1 英寸。2) 如果用 point 为单位设置符号大小,要注意 72points=1inch,即 1point=0.35278mm,或者 1mm=2.8346point。比如我们要设置一个打印出来为 2mm 的一个符号,在 ArcGIS 中设置其大小为2.8346*2=5.6693 个 point。3) ArcGIS 的布局要素,很多都只能指定点为单位的尺寸,跟符号一样,为了保证其输出毫米或厘米为单位的尺寸,要基于上面的换算关系计算出要多少个 point。3 地图矢量化的精度问题对于地形图,国家的规定都是针对打印出来的图纸进行规定的。比如 1:1 万比例尺的地形图,在 数字地形图系列和基本要
7、求GBT18315-2001中规定地物点平面中误差是不能超过 0.5 毫米,乘以 10000,也就是地物点误差不超过 5 米。地形图扫描后的象元尺寸跟扫描分辨率有关,如扫描时指定用100dpi,则图纸上每 0.254 毫米会被扫描成一个像素(100dpi 表示每英寸有 100 个像素,也就是每个像素 1/100*25.4=0.254 毫米)。如果扫描矢量化后还要再打印出来,就又要注意打印的分辨率。如果 1:1 万地形图,100 分辨率扫描,而矢量化时人工误差达到一个象元,再按照 100 分辨率打印,则打印出来的地形图矢量化误差为 0.254 毫米,如果按照 200 分辨率打印,则误差达到 0.
8、508 毫米。而很多规范要求相对于工作底图,矢量化后的扫描点位误差不大于 0.15mm,线划误差不大于 0.2mm。所以我们应该提高扫描分辨率,此时每个象元达标的尺寸要小些,矢量化时的精度可以提高。按地图单位定义符号大小符号化大家都司空见惯了,但你有没有想过玩出点新花样儿来,比如“根据当前地图比例尺和地图单位来定义符号大小,使符号的大小与实际距离或面积相匹配” ,无独有偶最近还真就有人这么做了,我们一起看看如何实现的: 首先再来分析问题:通常情况下对同一类要素的不同符号化需要配置不同的 Layer 文件,尽管这种 Layer 很小很灵活,但还是增加了一个新图层,为什么我们不能在同一 Layer
9、里根据实际地图单位设置符号大小呢?这里有两种可能情况:1.使用相同符号(Single Symbol) ;2.使用不同符号(Multiple Symbol ) 。其次针对两种情况给出对应的解决方法:1. 使用相同符号(Single Symbol)使用相同符号比较简单,主要是依靠按数量符号化中的 Proportional Symbol,选择你要用来控制符号大小的属性字段,参数中的单位需要根据你的符号大小属性字段值单位来设置,这里用的是米。应用修改后,地图中显示的符号大小就是由大小字段重新绘制了,我们也可以用测量工具来验证一下结果的正确性。2. 使用不同符号(Multiple Symbol)在 Ar
10、cGIS 10 中,需要使用表达式和描述符号大小的属性字段共同完成,首先在表达式里使用预先定义好的公式把地图单位转换成点的像素大小,以下是转换公式和 2 个例子(72 像素每英寸):公式:size in points = RF * ground width * ground width conversion to inches * 72 pt./in.例 1 1:24000 比例尺,单位英尺 :点的大小 = 1/24000 * width (ft.) * 12 in./ft. * 72 pt./in.例 2 1:50000 比例尺,单位米 :点的大小 = 1/50000 * width (m.) * 100 cm./m. * 1/2.54 in./cm. * 72 pt./in.在属性表中有字段记录符号的半径,单位是当前地图单位,下面的例子中对应canopy字段,指树冠直径,单位为英尺。选择“符号化”-“分类” - “唯一值” ,用树种数据来符号化,同时打开 “高级”-“大小”选项。选择“Size Points by Value in this”,构建表达式,这里需要注意的是因为符号渲染的参数是半径值,所以要把直径字段CANOPY_DIAM的值除以 2。确定后,要素的符号就以实际大小来设置了,同样的我们可以用测量工具来检查结果是否正确,要注意单位要相同,都是英尺。