MapXtreme 没有实现对 Feature 插入顺序的管理

在操作面图元时,我们可能希望这些图元按一定的顺序显示,例如面积大的显示在面积小的下面,以致于不会遮蔽小面积的图元。我通过下面的方法进行操作,但结果并不是我想要的。

 

MIConnection miConn = new MIConnection();

MICommand miCmd = miConn.CreateCommand();

MICmd.CommandText = "insert into directTable select * from sourceTable where 条件 order by 面积 DESC";

MIConn.Open();
int result = MICmd.ExecuteNonQuery();

 

上面代码的执行结果,sourceTable 中的 Feature 不是按指定的顺序插入 directTable 的。

即便我们改用下面的方式,也不能达到预期的效果。

 

MapInfo.Data.SearchInfo si = MapInfo.Data.SearchInfoFactory.SearchAll();

si.QueryDefinition.Columns = new string[]{"*"};

// 指定排序列
si.QueryDefinition.OrderBy = new string[]{"面积 DESC"};
IResultSetFeatureCollection rsfc =  Catalog.Search(sourceTable, si);

 

if(rsfc.Count > 0)
{

   foreach(Feature f in rsfc)
   {
      directTable.InsertFeature(f);
   }

}

 

这个问题在 MapXtreme 2004 6.2 下被发现,在 MapXtreme 2008 中测试也得到同样的结果,请教 MapInfo 相关人员后得到一个解决方案:

在执行插入操作后,如果想将图元 A 的顺序调到最上层显示,需要先删除 A,然后再添加 A,当然,在删除之前要做备份,否则添加的时候就找不到了。

 

这个方法我没试过,因为我采用创建独立图层的方法完成了工作,调整图层的顺序要比调整图元的顺序方便的多,缺点是不能包治天下,所以有兴趣的朋友不妨试试 MapInfo 人员的方法,如果可行的话,别忘通知兄弟一声,先谢谢啦 :-)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值