『公告』 预祝您龙年大吉,万事如意, 过节期间, 大家如需数据服务,请拨打400 或直接添加客服微信,再祝大家龙年,心想事成。
关注我们 新浪 腾讯

由AO查询条件问题谈ArcSDE

由AO查询条件问题谈ArcSDE
我们在使用AO的时候,可能都频繁接触过过滤器对象IQueryFilter,无论是空间过滤器还是普通过滤器,都有个属性WhereClause,而这里就是我们传递SQL语句的地方。

       我们在使用AO的时候,可能都频繁接触过过滤器对象IQueryFilter,无论是空间过滤器还是普通过滤器,都有个属性WhereClause,而这里就是我们传递SQL语句的地方。

       在笔者的书中,我讨论了查询数值和字符串的两种类型字段的方法,至少还有如下的问题:

       1.这些SQL语句与普通的关系数据库的SQL语句有什么区别和联系?

       2.如何查询时间?

       3.可以使用诸如Order By一类的语法吗?

       对于这些问题,我最近一直在看ArcSDE方面的资料,对于开发者而言,ArcSDE拥有三套开发集,即C APIJAVA APIAOGeoDatabase部分,其中前两个是给非ESRI程序调用的,第三个是给ESRI程序使用的,显然,C API的效率应该是最高的。这点我曾经在一个SDE for CAD Client例子中看到过。

       我们在逻辑上可以将一个要素类看作是一张表,当然,ArcSDE是使用一张或多张表来实现一个要素类的,这取决于DBMS的类型、几何字段类型和这个要素类是否将处于一个长事物过程中。ArcSDE不会改变一个已经存在的DBMS,它仅仅是一个中间件产品,它提供了工具和接口,扩展了标准的SQL函数。

       当我们将一个空间字段添加到一个表的时候(这个表称为业务表,Business Table),ArcSDE的元数据表metatable会存储这个要素类表的元数据属性,如要素类名、空间范围、所有者、空间字段类型。这个metatableArcSDE安装的时候建立的。

      ArcSDE存储几何数据采用了有序坐标与真实曲线结合的方式,如点是单个的XY坐标,而线则是由有序坐标和曲线Curve组成,这是因为直线当然可以由有序坐标集来构成,但万一线中出现完全部分,使用真实的曲线对象则更好一点。ArcSDE在考虑Annotation上是非常特殊的,它将Annotation当作是“一个要素的属性”,即ArcSDE还是存储的要素,但这个要素中有个特殊的BLOB字段,用于储存一个Text的对象,这个Text与一个坐标相关联。另外,ArcSDEAnnotationAO GeodatabaseAnnotation是有区别的(有什么区别,我还没注意到)。

       不同的DBMS采用不同类型的字段来保存几何信息,如Oracle分别使用Long RawBLOB字段,如果装有Oracle的空间模块,则是SDO_Geometry字段,MSSQL产品都是使用IMAGE类型字段来保存数据的。

      京ICP备2025132830号-1 京公网安备 号