• skyline中遍历fly工程树


    在skyline二次开发过程中,做空间分析总是要去读取工程中的shp图层。假设想获取工程树中“建筑物”图层,图层结构如下:

    传统的方法是:

    var itemId=SGWorld.ProjectTree.FindItem("图层\中模\建筑物");
    var layer=SGWorld.ProjectTree.GetLayer(itemId);
    

    这样有个坏处是,工程树配好了不能再改了。或者说一旦改fly文件的工程树结构了,就得改代码。否则就无法获取“建筑物“。这样有个想法是,在fly工程首次加载的时候,就遍历工程树,把所有的shp图层、以及图层在工程树的图层名存放在数组中。

    代码如下:

    //遍历工程树,将所有的layer图层、图层名都存放在数组中
        var players=new Array();
    var playersName=new Array();
    function BuildTreeRecursive(current) { SGWorld = TE.ISGWorld61(); try{ while (current > 0) { itemName = SGWorld.ProjectTree.GetItemName(current); if (itemName != "地形修改" && itemName != "位置" && itemName != "PresentationRoute") { if (SGWorld.ProjectTree.IsGroup(current)) { if (SGWorld.ProjectTree.IsLayer(current)) { var name = SGWorld.ProjectTree.GetItemName(current); var layer = SGWorld.ProjectTree.GetLayer(current); playersName[playersName.length] = name; players[players.length] = layer; } else { var childItem = SGWorld.ProjectTree.GetNextItem(current, 11);//CHILD – 11,The first child item of ItemID. TR.BuildTreeRecursive(childItem); } } } current = SGWorld.ProjectTree.GetNextItem(current, 13); } } catch (e) { alert(e)} }

     我们在上面的基础上再添加一个方法,就是根据图层名获取图层:

    //下面是根据工程树中layer图层的名字获取layer
        function GetLayerByLayerGroupName(layerGroupName) {
            if (playersName.length>0) {
                for (i = 0; i < playersName.length; i++) {
                    if (playersName[i] == layerGroupName)
                        return players[i];
                }
            }
            else { alert("图层名数组为空,请检查TR.BuildTreeRecursive()方法是否执行"); }
        };

    这样的话,我们在空间分析时,要找建筑物图层,就可以调用上面的方法就可以了,如下:

    var layerGroupName="建筑物";
    var buildLayer=GetLayerByLayerGroupName(layerGroupName);
    

      上面返回的buildLayer就是建筑物图层。

    欢迎关注:www.skylinecn.com!

  • 相关阅读:
    SFML从入门到放弃(3) 视角和碰撞检测
    SFML从入门到放弃(2) 图像和音频
    SFML从入门到放弃(1) 窗口和交互
    SFML从入门到放弃(0) 配置环境
    NOI2017 酱油记
    【bzoj4889】: [Tjoi2017]不勤劳的图书管理员 分块-BIT
    【bzoj4888】: [Tjoi2017]异或和 BIT-乱搞
    【bzoj4887】:[Tjoi2017]可乐 矩阵乘法,快速幂
    THUSC2017酱油记
    CTSC2017酱油记
  • 原文地址:https://www.cnblogs.com/pengjw/p/3447531.html
Copyright © 2020-2023  润新知