zoukankan      html  css  js  c++  java
  • arcengine属性查询 一些记录

    遇到的问题、值得记录的东西,杂乱的记一下。

    一、奇怪的数据类型支持

    环境:arcengine 10.0,oracle10g+sde10.0

    ORACLE+sde库中有个string类型的字段,一般设置里面值为1,其他时候设置值为0或为空NULL。

    在查询时发现wherecause语句写法都可以:即使是string也可以像int那样查询,不知道这是什么莫名其妙的问题。

    //类似int数值的写法
    string isCause1 = "( WASTEDEVICE = 1 )";
    //这才是string类型的写法
    string isCause2 = "( WASTEDEVICE = '1' )";

    同理,以下也是一样的

    string isCause = "(WASTEDEVICE <> 1)";
    string isCause = "(WASTEDEVICE <> '1')";

    二、ArcGIS Engine空间高效查询(IIdentify方法)

    利用ArcEngine空间查询,大多数人会马上想到利用IQueryFilter接口,的确,IQueryFilter接口是我们经常使用的查询接口而且使用比较简单,但是在大数据量查询数据,尤其是空间查询时效率会很低,导致速度会很慢。

    给大家推荐一个接口,给刚刚入门或者还不知道该接口的朋友提供一点参考。

    IIdentify

    IIdentify继承了FeatureLayer、RasterLayerCadFeatureLayer等N种图层种类,而且查询效率比IQueryFilter要高

    缺点:只有与查询图形相交一种查询方式没有IQueryfilter的查询方式多样

    详细方法查看hl3292博友的 ArcGIS Engine空间高效查询(IIdentify方法)-已解决

    三、查询结果排序

    据一些文档说,IQueryFilter 里的类SQL语句不支持排序,这时使用ITableSort接口。

    IQueryFilter、ISpatialFilter接口可以转IQueryFilterDefinition接口设置Order By和Group By语句。虽然有些帮助文档说不能使用Order By和Group By语句,但是其实是可以的,只可以用在GeoDatabase,不能用于ShapeFile和Coverage数据。例子如下

    queryDef.Tables = “tableA Group by Field01”;
    queryDef.SubFields = “Field01”;
    或者
    queryDef.Tables = “tableA”;
    queryDef.SubFields = “Field01, COUNT(Field01)”;
    queryDef.WhereClause = “Field01 is not null GROUP BY Field01 HAVING COUNT(Field01) > 1”;

    原文 关于ArcEngine查询统计

    待续………………

  • 相关阅读:
    彻底移除mc
    产生N个不重复的随机数字
    画方格线
    运动方式工具类
    物体围绕另一个物体圆形运动
    检测碰撞工具类(两个类各有特点 可以结合使用)
    hdu 1069 Monkey and Banana (DP)
    hdu 1158 Employment Planning (DP)
    hdu 1003 Max Sum (DP)
    hdu 2550百步穿杨 (DP)
  • 原文地址:https://www.cnblogs.com/GISRSMAN/p/4961422.html
Copyright © 2011-2022 走看看