中国地图
GIS探索者
地图网
GIS论坛
网站首页| GIS论坛 |新闻动态 | 技术专栏 | GIS书籍 | 资源下载 | 求职招聘 | 研究生考试 | GIS博客 | GIS空间站
欢迎光临GIS空间站!   网站地图
  专栏导航:| ArcGIS | MapInfo | TopMap | 地理信息 | 遥感 | GPS | 测绘 | WebGIS | LBS | 前沿 | 数据库 | 开发 | 行业应用
  推荐栏目:| AO开发 | 业界动态 | GIS资源 | 招聘信息 | 求职简历 | 共享软件 | 电子书籍 | 研究生考题 | 电子期刊 | GIS论文
您现在的位置: GIS空间站 >> 技术专栏 >> ArcGIS >> AO开发 >> 文章正文

对于multipoint型的shp文件加新记录的方法

作者:gisboy    文章来源:http://www.gissky.net/blog/blog.asp?name=gisboy    点击数:    更新时间:2006-7-1
 
 最近利用mo做简单开发.利用mo添加新的图形对象.呵呵.虽说mo的编辑功能不强但至少要加图形对象是没问题.其实看mo的帮助\看book也很快实现了加新点\线\面.基本代码如下:
Dim recs As MapObjects2.Recordset
Dim Layer As MapObjects2.MapLayer
Dim P1 As MapObjects2.Point
'下面的代码要写到鼠标的mousedown事件里
If recs.Updatable Then
      With Layer.Records
        .AddNew
        .Fields("Shape").Value = P1'添加新特征     
       '其他字段信息可以在这里写上
        .Update
        .StopEditing
      End With
      Map1.Refresh
Else
      MsgBox "图层不可编辑"
End If
上述代码在画线\画点\画线是通用的.关键是.Fields("Shape").Value = P1
如果是点状对象,你就要把p1定义为点对象,如果是面状的,自然要定义为面对象(dim layer as mapobject2.line),定义现状对象方法类推.
后来发现,shp文件有多点这一种类型.(所谓多点,按我的理解图上多个点可以是一个记录)我用上述代码,就是怎么也成功不了.只能空加上个记录,而无法加上图形.(比如图上三个点,属性也有三条记录.执行上述程序,属性上是4条而图上仍然是3个点)如果说mo中point对象对应Shape 文件中的point要素类型.那么Shape 文件中的要素类型MultiPoint 对应MO中的哪个对象呢??后来发现紧接mapobjec2.point还有一个mapobjec2.points.感觉有门!后来证实Shape 文件中的要素类型MultiPoint 的确对应MO中的Points对象.这样对于加多点上述程序就写成了:
Dim ptsCol As New MapObjects2.Points
Dim recs As MapObjects2.Recordset
Dim Layer As MapObjects2.MapLayer
Dim P1 As MapObjects2.Point
ptsCol.Add NewPoint
Set P1 = Map1.ToMapPoint(X, Y)
pts.Add P1
If recs.Updatable Then
      With Layer.Records
        .AddNew
        .Fields("Shape").Value = Pts'添加新特征     
       '其他字段信息可以在这里写上
        .Update
        .StopEditing
      End With
      Map1.Refresh
Else
      MsgBox "图层不可编辑"
End If
同原来的程序相比,主要是定义了一个多点对象(Dim ptsCol As New MapObjects2.Points)然后将获得的新点交给这个新定义多点对象pts.最后把多点附给"shape"属性.这回应该差不多了吧.可惜仍然不行哦.问题依旧.
    后来上论坛查在线帮助,弄了好几天也没解决.不经意在mo的online forum发现有一个人写的代码(也是个multipoint问题,英语太菜也没太看懂)别人是这样赋值Set recs.Fields("Shape").Value = pt.结果发现我苦思很久的问题原来出在SET这三个字母上.只要在原有代码上使用SET来赋值,则程序就大功告成了(Set recs.Fields("Shape").Value = ptsCol).现在把我得经历写出来.希望用得着的朋友不要象我一样走弯路.(未什么问题出在set上呢??points实际上是点集合)
文章录入:gissky    责任编辑:gissky  发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
■■相 关 图 书:
■■相 关 文 章:
  • Windows Vista下安装 ArcGis 9.2 的解决方法

  • MapObjects地图填充符号库扩展[Dotnet C#]

  • 通过SDE读取矢量和栅格数据

  • 加载文件夹下所有的矢量图形到mapcontrol中去

  • 在编程过程中使用ArcMap注意事项

  • ArcGIS开发宝典

  • vista下安装ArcGis9.2的解决办法

  • 上一篇文章:

  • 下一篇文章:
  •  
    GIS博客精华
    热点文章
    热门资源
     
    关于我们 | 联系我们 | 广告服务 | 友情链接 | 申请链接 | 合作联盟 | 诚聘英才
      GIS空间站(GISSky.Net)版权所有 站长:兔八哥