个人学习笔记,仅供学习交流。
参考书籍:《ArcGIS从0到1》
地图制作是数据可视化和表达输出的过程,利用ArcGIS可以制作精美的地图。
注意: 当一个面层有重叠面时,数据时按记录先后顺序显示的。当有一大一小的面重叠时,如果大面在后,小面在前,两个面都会显示正确,但是当大面在前,小面在后时,小面就会被大面遮挡,这是需要利用工具箱中的【排序】工具,更具面的大小关系进行排序,已达到正确的显示目的。
选择【分级色彩】,字段选择【SQKM】,此字段只支持整型,浮点型。面积越大,颜色越深
>
添加该字段,双击更改配色,更改背景颜色。tip
添加柱状图后,背景颜色只能为单一值,我们可以再次导入该数据,更改其色彩分级,达到我们的目的。
匹配符号就是自己手上有一套设定好的色彩分类系统,我们要匹配到地图中,选择【与样式中的符号匹配】,选择相应的【值字段】,【浏览】导入样式文件,【匹配符号】
查看符号样式
DOM.tif
数据,设置DLTB图层属性,填充颜色为透明,轮廓颜色设置为红色。可以看到矢量数据是根据影像图边界勾画出来的,我们可以借此验证影像地物与矢量数据边界是否一致。同上选择【线符号】,根据需求更改属性制作相应的线符号。
同上选择【填充符号】,根据需求更改属性制作相应的填充符号。
ArcMAP文档是MXD文件,一个文档中可以保存一个或多个数据狂,一个数据框包含几个图层,每个图层可以对渣u难题符号、标注、比例尺和显示范围等信息进行保存。MXD文件其实保存的是每个数据的链接,为了文件管理方便,要求这些数据放在同一个文件夹内,并且保存的时候数据都要以相对路径保存。
为了保险起见,可以在ArcMAP中设置以后所有的MXD文档都以相对路径进行保存,这样就避免了每次设置MXD文档属性,同时也避免了使用绝对路径带来的数据丢失问题。
上面问什么要多次强调一定要保存相对路径
呢,是因为我们在分享数据时,由于别人的路径和你数据文件在你计算机储存的绝对路径不同,所以别人打不开。再次强调,Mxd文档储存的是数据的链接,所以在拷贝数据是必须将文档和数据同时拷贝才能分享出去。
为了保险起见,还可以将数据打包进行分享,步骤如下。
.zip
或者.rar
然后使用解压缩工具进行解压。v10
表示的是ArcGIS10.x
版本文档,v108
表示的是ArcGIS10.8
版本文件像高德地图、百度地图这样的地图APP中,数据一般是以切片形式展示的,在不同的比例尺下,显示的内容也有差别。
.tpk
的切片包,更改其后缀名,解压即可。另一种方式
倘若我们有一个切片方案,可以按照下面操作进行切片操作。
.tpk
的切片包,更改其后缀名,解压即可。MXD文档使用一段后,会遇到下面几个问题
优化方案
将MXD文档另存为新的文档,生成新的文档后会自动优化
在windows开始菜单中,运行Arc Document Defragmenter
进行碎片化整理
MXD Doctor
,有严重问题时,可以诊断并修复这个文档ArcGIS中地图信息有两种表达方式:标注和注记
标注
标注用于显示地图要素图层的属性字段内容,标注是动态的,即每次重绘地图时(平移和缩放地图时)都会重新计算标注显示。
标注的特点
注记
注记存放在地理数据库中,Shp文件不支持注记。与其他要素类一样,主机要素类中的所有要素均具有地理位置和属性,可以位于要素数据集内或独立的要素类内。每个文本注记要素都具有符号系统,其中包括字体、大小、颜色以及其他任何文本符号属性。注记通常为文本,但也有可能包括其他类型符号系统的图形形状(如方框或箭头)
注记的特点
注记用于地图打印,而标注不会被打印出来
图层一定先标注,先设置转换注记的参考比例尺,参考比例尺的设置有两种
如果两种方式都设置,系统默认采用第二种方式,建议直接使用第二种方式来设置参考比例尺。
在注记选项卡内勾选【标注此图层中的要素】,方法选择【定义要素类并且为每个类加不同的标注】,类型选择【默认】,标注字段选择【乡镇】,点击【SQL查询】,输入以下内容。
"FID<=2"
点击【添加】按钮,类的名字设置成“大于2”,SQL查询输入以下内容
"FID>2"
打开标注工具条,查看未放置的标注,发现有很多红色没有被标注。
(记得勾选标注此图层)
在标注设置页面点击【标注表达式】,勾选【高级】,输入以下【表达式】解析程序为python。
def FindLabel([DKBM]):
return [DKBM][0:5]
打开属性表,加入一个字段a,字符计算器中输入下面表达式计算a的数值。
round([SHAPE_AREA]*3/2000,1)
分式标注,顾名思义就是用分号的形式进行标注。
普通二分式标注
在标注表达式下输入以下格式的代码(vbscript),即可实现普通的二分标注
"" &[分子字段]&""&vbcrlf&[分母字段];
换行符有一下三种方式
vbcrlf
vbnewline
chr(13)&chr(10)
python格式代码如下
"" +[分子字段]+""+"\n"+"分母字段"
高级二分式标注
上面的表达式已经实现了分式表达,但是有个缺点,就是分割线的长度默认是分子字段的宽度,更优化的表示应该是,分式线区分子字段长度和分母字段长度的最大值,如下图所示。
在表达式框里输入以下代码即可实现
'----------FUNCTION STRLEN(STR)----------
FUNCTION strlen(str)
dim p_len
p_len=0
strlen=0
p_len=len(str)
FOR xx=1 to p_len
IF asc(mid(str,xx,1))<0 then
strlen=int(strlen) + 2
ELSE
strlen=int(strlen) + 1
END if
NEXT
END function
FUNCTION myFind ( DZM, NAME )
a=strlen(dzm)
b=strlen(NAME)
IF a>b then
myFind ="" & DZM & "" & vbnewline & NAME
ELSE
str= space((b-a)/2)
myFind ="" & str & DZM & str & "" & vbnewline & NAME
END if
END Function
Function FindLabel ( [DLBM],[DLMC] )
FindLabel =myFind([DLBM],[DLMC])
End Function
高级二分式三字段标注
分子或者分母可不可以有多个字段呢,答案是肯定的
实现代码如下
'----------FUNCTION STRLEN(STR)----------
FUNCTION strlen(str)
dim p_len
p_len=0
strlen=0
p_len=len(str)
FOR xx=1 to p_len
IF asc(mid(str,xx,1))<0 then
strlen=int(strlen) + 2
ELSE
strlen=int(strlen) + 1
END if
NEXT
END function
FUNCTION myFind ( DZM, NAME )
a=strlen(dzm)
b=strlen(NAME)
IF a>b then
myFind ="" & DZM & "" & vbnewline & NAME
ELSE
str= space((b-a)/2)
myFind ="" & str & DZM & str & "" & vbnewline & NAME
END if
END Function
' 修改这里
Function FindLabel ( [DLBM],[DLMC],[shape_area] )
FindLabel =myFind([DLBM] & "面积:"& round([shape_area]*3/2000,1) &"亩",[DLMC])
End Function
当然还有其他的分式标注,比如三分式。
实现代码如下。
'----------FUNCTION STRLEN(STR)----------
FUNCTION strlen(str)
dim p_len
p_len=0
strlen=0
p_len=len(str)
FOR xx=1 to p_len
IF asc(mid(str,xx,1))<0 then
strlen=int(strlen) + 2
ELSE
strlen=int(strlen) + 1
END if
NEXT
END function
FUNCTION myFind(cunname,DJH,SHAPE_Area )
dim str
str=SHAPE_Area
dim d
d=strlen(str)
dim d1
dim d2
d1=strlen(cunname) /2
d2=strlen(DJH) /2
if d2>d1 then
d1=d2
end if
myFind = cunname & space(d) & vbnewline & string(d1,"—") & str & vbnewline & DJH & space(d)
END Function
'修改这里
Function FindLabel([DLBM],[DLMC], [shape_area] )
FindLabel = myFind([DLBM],[DLMC],Round([shape_area]*3/2000,1) & "亩" )
End Function
等高线是地形图上高程相等的相邻个点所连成的闭合曲线。
【等值线注记】生成的结果是注记,一定要放在地理数据库中。
可以看到下图标注压到了线要素,怎么修改呢?