加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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空间站 knight_sl

Option Explicit

Dim dPoint(2, 1) As Double

Sub aaa()

    Call bbb

    Dim aa As IMxDocument

    Set aa = ThisDocument

    Dim pFLyr As IFeatureLayer

    Set pFLyr = aa.FocusMap.Layer(0)

    Dim pFCsr As IFeatureCursor

    Dim pFt As IFeature

    Set pFCsr = pFLyr.FeatureClass.Update(Nothing, False)

    Set pFt = pFCsr.NextFeature

    Dim pPoint As IPoint

    Set pPoint = pFt.ShapeCopy

    Dim pNewPoint As IPoint

    Dim X0 As Double, Y0 As Double

    Dim X As Double, Y As Double

    Dim dAngle As Double

    Dim i As Long

    For i = 0 To UBound(dPoint, 1)

 Set pFt = pFLyr.FeatureClass.CreateFeature

 Set pNewPoint = New Point

 dAngle = dPoint(i, 0) * 3.14159263579893 / 180

     pNewPoint.X = dPoint(i, 1) * Cos(dAngle) + pPoint.X

 pNewPoint.Y = dPoint(i, 1) * Sin(dAngle) + pPoint.Y

 Set pFt.Shape = pNewPoint

 pFt.Store

Next

     Set pFLyr = Nothing

    Set pFCsr = Nothing

    Set pFt = Nothing

    Set pPoint = Nothing

    Set pNewPoint = Nothing

End Sub

Sub bbb()

'定义新加三个点的角度和距离

    dPoint(0, 0) = 10

    dPoint(0, 1) = 150

   

    dPoint(1, 0) = 30

    dPoint(1, 1) = 170

   

    dPoint(2, 0) = 120

    dPoint(2, 1) = 200

   

End Sub

这中方法做起来需要一点编程经验,但是比上面那中一个一个的画的方法要先进多了,可以把所有的点录入同时画出来。

如果你不会VBA编程,请看下面:

这是ArcGIS VBA的程序,运行的方法:

1),运行ArcMap,加载所需图层;

2)Tools菜单/Macros(宏)/Visual Basic Editor(VB编辑器),这样打开VB编辑器

3),双击打开VB编辑器左上工程资源管理器中的Project/ArcMap对象/ThisDocument,把上面的代码粘进去。注意看首行

Option Explicit如果有两行,就删除一行。

4),点击VB编辑器工具栏的运行按钮运行(或菜单 运行/运行子过程),就可以了,再激活ArcMap可以看到发生了什么!

或者还有一种创建宏的方法(不过建议对ArcGIS VBA不大熟的同志不要用这种方法):

1),运行ArcMap,加载所需图层;

2)Tools菜单/Macros(宏)/Macros,这样打开宏编辑器

3),在宏名称中输入aaa,确定后,会打开VB编辑器,将看到有一个aaa的过程,没有实体。你把上面的aaa过程中的代码粘进去,然后在前面加上

Option Explicit(这个别重复了哈)

Dim dPoint(2, 1) As Double

就可以。

4),点击VB编辑器工具栏的运行按钮运行(或菜单 运行/运行子过程),就可以了,再激活ArcMap可以看到发生了什么!

39.这里说道了工具的使用,那么就简单的再介绍下Sketch中的几个工具吧

Sketch construction tools的使用:

Sketch tool:主要是用来创造线和面特征的节点,在你完成了草图之后,ArcMAP就会增加最后的线段,形成矢量图。

Arc tool:这个主要是帮你创造一个弧段的,选中这个工具后,先在弧段起点点一下,然后在弧段高度方向大致位置点一下(这个点是不可见的,只是给你确定弧段的高度),最后在弧段的终点点一下,就形成一条弧段了。

Direction-distance tool:这个主要是从已知某一个方向和某一个距离来确定一个点。首先点一个已知方向的点,这是会有一条线出来,你确定好方向后,再点已知距离的点,这是出来一个圆,确定距离后,直线和圆有交点,这就是你要的点,再上面点一下就ok!

Distance-distance tool:这个和上面的一样的道理,只是它都用距离来确定一个点,也就是两个圆确定你要的点。

Endpoint arc tool:这也是创造弧段用的,与Arc tool 工具不同的是,它是先在弧段的起点点一下,然后在弧段的终点点一下,再点一个点确定弧段的半径。个人认为这个工具要比Arc tool工具更精确些。

Intersection tool:就是利用两条直线确定一个点。很简单一用就会!

