ArcGIS编辑操作的常用快捷键一览表(二)
(2011-11-13 18:15:25)
标签:
杂谈 |
38.如何根据确定的点画出以他相应的点
例如:我在地图上已经指导了一个一直点,而其他的点在地图上都是以他为中心画出来的。学校 SE60度,140米 意思是学校在中心点南偏东60度,距离是140米,这样的点在arcmap中怎么加呢?我的方法有二分别如下。
1).
确定已有一个点图层,其中有学校,然后:
对该图层开始编辑
选择工具栏editor---direction-distance tool
以中心点为中心,先画角度线(arcmap左下角会有角度提示),再画距离/半径(注:画的过程中点击A键可以输入角度值,点击D键可以输入距离值)
确定,即可
如果找不到direction-distance
tool
Direction-distance tool is here
第二种方法就是直接编写代码实现
下面是一段示例的VBA代码(本段代码作者:GIS空间站
Option Explicit
Dim dPoint(2, 1) As Double
Sub aaa()
Next
End Sub
Sub bbb()
'定义新加三个点的角度和距离
End Sub
这中方法做起来需要一点编程经验,但是比上面那中一个一个的画的方法要先进多了,可以把所有的点录入同时画出来。
如果你不会VBA编程,请看下面:
这是ArcGIS VBA的程序,运行的方法:
1),运行ArcMap,加载所需图层;
2),Tools菜单/Macros(宏)/Visual Basic Editor(VB编辑器),这样打开VB编辑器
3),双击打开VB编辑器左上工程资源管理器中的Project/ArcMap对象/ThisDocument,把上面的代码粘进去。注意看首行
Option Explicit如果有两行,就删除一行。
4),点击VB编辑器工具栏的运行按钮运行(或菜单
或者还有一种创建宏的方法(不过建议对ArcGIS VBA不大熟的同志不要用这种方法):
1),运行ArcMap,加载所需图层;
2),Tools菜单/Macros(宏)/Macros,这样打开宏编辑器
3),在宏名称中输入aaa,确定后,会打开VB编辑器,将看到有一个aaa的过程,没有实体。你把上面的aaa过程中的代码粘进去,然后在前面加上
Option Explicit(这个别重复了哈)
Dim dPoint(2, 1) As Double
就可以。
4),点击VB编辑器工具栏的运行按钮运行(或菜单
39.这里说道了工具的使用,那么就简单的再介绍下Sketch中的几个工具吧
Sketch construction tools的使用:
Sketch tool:主要是用来创造线和面特征的节点,在你完成了草图之后,ArcMAP就会增加最后的线段,形成矢量图。
Arc tool:这个主要是帮你创造一个弧段的,选中这个工具后,先在弧段起点点一下,然后在弧段高度方向大致位置点一下(这个点是不可见的,只是给你确定弧段的高度),最后在弧段的终点点一下,就形成一条弧段了。
Direction-distance tool:这个主要是从已知某一个方向和某一个距离来确定一个点。首先点一个已知方向的点,这是会有一条线出来,你确定好方向后,再点已知距离的点,这是出来一个圆,确定距离后,直线和圆有交点,这就是你要的点,再上面点一下就ok!
Distance-distance tool:这个和上面的一样的道理,只是它都用距离来确定一个点,也就是两个圆确定你要的点。
Endpoint arc tool:这也是创造弧段用的,与Arc
tool
Intersection tool:就是利用两条直线确定一个点。很简单一用就会!
Midpoint tool:确定中点的工具,比如马路的中点,你可以先点一边,再点马路另一边,这时马路的中点自动出现了。
Tangent
Trace
tool:
40.如何标注多个字段的属性及分子式标注
Propertis/label field /expression
实例:"<und>"&
[单位名称]
</und>
效果图:
引用GIS空间站
以前用ArcGIS Label一般也就在图层的Properties里面定义一下Label字体大小和粗细。这两天遇到一个问题,需要在Label中显示多个字段的内容,比如BlockName和CompanyName。其实这个本来不是很难的问题,因为Label中支持VBScript,使用[BlockName] & VbNewLine & [CompanyName]。就可以实现标注中第一行显示BlockName,第二行显示CompanyName.
现在问题出来了,出图时候希望突出BlockName效果,希望加粗显示,而CompanyName使用一般字体。考虑了很长时间终于从ArcGIS帮助中找到了相关的内容,原来Label的VBScript里面支持类似于Html的VBScript标签,比如加粗就是用<BOL>,上面问题就可以使用下面语句解决:
"<BOL>" & [BlockName] & "</BOL>" & VbNewLine & [CompanyName]
除了加粗,ArcGIS中还支持下面的文本格式标签:
Font:
"<FNT name='Arial' size='18'>" & [LABELFIELD] & "</FNT>"
Color:
"<CLR red='255' green='255' blue='255'>" & [LABELFIELD] & "</CLR>"
"<CLR cyan='100' magenta ='100' yellow='100' black='100'>" & [LABELFIELD] & "</CLR>"
Bold:
"<BOL>" & [LABELFIELD] & "</BOL>"
Italic:
"<ITA>" & [LABELFIELD] & "</ITA>"
Underline:
"<UND>" & [LABELFIELD] & "</UND>"
All caps:
"<ACP>" & [LABELFIELD] & "</ACP>"
Small caps:
"<SCP>" & [LABELFIELD] & "</SCP>"
Superscript
"<SUP>" & [LABELFIELD] & "</SUP>"
Subscript:
"<SUB>" & [LABELFIELD] & "</SUB>"
Character spacing (%):
"<CHR spacing='25'>" & [LABELFIELD] & "</CHR>"
Word spacing (%):
"<WRD spacing='150'>" & [LABELFIELD] & "</WRD>"
Leading (pts):
"<LIN leading='12'>" & [LABELFIELD] & "</LIN
需要注意的是,使用这些标签后,生成的Label语句在Verify按钮中是不生效的,只对最终的显示结果生效。
其实问题还没有最终解决,使用VbNewLine生成的显示结果,上下两行缺省时居中对齐,现在希望它们左对齐显示,还没找到办法。还有一个问题,就是ArcGIS中对点的Label可以选择Label的位置,而对面没有,缺省是放置在中间,现在希望放置在左上角,还没有找到该怎么办。
下面是一个VBS的代码可以试试。
Function FindLabel ( [OBJECTID], [SHAPE_Area] )
End Function
41.用点构面
ArcToolBox->Samples->Data Management->Features->Create Features From Text File
点组成面,最重要的是点序的排列,因此对数据的组织有一定的要求。
42.几个常用的VBA代码
在ARCGIS属性表中增加需要的字段,并自动赋值
使用方法
1打开属性表,选择计算的字段,右点选择Calculate Values;2.选择“是”,进入Field Calculator;
2选择Advance选项;
3
4在下面编辑框中输入赋值部分.
1--点坐标X
VBA部分:
Dim pGeo As IGeometry
Set pGeo = [Shape]
Dim pPoint As IPoint
Set pPoint = pGeo
赋值部分:
pPoint.X
2--点坐标Y
VBA部分:
同上
赋值部分:
pPoint.Y
坐标值为文件存储的固有值,和是否使用On the Fly坐标表示无关。返回当前显示的坐标值参看8,9
3--多边形周长
VBA部分:
Dim pGeo As IGeometry
Set pGeo = [Shape]
Dim pPolygon As IPolygon
Set pPolygon = pGeo
赋值部分:
pPolygon.Length
4--多边形面积
VBA部分:
Dim pGeo As IGeometry
Set pGeo = [Shape]
Dim pPolygon As IPolygon
Set pPolygon = pGeo
Dim pArea As IArea
Set pArea = pPolygon
赋值部分:
pArea.Area
5--多边形重心X
VBA部分:
Dim pGeo As IGeometry
Set pGeo = [Shape]
Dim pPolygon As IPolygon
Set pPolygon = pGeo
Dim pArea As IArea
Set pArea = pPolygon
Dim pPoint As IPoint
Set pPoint = pArea.Centroid
赋值部分:
pPoint.X
6--多边形重心Y
VBA部分:
同上
赋值部分:
pPoint.Y
7--Polyline长度
VBA部分:
Dim pGeo As IGeometry
Set pGeo = [Shape]
Dim pPolyline As IPolyline
Set pPolyline = pGeo
Dim pCurve As IPolycurve
Set pCurve = pPolyline
赋值部分:
pCurve.Length
8--表示点坐标X
VBA部分:
Dim pDoc As IMxDocument
Set pDoc = ThisDocument
Dim pSpRef As ISpatialReference
Set pSpRef = pDoc.FocusMap.SpatialReference
Dim pClone As IClone
Set pClone = [Shape]
Dim pGeo As IGeometry
Set pGeo = pClone.Clone
Dim pPoint as IPoint
Set pPoint = pGeo
pGeo.Project pSpRef
赋值部分:
pPoint.X
9--表示点坐标Y
VBA部分:
同上
赋值部分:
pPoint.Y
坐标值为On the Fly显示的坐标,不是文件存储的固有坐标
10--连续编号
VBA部分:
Static lCount as long
lCount=lCount+1
赋值部分:
lCount (从1开始)
lCount-1 (从0开始)
计算面的中点
Dim Output As Double
Dim pArea As IArea
Set pArea = [Shape]
Output = pArea.Centroid.X(或y)
当然这是很老的方法了,现在arcgis9.2以后都不需要用VBA啦,右键属性表字段然后直接选择
43.
(注:要实现这种渲染需要两段具有不同的属性)
44.自己做arcMAP的图例
在Symbol property Editor中进行制作了
1)、先在Style Manager中的左侧列表中,选择相应的Style文件,ArcGIS默认的符号库文件是ESRI.Style文件,当然也给出了C:\Documents and Settings\........................................目录下用于用户自定义的Style文件
2)、展开Style文件,选择要创建Symbol的类型,如:Fill Symbol(面填充)、Line Symbol(线)、Marker Symbol(点)
3)、在弹出的Symbol Property Editor窗体中,进一步选择Marker Symbol的类型,如:Simple Marker Symbol、Picture Marker Symbol等等
4)、这个时候就要根据需要开始设计符号的各种属性了,由于不同种类的Marker Symbol有不同的属性,因此,属性也会不尽相同。
5)、另外介绍一个经常需要或比较使用的步骤,我们需要设计的符号可以由ESRI提供的现有符号组合而成,那么我们则需要添加2个Symbol Layer,然后进行2个Symbol Layer的叠加
6)、分别设置上述2个Symbol Layer的中的Symbol的属性,之后确认保存,这样会在Style Manager中看到我们新制作的符号
如图:
(注:以上内容转载自ESRI社区
45.计算属性中相同的字段个数
选择要计算的字段然后右键选择Summarize根据相应的要求设置参数即可实现。功能示意如下图:
46.自动提取面的中点并加点
Arctoolbox->Feature-> Feature to Point
47.合并属性相同的相邻图斑
使用Dissolve
当选择了create multipart feature时,所有具有相同属性的图斑将链接在一起做为一个图斑。
48.提取图斑转折点坐标
如果没有伪节点那么,选中一个线或者面,打开sketch Properties,就可以看到节点坐标。
还有一种方法就是:通过toolbox-datamanagement-feature-FeatureVerticesToPoints得到转折点的图层然后Add XY Coordinates,该点图层的属性表中就包含了X,Y字段,将其导出,就得到转折点坐标了。