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

    待续………………

  • 相关阅读:
    代理工具
    python-requests简单使用
    Charles使用 请求转发【map remote】 rewrite-body替换 rewrite-modify query param
    charles监控 移动端HTTPS请求
    unittest执行测试用例过程
    JVM工具命令
    JAVA开发小技巧
    命名神器(妈妈再也不用担心我瞎命名了)
    CookieUtil、EncryptUtil(各种加密算法)、HttpUtil
    常见Maven命令
  • 原文地址:https://www.cnblogs.com/GISRSMAN/p/4961422.html
Copyright © 2011-2022 走看看