Midpoint tool:确定中点的工具,比如马路的中点,你可以先点一边,再点马路另一边,这时马路的中点自动出现了。 (画道路中线太可以试试,不过得是直线道路咯,^_^

Tangent  tool:相切弧段工具,它能够在一条线段上画出一条切线,只有你用其他工具画了线段出来时你才可以用这个工具。

Trace tool: 主要是用来在跟踪已存在的特征,比如一栋房子,你要沿房子外围画一条线(比如围墙),那么你使用这个工具就非常方便,首先开始时你必须按O键,设置下跟踪的间距,如100,其中还有三个角点的方式:mitered是直角 bevelled 是钝角rounded是圆角。(感觉那效果有点像CAD的偏移咯)

40.如何标注多个字段的属性及分子式标注

Propertis/label field /expression

实例:"<und>"& [单位名称]  &"</und>" & VbCrLf & " " & [PARCEL_NO]

</und> 输出分数线  VbCrLf  换行

效果图:

引用GIS空间站 兔八哥文章详解

以前用ArcGIS Label一般也就在图层的Properties里面定义一下Label字体大小和粗细。这两天遇到一个问题,需要在Label中显示多个字段的内容,比如BlockNameCompanyName。其实这个本来不是很难的问题,因为Label中支持VBScript,使用[BlockName] & VbNewLine & [CompanyName]。就可以实现标注中第一行显示BlockName,第二行显示CompanyName.

现在问题出来了,出图时候希望突出BlockName效果,希望加粗显示,而CompanyName使用一般字体。考虑了很长时间终于从ArcGIS帮助中找到了相关的内容,原来LabelVBScript里面支持类似于HtmlVBScript标签,比如加粗就是用<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] )

  Dim nFMLength

  Dim nFZLength

  nFMLength = Len([SHAPE_Area])

  nFZLength = Len([OBJECTID])

  Dim strLeftSpace

  Dim strRightSpace

   strLeftSpace  = ""

    strRightSpace= ""

   If nFMLength > nFZLength Then

    For i=0 To  (nFMLength-nFZLength)/2

      strLeftSpace =strLeftSpace +chr(32)

     strRightSpace =strRightSpace + chr(32)

     Next

  End If

  FindLabel = "<UND>"  &strLeftSpace & [OBJECTID]&strRightSpace& "</UND>"&chr(13)&chr(10)&  [SHAPE_Area]

End Function

41.用点构面

ArcToolBox->Samples->Data Management->Features->Create Features From Text File

点组成面,最重要的是点序的排列,因此对数据的组织有一定的要求。

42.几个常用的VBA代码

ARCGIS属性表中增加需要的字段,并自动赋值

使用方法

1打开属性表,选择计算的字段,右点选择Calculate Values2.选择“是”,进入Field Calculator

2选择Advance选项;

Pre-Logic VBA Script Code编辑框中输入VBA代码;

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啦,右键属性表字段然后直接选择 Caculate Geometry就可以实现比如面积计算,X,Y坐标等的属性赋值了咯。

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(点) 然后在右侧的列表中鼠标右键->New

3)、在弹出的Symbol Property Editor窗体中,进一步选择Marker Symbol的类型,如:Simple Marker SymbolPicture Marker Symbol等等

4)、这个时候就要根据需要开始设计符号的各种属性了,由于不同种类的Marker Symbol有不同的属性,因此,属性也会不尽相同。

5)、另外介绍一个经常需要或比较使用的步骤,我们需要设计的符号可以由ESRI提供的现有符号组合而成,那么我们则需要添加2Symbol Layer,然后进行2Symbol Layer的叠加

6)、分别设置上述2Symbol Layer的中的Symbol的属性,之后确认保存,这样会在Style Manager中看到我们新制作的符号

如图:

 

(注:以上内容转载自ESRI社区 gis27

45.计算属性中相同的字段个数

选择要计算的字段然后右键选择Summarize根据相应的要求设置参数即可实现。功能示意如下图:

46.自动提取面的中点并加点

Arctoolbox->Feature-> Feature to Point

47.合并属性相同的相邻图斑

使用Dissolve

当选择了create multipart feature时,所有具有相同属性的图斑将链接在一起做为一个图斑。

48.提取图斑转折点坐标

如果没有伪节点那么,选中一个线或者面,打开sketch Properties,就可以看到节点坐标。

还有一种方法就是:通过toolbox-datamanagement-feature-FeatureVerticesToPoints得到转折点的图层然后Add XY Coordinates,该点图层的属性表中就包含了XY字段,将其导出,就得到转折点坐标了。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有