|
自己参考了很多代码(大部分是vb)还是一直没有太搞明白数据绑定得很多细节 书里面写得总是不能彻底领悟。无论如何 贴一贴自己的一些体会。 完整程序将在这两天贴出来
一。 适用于各种图元类型通用得数据绑定 即:ds:=Map1.Datasets.Add(miDataSetLayer,editlayer,Emptyparam,Emptyparam,Emptyparam,Emptyparam,emptyparam,Emptyparam); 首先 我们创建图层 1.规定了图层 .tbl表中各属性定义 以及相关文件(.dat .map .id .ind .tbl)位置 lyrinfo:= CoLayerInfo.Create; flds := cofields.Create; flds.AddStringField('linetype',16,emptyparam); lyrinfo.Type_:=miLayerInfoTypeNewTable; lyrinfo.AddParameter( 'FileSpec', '\line1.tab'); lyrinfo.AddParameter ('Name', 'line1') ; lyrinfo.AddParameter ('Fields', flds) ; Map1.Layers.Add(lyrinfo, 1); editlayer:=map1.Layers.item[1]; 2.完成绑定 ds:=Map1.Datasets.Add(miDataSetLayer,editlayer,Emptyparam,Emptyparam,Emptyparam,Emptyparam,emptyparam,Emptyparam); 3。我们可以从数据库中依次读数据 然后把属性值按步骤1中创建图层属性的顺序添加到数据集中 id:=....//从数据库中取值 rv1.dataset:=ds; rv1.field:=ds.Fields.Item[1]; rv1.value:=id; rvs1.add(rv1); 4. 添加图元 完成后我们饭线在.dat文件中加入了绑定数据 EditLayer.AddFeature(newObj,rvs1); 5.别忘了把点或线画在图层中 newObj := Map1.FeatureFactory.CreateLine(pts, newstyle); or newobj:=map1.featurefactory.CreateSymbol(pt.newstyle) 二。 只适用于点图元的绑定 Map1.Datasets.Add(miDatasetODBC,parm,emptyparam,'name','id',BindlayerObject,emptyparam,false); 直接建立数据库与图层之间的绑定关系 这种方法似乎不太容易添加新的图元 而且 一定要用 BindlayerObject:= CoBindlayer.Create; BindlayerObject.RefColumn1:='x'; BindlayerObject.RefColumn2:='y'; BindlayerObject.LayerType:=miBindlayerTypeXY; 才能建立好空间数据与属性数据的对应关系。并且能够自动把点画在图层中 一些程序 flds := cofields.Create; flds.Add('x','x',miaggregationauto,mitypenumeric); flds.Add('y','y',miaggregationauto,mitypenumeric); flds.Add('postnumber','postnumber',miaggregationauto,mitypenumeric); BindlayerObject:= CoBindlayer.Create; // BindlayerObject.Filespec := '\test.tab'; BindlayerObject.LayerName:='addnew'; BindlayerObject.RefColumn1:='x'; BindlayerObject.RefColumn2:='y'; BindlayerObject.LayerType:=miBindlayerTypeXY; Mydataset:= Map1.Datasets.Add(miDatasetODBC,parm,emptyparam,'postnumber',emptyparam,BindlayerObject,emptyparam,false); 其实我个人认为第一种方法很清楚 建立图层---〉完成绑定---〉添加数据--〉显示数据 而且使用范围广 就用它就好了 第二种方法优点在于自动建立数据库与图层之间数据绑定关系 即空间数据与属性数据的关联 但是一旦建立了dataset 修改不大容易 希望大家指正。谢谢
James.Liu :
绑定的有固定图层类型的绑定,关键字绑定,点坐标绑定,CODE绑定这么几种,最常见的就是楼主所阐述的,不错!!! |