默认头像
路人甲
路人甲
  • 注册日期2009-03-23
  • 发帖数12
  • QQ357750979
  • 铜币142枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:3769回复:8

[原创]个人开发经验总结

楼主#
更多 发布于:2009-12-29 15:26

从大学毕业一年半了,到这个单位工作从大三实习开始也两年多了,参与了国家的4个项目,也同时制作了很多数据生产工具,我自己觉得还是有些收获和成长,年底项目收尾没什么事情做,就依据开发帮助文档中的例子和代码,在我个人的理解上,并以一个中国人的思维方式,总结了一些经验吧。

可能高手觉得也就是这么一回事儿,不过我想对于一些新手来说,还是有一定的帮助,希望大家喜欢。

从2楼开始逐步更新,一楼用作目录吧就

喜欢0 评分0
我要用自己的双足走在自己的双手铺设的轨道上!
默认头像
路人甲
路人甲
  • 注册日期2006-01-31
  • 发帖数11
  • QQ
  • 铜币201枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2010-07-24 21:39
受教了
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2008-02-18
  • 发帖数3
  • QQ
  • 铜币107枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2010-03-23 15:11
不错
举报 回复(0) 喜欢(0)     评分
默认头像
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
3楼#
发布于:2010-01-08 21:49

不错的东西,对于初学者还是非常有帮助的

支持楼主继续更新

GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
默认头像
外卖仔
外卖仔
  • 注册日期2004-03-05
  • 发帖数52
  • QQ29172636
  • 铜币278枚
  • 威望4点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2010-01-07 08:52

还是不懂 啊  有点晕 呵呵

举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2009-03-23
  • 发帖数12
  • QQ357750979
  • 铜币142枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2009-12-29 15:31

