skyline 加载shp数据(本地方式或者WFS服务方式),在场景中模型没有加载出来之前,无法获取图层数据要素的解决方案

时间:2024-04-01 13:59:28

      1.在skyline pro中,如果模型的量不大(这个没有做过具体的测试),我们可以采用全部模型先加载上来的方式,也就是在打开这个fly工程的时候,所有的模型都会先加载,这样是数据量的不大时候适用。fly工程的打开的也不会太耗时,所以用这种一开始就把模型全加载上来的方式可以接受,后期再浏览的数据的过程的中也有一定的优势。这种方案在模型数量不多的时候可以采用。建议测试一下。加载的方式可以给skyline写插件自动加载模型。也可在pro中逐一加载。

skyline 加载shp数据(本地方式或者WFS服务方式),在场景中模型没有加载出来之前,无法获取图层数据要素的解决方案

    2.采用shp数据的方式加载模型,这种方式适合在数据量比较大的时候,如果采用1的方式,在打开工程fly的时候,加载速度会很慢,所以我们采用shp流的方式加载数据,具体加载步骤在此不做赘述。

     采用模式2的方式加载数据之后又一个新的问题,场景打开的时候,只会加载视域内的数据,这个时候我们要向采用模型名称去定位模型的话,如果该模型没有在视域里面显示,那么我们开发通过IFeatureLayer无法获取到所有的数据,也就是IFeature,所以我们的定位相应的也就无法完成。那怎么来实现这种打开fly工程节省时间,然后又能获取到shp图层中所有的要素。

     解决方案一:加载shp数据的时候,采用非流方式加载,如图:

     skyline 加载shp数据(本地方式或者WFS服务方式),在场景中模型没有加载出来之前,无法获取图层数据要素的解决方案

这样我们在开发的时候就能获取到图层中全部的要素信息。存在的问题:如果shp是本地数据,不存在问题。要是shp数据是通过gate SFS发布的WFS服务切skyline版本低于6.6的时候,加载时候模型锁定无法更改。所以我们相应的也就无法获取的全部的要素信息。咨询之后说是7.0版本以上可以,但没有测试。有想法的可以测试。

        解决方案二:如果我们必须要访问WFS服务下的shp数据,可以采用其他发布的方式,比如开源的geoserver发布WFS服务,本人的另外一篇博文中有相关geoserver的安装和发布流程。我们在加载geoserver发布的WFS服务时候,上图的按钮是可选的。我们即可实现要素的全读取。

         解决方案三:自己写模型加载流程,根据当前地图视角,动态加载模型和卸载模型,这种方法要求比较高,异步和多线程的方式去实现加载过程。改方法目前在测试中,后续处理没问题的话,会把相关技术点详细列出来。