




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、概述 ArcGIS 10 中可以通过Interoperablility模块来加载由外部数据源或ArcGIS Server发布的标准的WFS服务(10默认支持WFS1.1.0),如图1所示。使用过ArcGIS该功能的朋友应该会注意到,在初次加载WFS数据时数据加载的速度会比较慢,而当以后再次加载时速度就非常快了。而造成这种现象的原因主要在于ArcGIS在初次加载WFS数据的同时将其全部数据在本地机器上做了缓存,当下次再次访问该WFS服务时,则可直接访问本地缓存无需访问网络资源,如图2所示。图1图2 ArcGIS与WFS交互的体系结构图 ArcGIS如此的WFS数据访问模式在很大程度上确实能够大幅提高WFS的访问效率,但这种 ArcGIS与WFS交互的体系结构图模式也同时带来了一个较大的缺点,即无法及时反映WFS数据源中数据的变化,如图3和图4。图3 更新前ArcGIS中访问WFS数据的截图图4 更新后ArcGIS中访问WFS数据的截图(同图3)同时,ArcGIS本身也并没有提供相应的机制或参数以使得用户能够控制本地缓存的更新。所以,这就触发了笔者希望通过研究其缓存和运行原理,以从中探求控制本地缓存更新的方法。而这也便是本文的缘起。2、运行原理 ArcGIS中对WFS访问客户端的支持是基于FME来实现的,所以新建WFS连接的界面的风格与FME基本一致,如下图所示:图5 新建对话框图6 参数对话框 当使用Interoperability模块新建了一个WFS连接后,ArcGIS会在目录“%userprofile%AppDataRoamingSafe SoftwareInteroperability”中自动生成一个后缀为“.fdl”的WFS连接文件。将该文件使用文本编辑器打开,可以发现该文件其实就是存储了所有用于定义该WFS连接的相关参数:图7 WFS连接文件同时,在ArcGIS中对该WFS连接的所有操作,包括连接的创建、修改、访问等操作均以日志的形式存储在同级目录的log目录下,如图:图8 互操作log文件 通过查看对应的log文件笔者发现,原来ArcGIS在建立WFS连接的同时会自动将WFS中所有的要素全部加载并缓存在本地文件中,同时为了加快对本地缓存要素的查看,还为这些要素做了空间索引,证据如下:2010-12-21 11:15:37|50.0|0.0|STATS |Stored 6 feature(s) to FME feature store file C:UsersADMINI1AppDataLocalTempINTEROPFFSPC_1292901310941_3684 2010-12-21 11:15:37|50.0|0.1|STATS |Storing feature(s) to FME feature store file C:UsersADMINI1AppDataLocalTempINTEROPFFSPCS_1292901310944_3684 2010-12-21 11:15:37|50.0|0.0|STATS |Stored 0 feature(s) to FME feature store file C:UsersADMINI1AppDataLocalTempINTEROPFFSPCS_1292901310944_3684 2010-12-21 11:15:37|50.1|0.0|INFORM|Saving spatial index into file C:UsersADMINI1AppDataLocalTempINTEROPFFSPCS_1292901310944_3684.fsi 2010-12-21 11:15:37|50.1|0.0|INFORM|Finished saving spatial index into file C:UsersADMINI1AppDataLocalTempINTEROPFFSPCS_1292901310944_3684.fsi 2010-12-21 11:15:37|50.1|0.0|INFORM|Saving spatial index into file C:UsersADMINI1AppDataLocalTempINTEROPFFSPC_1292901310941_3684.fsi然后,笔者有进一步地查看了以上四个文件,发现其中:1、文件FFSPC_1292901310941_3684用于存储要素实体;2、文件FFSPC_1292901310941_3684.fsi存储了要素的空间索引;3、文件FFSPCS_1292901310944_3684存储了要素的数据结构;4、文件FFSPCS_1292901310944_3684.fsi似乎没有使用(先存个疑)。 同时,以上这些文件通过同级目录中的MasterTable.xml文件来管理,并且该文件管理了所有与互操作相关的数据缓存,ArcGIS内嵌的FME互操作模块正是结合上述的.fdl连接文件以及该xml文件来访问缓存的WFS数据的。MasterTable.xml文件结构 3、更新缓存的方法笔者在文件MasterTable.xml中笔者还发现了,该参数似乎是用于指定对应的缓存是否基于时间过期,但笔者查了很多资料都没能查到FME中默认的过期时间到底是多少,如果有朋友知道请能告诉我。不过在实际应用场景中,单纯地由客户端基于过期时间的自动更新显然有些不合理过期时间太短,则刷新过于频繁而影响效率;过期时间太长,则无法反映最新数据。所以,WFS的缓存过期应该是由数据源更新来驱动的,即数据源更新的同时进行缓存的刷新。在ArcGIS的产品体系统对于WFS的使用无非是两种技术路线,一是直接将ArcDesktop作为WFS客户端来使用WFS服务,另一种是将WFS服务发布到ArcGIS Server中,并有Server将其再发布成Server支持的其它服务。所以,针对这两种路线,其对应的缓存更新的方法如下:A、在ArcDesktop中的更新的缓存的方法 1)删除MasterTable.xml文件中目标缓存对应的实体; 2)删除该实体中引用的同目录下的要素缓存文件、要素索引文件、要素架构文件、以及要素架构索引文件; 3)在ArcCatalog中刷新对应的WFS连接。 当再次访问该WFS连接时,ArcDesktop会重新从数据源加载并缓存要素到新建的本地缓存文件中。B、在ArcGIS Server中更新缓存的方法 1)删除MasterTable.xml文件中目标缓存对应的实体; 2)删除该实体中引用的同目录下的要素缓存文件、要素索引文件、要素架构文件、以及要素架构索引文件; 3)在ArcCatalog或Web版的ArcGIS Server Manager中重新启动对应的服务。 当再次访问该服务时,ArcGIS Server会重新从数据源加载并缓存要素到新建的本地缓存文件中。4、我们在哪 由于FME中WFS本地缓存更新机制导致ArcGIS的无法有效地满足WFS数据源更新频繁的场景下的最新数据访问需求,所以笔者从ArcGIS中WFS互操作模块运行原理的角度想读者介绍了关于ArcGIS在WFS互操作时所涉及的操作和数据文件的相关原理性的知识,并在此基础上进一步分别介绍了在ArcDesktop和ArcGIS Sever环境下WFS缓存更新的方法。但是,需要注意的是,本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论