4.      关于IPointArray接口(esriGeometry

IPointArray接口的第一个方法Add(p)(方法,向该类型的数组变量添加Point

IPointArray接口的第二个属性Count(只读,获得该数组变量中Point的个数,返回Long类型变量)

IPointArray接口的第三个属性Element(Index)(只读,获得该数组变量中位于参数Index索引位置的点Point,返回一个Point类型的变量)

IPointArray接口的第四个方法Insert (Index, p )(方法,向索引位置Index插入一个点Point

IPointArray接口的第五个方法Remove (Index )(方法,移除索引位置Index的点Point

IPointArray接口的第六个方法RemoveAll(方法,移除所有在此数组中的点)
我要用自己的双足走在自己的双手铺设的轨道上!
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2009-03-23
  • 发帖数12
  • QQ357750979
  • 铜币142枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2009-12-29 15:31

3.      关于IPoint接口(esriGeometry

IPoint接口的第一个方法PutCoords(X,Y)(方法,设置该点的坐标)或者直接调用可以读写的属性XY,将坐标赋值给XY

例子代码:

Dim pPoint As IPoint

Set pPoint = New Point

pPoint.PutCoords 100, 100

IPoint接口的第二个方法QueryCoords(X,Y)(方法,得到该点的坐标)

例子代码:

Dim pPoint as IPoint

Dim dX as Double, dY as Double

pPoint.QueryCoords dX, dY

IPoint接口的第三个方法ConstrainAngle (constraintAngle, anchor, allowOpposite )(方法,如果第三个参数allowOppositeTrue,则将第二个参数anchor这个点作为一个原点,然后以第一个参数constraintAngle为与x轴的角度,做一条直线,再将调用此参数的点向该直线做垂线并交于一个新点,并将调用此方法的点移动到该点)

例子代码:

'Finds the closes point to line from (0,0) with angles

'defined by steps of pi/4 (Note all angles in radians)

  Dim pApoint As IPoint

  Dim pNpoint As IPoint

  Dim pi As Double

  Dim dAngle As Double

  Dim i As Long

 

  Set pApoint = New Point

  pi = 4 * Atn(1)

  dAngle = 0

  pApoint.PutCoords 0, 0

 

  Set pNpoint = New Point

 

  For i = 0 To 7

    pNpoint.PutCoords 1, 0

    dAngle = i * pi / 4

    pNpoint.ConstrainAngle dAngle, pApoint, True

    MsgBox "angle = " ; i ; "*pi/4" ; vbCrLf ; pNpoint.X ; "," ; pNpoint.Y

  Next i

IPoint接口的第四个方法ConstrainDistance (constraintRadius, anchor )(方法,以第二个参数anchor这个点为圆心,然后以第一个参数constraintRadius为半径做一个圆,将调用此参数的点移动到该点与圆心做线段交于该圆的交点上)

例子代码:

Public Sub t_constraindistance()

  Dim pPoint As IPoint

  Dim pNPoint As IPoint

  Dim dRadius As Double

 

  Set pPoint = New Point

  pPoint.PutCoords 0, 0

  Set pNPoint = New Point

  pNPoint.PutCoords 2, 2

  dRadius = 1.4142135623731

 

  pNPoint.ConstrainDistance dRadius, pPoint

  MsgBox "Radius = " ; dRadius ; " x,y = " ; pNPoint.X ; "," ; pNPoint.Y

End Sub
我要用自己的双足走在自己的双手铺设的轨道上!
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2009-03-23
  • 发帖数12
  • QQ357750979
  • 铜币142枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2009-12-29 15:28

2.      关于IFields接口(esriGeoDatabase

IFields接口的第一个属性Field(Index) (只读,以用于获取具体的字段,返回类型为IField

IFields接口的第二个属性FieldCount(只读,以用于获取属性的数量)

利用上面两个接口并用索引去依次循环获得每一列的属性pFieldIfield接口)

例子代码:

Dim i As Long

Dim pField As IField

For i = 0 To (pFields.FieldCount - 1)

    Set pField = pFields.Field(i)

    Debug.Print pField.Name ; ": " ; pField.Type

Next i

IFields接口的第三个方法FindField(Name)(方法,输入想要查找的属性域字段的名称,如果有,则返回该属性域字段在此Fields的索引,没有则返回-1

例子代码:

Dim i As Integer

Dim pFields As IFields

Dim pField As IField

'Get Fields

Set pFields = pFeatClass.Fields

'Find the field named "average_income"

i = pFields.FindField("average_income")

'Set the current field

Set pField = pFields.Field(i)

'Delete field from featureclass

pFeatClass.DeleteField pField

IFields接口的第四个方法FindFieldByAliasName(Name)(方法,与第三个方法类似,此时输入的为该列属性字段的别名,此方法不经常用)

例子代码:

Dim i As Integer

Dim pFields As IFields

Dim pField As IField

'Get Fields

Set pFields = pFeatClass.Fields 

'Find the field with the aliasname "current population"

i = pFields.FindFieldByAliasName("current population")

'Set the current field

Set pField = pFields.Field(i)

'Delete field from featureclass

pFeatClass.DeleteField pField
我要用自己的双足走在自己的双手铺设的轨道上!
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2009-03-23
  • 发帖数12
  • QQ357750979
  • 铜币142枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2009-12-29 15:27

1.      关于IField接口(esriGeoDatabase

IField接口的第一个属性AliasName(只读,获得字段的别名)

IField接口的第二个方法CheckValueValue)(方法,对于指定的属性字段,基于字段类型判断参数值是否有效,有效,则返回True,否则返回False

例子代码:

'Get Field

Set pField = pFields.Field(6)  

bChkField = pField.CheckValue(45.86)  

If bChkField = True Then

'Add data to selected rows for the field selected.

End If

IField接口的其他属性均为只读属性,常用有Name(只读,获得字段的名称)

例子代码:

Dim pFields As IFields

Dim pField As IField

Dim pGeoDef As IGeometryDef

Dim pDomain As IDomain

Dim i As Long

Set pFields = pFeatClass.Fields

For i = 0 To pFields.FieldCount - 1

 Set pField = pFields.Field(i)

 If pField.Type = esriFieldTypeGeometry Then

   Set pGeoDef = pField.GeometryDef

 Else

   Debug.Print pField.AliasName

   Debug.Print pField.DefaultValue

   Set pDomain = pField.Domain

   Debug.Print pField.Editable

   Debug.Print pField.IsNullable

   Debug.Print pField.Length

   Debug.Print pField.Name

   Debug.Print pField.Precision

   Debug.Print pField.Required

   Debug.Print pField.Scale

   Debug.Print pField.Type

   Debug.Print pField.VarType

 End If

Next
我要用自己的双足走在自己的双手铺设的轨道上!
举报 回复(0) 喜欢(0)     评分
默认头像

返回顶部