对数据集的记录集里把老的几何对象移除remove,新的几何对象add进来,保存修改,刷新图层显示即可。
裁剪对不同的数据,二维几何对象、二维几何对象组、几何模型、数据集等等有不同的裁剪方法。
只是单一面对分割的话,使用基本几何运算类Geometrist下的分割面对象方法SplitRegion。
希望可以帮助到您!
能说一说具体调用的方法吗?我这样写没有效果
GeoRegion resultRegion1 = new GeoRegion(), resultRegion2 = new GeoRegion(); // 用来接受分割的结果 GeoRegion region = recordset.GetGeometry() as GeoRegion; // 待分割的原图斑 Geometrist.SplitRegion(region, splitTarget, resultRegion1, resultRegion2); // 开始分割 region.RemovePart(0); // 把原来的图斑删了 region.AddPart(resultRegion1[0]); //添加结果1 region.AddPart(resultRegion2[0]); // 添加结果2
GeoRegion resultRegion1 = new GeoRegion(), resultRegion2 = new GeoRegion(); // 接受分割后的两个结果 GeoRegion region = recordset.GetGeometry() as GeoRegion; Geometrist.SplitRegion(region, spilitTarget, resultRegion1, resultRegion2); region.RemovePart(0); region.AddPart(resultRegion1[0]); region.AddPart(resultRegion2[0]); recordset.Edit(); recordset.SetGeometry(region); recordset.Update();
你好,这样写是把原来的recodset变成包含两个georegion,我是想把这个recordset分割以后就变成两个recordset,要怎么实现呢?
GeoRegion resultRegion1 = new GeoRegion(), resultRegion2 = new GeoRegion(); // 接受分割后的两个结果 GeoRegion region = recordset.GetGeometry() as GeoRegion; // 待切割图斑 Geometrist.SplitRegion(region, spilitTarget, resultRegion1, resultRegion2); // 开始切割 Dictionary<string, object> values = new Dictionary<string, object>(); // 拿到老图斑的字段信息 foreach (FieldInfo field in fieldInfos) { if (field.Name.Substring(0, 2) == "Sm") continue; values.Add(field.Name, recordset.GetFieldValue(field.Name)); } recordset.Delete(); // 删掉老的 recordset.Update(); recordset.AddNew(resultRegion1, values); // 添加新图斑1,并给字段赋值 recordset.Update(); recordset.AddNew(resultRegion2, values); // 添加新图斑2,并给字段赋值 recordset.Update();
我现在就是按您的思路写的,但是没有办法Ctrl-Z或者mapContro.Undo()撤回。
意思就是下面这段代码是正确的分割代码,但是iobject没有提供能够对recordset操纵进行撤回的接口,要自己手撕一个?