INTERGRAPH
路人甲
路人甲
  • 注册日期2005-03-28
  • 发帖数22
  • QQ
  • 铜币213枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1001回复:0

GeoMedia常见问题解答-3

楼主#
更多 发布于:2005-06-06 08:55
<P><A>25</A>.<A> 不连续图元有没有数量上的限制?</A></P>
<P><B>描述</B></P>
<P>一个特征的不连续图元,有没有数量上的限制?</P>
<P><B>回答</B></P>
<P>在一个几何体集合中,逻辑上应该没有数量限制。但 Access 中有 BLOB 大小限制,以及 Oracle 中的相应限制,等等,这是另外一回事。</P>
<P><A>26</A>.<A> 我的 Oracle 视图包含数据库链接。我如何在 GeoMedia 中使用它们?</A></P>
<P><B>描述</B></P>
<P>当我在一个 Oracle 视图中使用一个数据库链接时,我得到一个解析错误。有办法解决这个错误吗?</P>
<P><B>回答</B></P>
<P>我是用创建带有数据库链接的表的同义词这个方法来绕过数据库链接问题的。我在创建视图时,使用了同义词。 这样,在查看视图的文本时,便可以使用同义词来替代 tablename@database link,因此 GeoMedia 便不知道数据库链接或正在使用的同义词。 这个问题便魔术般地解决了。</P>
<P><A>27</A>.<A> 为什么在 GeoMedia 中显示包含视图的 MGE 连接这么慢?</A></P>
<P><B>回答</B></P>
<P>有关 MGE 视图的所有不同处理均发生在 MGE 数据服务器端。客户端不会意识到 MGE 视图的存在;对于客户端来说,视图与其它特征类没有什么区别。</P>
<P>该服务器读取的绝大多数记录集的类型是 Dynaset,其中 MSLINK 是关键值。关键值必须是唯一的。因为这个原因, 用于视图的记录集在缺省情况下都是快照类型(Snapshot)。这样,在处理查询时的性能与从结果中直接获取数据时的性能便存在差异:</P>
<P>Dynaset 的查询处理:</P>
<UL>
<LI>
<P>扫描地图 - 通过空间过滤器的 MSLINK,或没有空间过滤器时所有特征的 MSLINK。如果没有 Where 子句,那么这个 MSLINK 集便是生成的记录集,这样我们就完成了!</P>
<LI>
<P>如果存在 Where 子句,查找满足属性过滤器的 MSLINK,即 "SELECT MSLINK FROM (table or view) WHERE "。那么生成的记录集便是这两个 MSLINK 集的交集。</P></LI></UL>
<P>Snapshot 的查询处理:</P>
<UL>
<LI>
<P>扫描地图 - 通过空间过滤器的 MSLINK,或没有空间过滤器时所有特征的 MSLINK。</P>
<LI>
<P>根据 "SELECT * FROM" ,或者如果有 where 子句时根据 "SELECT MSLINK FROM WHERE (用户提供的 where 子句)",从数据库中获得备选数据。但都必须执行查询。</P>
<LI>
<P>在数据库查询中求每条记录的值,检查 MSLINK 是否在通过空间过滤器的数据集中。如果在,则将其所有属性数据添加到记录集中。 生成的记录集是数据库查询中根据 MSLINK 通过空间过滤器的每一条记录。</P></LI></UL>
<P>注意这两个流程的第一步都是一样的。Dynaset 流程的第二步是可选的,而 Snapshot 流程的第二步和第三步是必需的。相对来讲,Dynaset 流程的第二步的耗费是较少的。 而 Snapshot 流程的第二步耗费较大,因为它将所有列的数据都提取出来而不仅仅是 MSLINK。第三步耗费较大是因为所有成员数据的值都将复制到内存中,而不仅仅是 MSLINK。</P>
<P>决定性能的其它因素还在于需要多长时间才可以将数据从记录集中提取出来。对于两者来说,获取几何体值的过程是一样的。 都是从缓存中获得 - 在扫描地图时创建了缓存 - 根据给定的 MSLINK 值。区别在于属性数据。从一个 dynaset 中提取数据:</P>
<UL>
<LI>
<P>首先,在数据库上创建一个参数查询 SELECT * FROM WHERE MSLINK = $。</P>
<LI>
<P>设置参数值为 MSLINK 并执行查询。要从一个 Snapshot 中提取数据,只要从构成记录集的内存中取出即可。你只是计算内存地址并参照它。 尽管参数化查询性能不错,但 Snapshot 通常会更快一些,除非记录集太大有很多页。数据库查询无法考虑空间过滤器,这是因为数据库没有空间信息。 但这是一个不相干的话题;事实上,这两种类型的记录集在空间处理上没有什么区别。使用 Snapshot 类型的真正问题在于:</P>
<OL>
<LI>
<P>必须每次都执行数据库查询。</P>
<LI>
<P>视图的数据库查询通常要比表的耗费大得多。</P>
<LI>
<P>查询是针对所有属性进行的。</P>
<LI>
<P>必须从内存中提取和维持所有数据。</P></LI></OL></LI></UL>
<P><A>28</A>.<A> 是否有办法通过 MGE 数据服务器来控制查询的超时间隔时间(Timeout)?</A></P>
<P><B>回答</B></P>
<P>你可以在 MGE <I>.ini</I> 文件中指定 ODBC 超时限制。这个功能主要是为需长时间操作的视图特别添加的。 这个时间用于 SQL Server,也可以用于 Oracle。选项名为: </P><PRE>ODBC QUERY TIMEOUT:</PRE><PRE>ODBC LOGIN TIMEOUT:</PRE>
<P>如果值为零,就是禁止超时特征 - 即没有超时限制 - 但是如果 ODBC 操作没有返回,则处理中止。不是所有的 ODBC 驱动都支持改变超时限制。 也许提供MDAC的微软驱动会工作得更好些。</P>
<P><A>29</A>.<A>Oracle Object 模型上的 <B>SDO_TOLERANCE</B> 参数的用途是什么?</A></P>
<P><B>回答</B></P>
<P>事实上,SDO_TOLERANCE 对 GeoMedia 的影响几乎没有。Oracle 使用它是来确定两个点是否相等。GeoMedia 使用自己的内部容差。Oracle 使用下列公式:</P>
<P><CODE>If |X1-X2|< X SDO_TOLERANCE and |Y1-Y2|< Y SDO_TOLERANCE then X1,Y1=X2,Y2 </CODE></P>
<P>该参数用于有效性校验时来查找重复的点以及不闭合的多边形等。</P>
<P><A>30</A>.<A> GeoMedia 支持 Oracle Object 模型中的 RTree 索引吗?</A></P>
<P><B>回答</B></P>
<P>其实在 8.1.7 中 RTree 只是 beta 版但可以工作。在 SDO_RELATE 程序中有一个问题会导致 GeoMedia 出错。使用 Oracle 的补丁编号为 1575474 可以修正错误。你可以从下面的链接中得到:</P>
<P><CODE>http://metalink.oracle.com/</CODE></P>
<P>安装补丁后,RTree 便可以正常工作。目前,你只能在二维数据上使用 RTree。GeoMedia 只对 RTree 做了有限的测试,但至今为止,尚未发现问题。 我已使用 RTree 工作了很长时间,一切正常。RTree 的性能的确有提高。</P>
<P><A>31</A>.<A> 连接池可用于 Access 数据库吗?</A></P>
<P><B>回答</B></P>
<P>来自:</P>
<P><CODE>http://support.microsoft.com/support/kb/articles/Q191/5/72.ASP</CODE></P>
<P><B>注:</B> 使用 Jet OLE DB 供应者 和 ODBC 驱动的连接不能使用连接池,因为它们不支持连接池。</P>
<P>另在:</P>
<P><CODE>http://support.microsoft.com/support/kb/articles/Q169/4/70.ASP</CODE></P>
<P>问. 因为连接池是以驱动管理器实现的,我可以与微软的 Access 驱动一起使用连接池吗?</P>
<P>答. 不能与微软的 Access 驱动一起使用连接池。微软的 Access 驱动内部使用的是支持单元线程模型的 Jet。换句话说,Jet 要求由相同的线程操纵连接/断开程序。而连接池的连接/断开程序要求由不同的线程操纵。这一点适于所有使用 Jet 的微软桌面驱动器。</P>
<P>因此,给你的结论是连接池不能用于 Access 数据库。</P>
<P><A>32</A>.<A> 在导出到 SQL Server 的过程中,是怎样追加数据的索引的?</A></P>
<P><B>描述</B></P>
<P>如果数据已经上载,或已使用 <I>import.bat</I> 装载,某日期之后添加、导入或插入的数据便需要追加到已有的表中。 那么这些追加的数据是如何建立索引的呢?</P>
<P><B>回答</B></P>
<P>以下解释适用于数据的最初导入和追加操作。</P>
<P>如果索引不是一个自动编号(AutoNumber)字段(如:SQL Server IDENTITY),那么首先使用 BCP 数据文件中的值。 如果索引是一个自动编号字段,那么 bcp 工具选项控制该操作。这里是来自 SQL Server 在线文档的介绍。</P>
<P>-E</P>
<P>identity 列的指定值会出现在导入的文件中。如果没有指定 -E,将忽略数据文件中的该列的 identity 值,SQL Server 将根据种子文件和创建表时指定的增量值自动分配唯一值。 如果数据文件中没有包含数据表或视图的 identity 列的值,则使用一个格式文件来指定在导入数据时忽略数据表或视图的 identity 列。 SQL Server 将为该列自动分配唯一值。</P>
<P>查找 <I>import.bat</I> 文件,其中指定每一个 bcp 命令行上的选项“-E”,这样将先使用 BCP 文件中的自动增加值。 如果你需要不同的操作,可以在执行命令前修改 <I>import.bat</I>,或其它处理选项。</P>
<P><A>34</A>.<A> GeoMedia 是如何存储圆弧的?</A></P>
<P><B>回答</B></P>
<P>在 Oracle Object 数据库中,一个圆弧存储为三个点。在 Access 和 MSSQL 服务器数据仓库中,则以 GDO 格式存储,即使用起点、终点、标准矢量、半径、和大于π的布尔标识。这个 GDO 格式也是 GeoMedia 内部处理圆弧时使用的,尽管 GeoMedia 的放置命令也是使用三个点来放置圆弧。</P><A>35</A>.<A> 如何将文本特征导出到 ArcView 的 shapefile 格式?</A>
<P><B>回答</B></P>
<P>ArcView shapefile 格式不支持文本特征。因此,你问的问题是不可能实现的。</P>
<P>对于一个 ArcView 用户,要在地图上显示文字特征时,他/她可以使用标注功能(和 GeoMedia 中的标注功能一样)。 文本存储为特征的属性信息,可以作为标注显示。</P>
喜欢0 评分0
游客

返回顶部