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查询统计

    待续………………

  • 相关阅读:
    org.Hs.eg.db
    Error in readRDS(dest) : error reading from connection
    R语言中的特殊值 NA NULL NaN Inf
    C#转Java之路之三:多线程并发容器即线程安全的容器
    C#转Java之路之二:多线程原子变量
    C#转Java之路之一:线程
    H5 input type="search" 不显示搜索 解决方法
    陪你在路上...我却渐行渐远
    Extjs使用 RestfulWebApi +Token验证小结
    Oracle 10g的备份与还原
  • 原文地址:https://www.cnblogs.com/GISRSMAN/p/4961422.html
Copyright © 2011-2022 走看看