📄 sample vba code.mht
字号:
<H3>提示</H3>
<UL>
=
<LI>请确定VB中的代码是=
0197;以上步骤中的格式=
986;现。例如,你可能Ƃ=
56;要自己加些回车。 =
</LI></UL>
<P class=3DBreak></P>
<P></P></TD></TR></TBODY></TABLE></DIV>
<DIV class=3Dsubhead id=3DhowSub6><A name=3DhowSub6Anchor></A>
<H3><A onclick=3D"expandIt('howSub6')"=20
href=3D"file:///C:/Documents%20and%20Settings/YAZI/桌面/Dechm=
s/定制ArcMap和ArcCatalog/sample_vba_code.htm#howSub6Anc=
hor"><IMG=20
height=3D11 alt=3D"expand/collapse item"=20
src=3D"file:///C:/Documents%20and%20Settings/YAZI/桌面/Dechms=
/customizing_arcmap_and_arccatalog/small_arrow_up.gif"=20
width=3D11 border=3D0 name=3DimEx></A> =
以两位小数的精度显&=
#31034;鼠标位置</H3></DIV>
<DIV class=3Dsubcontent id=3DhowSub6Content>
<H3>描述</H3>
<P class=3DBreak></P>
<P></P>本例是用户能够看&#=
35265;鼠标所在位置的坐=
6631;,保留两位小数。=20
<P class=3DBreak></P><SPAN =
class=3DBreak>在本例子中,你=
3558;添加一个按钮并为=
427;编写代码。</SPAN>=20
<P class=3DBreak></P>
<P></P>
<H3>How to use</H3>
<P class=3DBreak></P>
<P></P>
<OL>
<LI>启动ArcMap.=20
<P class=3DBreak></P>
<P class=3DBreak></P>
=
<LI>打开一个现存的地Þ=
70;文件(.mxd),或将图&#=
23618;添加到空白的地图=
5991;件。=20
<P class=3DBreak></P>
<LI>=93Tools=94菜单-->=93Customize=94。=20
<P class=3DBreak></P>
<LI>点击=93Commands=94标签。=20
<P class=3DBreak></P>
=
<LI>点击=93Save=94组合框旁的=
9979;箭头,并选择新命=
196;将要保存的地图。=20
<P class=3DBreak></P>
=
<LI>滚动=93类别=94列表框,=
;点击=93UIControls=94。=20
<P class=3DBreak></P>
<LI>点击=93New UIControl=94。=20
<P class=3DBreak></P>
=
<LI>点击UIToolControl作为UIControl的类=
;型。=20
<P class=3DBreak></P>
=
<LI>点击=93创建并编辑=94,=
;打开VB编辑器。=20
<P class=3DBreak></P>
=
<LI>复制以下代码并粘ũ=
48;代码窗口中。=20
<P class=3DBreak></P>
<P></P>
<P></P><PRE class=3Dcode><CODE>Private Sub =
UIToolControl1_MouseDown(ByVal button As Long, ByVal shift As Long, =
ByVal x As Long, ByVal y As Long)
Dim pMxDoc As IMxDocument
Dim pPoint As IPoint
Dim pClone As IClone
Dim pGeometry As IGeometry
Dim pSpatialRefFactory As ISpatialReferenceFactory
Dim pSpatialRef As ISpatialReference
Dim pGeographicCoordSys As IGeographicCoordinateSystem
'Get the point where the user clicked
Set pMxDoc =3D Application.Document
If pMxDoc.CurrentLocation.IsEmpty Then Exit Sub
'Clone the point because we don't want to alter
'the actual document's current location point
Set pClone =3D pMxDoc.CurrentLocation
Set pPoint =3D pClone.Clone
Set pGeometry =3D pPoint 'QI
'Create a new geographic coordinate system to use in the conversion
Set pSpatialRefFactory =3D New SpatialReferenceEnvironment
Set pGeographicCoordSys =3D =
pSpatialRefFactory.CreateGeographicCoordinateSystem(esriSRGeoCS_NAD1983)
Set pSpatialRef =3D pGeographicCoordSys 'QI
pSpatialRef.SetFalseOriginAndUnits -180, -90, 1000000
pGeometry.Project pSpatialRef
MsgBox pPoint.x & ", " & pPoint.y, , "Decimal Degrees"
End Sub</CODE></PRE><BR>
<P class=3DBreak></P>
<P></P>
=
<LI>关闭或最小化VB窗口=
2290;=20
<P class=3DBreak></P>
<LI>在ArcMap中,"Tools"-->"Customize"。=20
<P class=3DBreak></P>
<LI>点击=93Commands=94标签。=20
<P class=3DBreak></P>
=
<LI>点击=93Save=94组合框旁的=
9979;箭头,并选择新命=
196;将要保存的地图。=20
<P class=3DBreak></P>
=
<LI>滚动=93类别=94列表框,=
;点击=93UIControls=94。=20
<P class=3DBreak></P>
=
<LI>将=93Commands=94列表框中新建=
;的=93Project.UIToolControl1=94拖动到任=
847;工具栏上。=20
<P class=3DBreak></P>
<LI>点击"Close"。=20
<P class=3DBreak></P>
=
<LI>点击新建的工具按ż=
62;,并在窗口的任意߮=
1;置点击。 </LI></OL>
<P class=3DBreak></P>
<P></P>
<TABLE cellPadding=3D5 width=3D"85%" border=3D0>
<TBODY>
<TR>
<TD>
<H3>提示</H3>
<UL>
=
<LI>请确定VB中的代码是=
0197;以上步骤中的格式=
986;现。例如,你可能Ƃ=
56;要自己加些回车。 =
</LI></UL>
<P class=3DBreak></P>
<P class=3DBreak></P>
<P></P></TD></TR></TBODY></TABLE></DIV>
<DIV class=3Dsubhead id=3DhowSub7><A name=3DhowSub7Anchor></A>
<H3><A onclick=3D"expandIt('howSub7')"=20
href=3D"file:///C:/Documents%20and%20Settings/YAZI/桌面/Dechm=
s/定制ArcMap和ArcCatalog/sample_vba_code.htm#howSub7Anc=
hor"><IMG=20
height=3D11 alt=3D"expand/collapse item"=20
src=3D"file:///C:/Documents%20and%20Settings/YAZI/桌面/Dechms=
/customizing_arcmap_and_arccatalog/small_arrow_up.gif"=20
width=3D11 border=3D0 name=3DimEx></A> =
在状态栏中显示栅格&=
#20687;元值</H3></DIV>
<DIV class=3Dsubcontent id=3DhowSub7Content>
<P></P>
<H3>描述</H3>
<P class=3DBreak></P>
<P></P>本例显示地图中最&#=
19978;面的栅格图层的像=
0803;值。可以显示单波=
573;或多波段的栅格像Ð=
03;值。这些值是以用৒=
3;在栅格图层上移动鼠=
;标时的指针位置确定=
的。=20
值将在ArcMap窗口的左下=
5282;显示。=20
<P class=3DBreak></P><SPAN =
class=3DBreak>在本例子中,你=
3558;添加一个按钮并为=
427;编写代码。</SPAN>=20
<P class=3DBreak></P>
<P></P>
<H3>如何操作</H3>
<P class=3DBreak></P>
<OL>
<LI>启动ArcMap.=20
<P class=3DBreak></P>
<P class=3DBreak></P>
=
<LI>打开一个现存的地Þ=
70;文件(.mxd),或将图&#=
23618;添加到空白的地图=
5991;件。=20
<P class=3DBreak></P>
<LI>=93Tools=94菜单-->=93Customize=94。=20
<P class=3DBreak></P>
<LI>点击=93Commands=94标签。=20
<P class=3DBreak></P>
=
<LI>点击=93Save=94组合框旁的=
9979;箭头,并选择新命=
196;将要保存的地图。=20
<P class=3DBreak></P>
=
<LI>滚动=93类别=94列表框,=
;点击=93UIControls=94。=20
<P class=3DBreak></P>
<LI>点击=93New UIControl=94。=20
<P class=3DBreak></P>
=
<LI>点击UIToolControl作为UIControl的类=
;型。=20
<P class=3DBreak></P>
<LI>点击=93Create=94。=20
<P class=3DBreak></P>
=
<LI>将=93Commands=94列表框中新建=
;的=93Project.UIToolControl1=94拖动到任=
847;工具栏上。=20
<P class=3DBreak></P>
<LI>点击=93Create=94。=20
<P class=3DBreak></P>
=
<LI>右击刚制作好的按ż=
62;,点击=93View Source=94。=20
<P =
class=3DBreak></P>这样便打开了Visual =
Basic Editor。=20
<P class=3DBreak></P>
=
<LI>在代码窗口中,点Ñ=
87;程序框旁的下三角ᦀ=
8;在窗体的右边),选=
;择=93Click=94。=20
<P =
class=3DBreak></P>这样便为你的过=
;程提供了头尾的代码=
。=20
<P class=3DBreak></P>
=
<LI>复制以下代码并粘ũ=
48;在Click事件过程中。=20
<P class=3DBreak></P>
<P></P><PRE class=3Dcode><CODE>Dim pMxDoc As IMxDocument
Set pMxDoc =3D ThisDocument
Dim pActiveView As IActiveView
Set pActiveView =3D pMxDoc.FocusMap
Dim pPoint As IPoint
Set pPoint =3D =
pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y)
Dim pBlockSize As IPnt
Set pBlockSize =3D New DblPnt
pBlockSize.SetCoords 1#, 1#
Dim pLayer As IRasterLayer
Dim pPixelBlock As IPixelBlock 'number of bands
Dim vValue As Variant
Dim i As Long, j As Long
Dim sPixelVals As String
sPixelVals =3D "No Raster"
Dim pRasterProps As IRasterProps
Dim dXSize As Double, dYSize As Double
Dim pPixel As IPnt
Set pPixel =3D New DblPnt
For i =3D 0 To pMxDoc.FocusMap.LayerCount - 1
If (TypeOf pMxDoc.FocusMap.Layer(i) Is IRasterLayer) Then
Set pLayer =3D pMxDoc.FocusMap.Layer(i) 'if a raster layer then set =
it
Set pPixelBlock =3D pLayer.Raster.CreatePixelBlock(pBlockSize)
Set pRasterProps =3D pLayer.Raster
dXSize =3D pRasterProps.Extent.XMax - pRasterProps.Extent.XMin
dYSize =3D pRasterProps.Extent.YMax - pRasterProps.Extent.YMin
dXSize =3D dXSize / pRasterProps.Width
dYSize =3D dYSize / pRasterProps.Height
pPixel.x =3D (pPoint.x - pRasterProps.Extent.XMin) / dXSize
pPixel.y =3D (pRasterProps.Extent.YMax - pPoint.y) / dYSize
pLayer.Raster.Read pPixel, pPixelBlock
For j =3D 0 To pPixelBlock.Planes - 1
If (sPixelVals =3D "No Raster") Then
sPixelVals =3D "("
Else
sPixelVals =3D sPixelVals & ", "
End If
vValue =3D pPixelBlock.GetVal(j, 0, 0)
sPixelVals =3D sPixelVals & CStr(vValue)
Next j
If (sPixelVals <> "No Raster") Then sPixelVals =3D sPixelVals =
& ")"
ThisDocument.Parent.StatusBar.Message(0) =3D "Raster value =3D " =
& sPixelVals
Exit For
End If
Next i</CODE></PRE><BR>
<P class=3DBreak></P>
<P></P>
<P></P>
<LI>关闭VB编辑器。=20
<P class=3DBreak></P>
=
<LI>点击在ArcMap中新建的控=
;制按钮,并在栅格图=
层上移动鼠标。 </LI></OL>
<P class=3DBreak></P>
<P></P>
<TABLE cellPadding=3D5 width=3D"85%" border=3D0>
<TBODY>
<TR>
<TD>
<H3>提示</H3>
<UL>
=
<LI>请确定VB中的代码是=
0197;以上步骤中的格式=
986;现。例如,你可能Ƃ=
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -