zoukankan      html  css  js  c++  java
  • SkylineGlobe6.5遍历信息树节点方法

    //-------------------
    //searchGeometries
    function searchGeometries2(parentNode, callbackFunc) {
        SGWorld.ProjectTree.EnableRedraw(0);
        searchGeometriesLeaf2(parentNode, callbackFunc);
        SGWorld.ProjectTree.EnableRedraw(1);
    }
    //-------------------
    // searchGeometries
    function searchGeometriesLeaf2(parentNode, callbackFunc) {
    
        if (SGWorld.ProjectTree.IsLayer(parentNode))  // Layer
        {
            var layer = SGWorld.ProjectTree.GetLayer(parentNode);
            var featureGroups = layer.FeatureGroups;
            for (var i = 0; i < featureGroups.Count; i++) // Traverse all sub-layers
            {
                var featureGroup = featureGroups.Item(i);
                var altitudeType = AltitudeMethodToAltitudeType(featureGroup.GetProperty("Altitude Method"));
                var features = featureGroup.Features;
                for (var j = 0; j < features.Count; j++) {
                    var ret;
                    if (featureGroup.GeometryType != 0)
                        ret = callbackFunc(features.Item(j).Geometry, featureGroup.GeometryType, altitudeType);
                    else {
                        if (features.Item(j).Geometry.GeometryType == 0) // Point
                        {
                            var position = SGWorld.Creator.CreatePosition(features.Item(j).Geometry.X, features.Item(j).Geometry.Y, features.Item(j).Geometry.Z);
                            ret = callbackFunc(position, featureGroup.GeometryType, altitudeType);
                        }
                    }
                    if (!ret)
                        return;
                }
            }
        }
        else {
            var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11);
            while (node != "") {
                if (SGWorld.ProjectTree.IsGroup(node) || SGWorld.ProjectTree.IsLayer(node))
                    searchGeometriesLeaf2(node, callbackFunc);
                else {
                    var Object = SGWorld.Creator.GetObject(node);
                    if (Object != null) {
                        var altitudeType = Object.Position.AltitudeType;
                        var ret;
                        if (Object.ObjectType == 1 || Object.ObjectType == 2)
                           ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType);
                        else
                            ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType);
    
                        if (!ret)
                            return;
                    }
                }
    
                node = SGWorld.ProjectTree.GetNextItem(node, 13);
            }
        }
    }
  • 相关阅读:
    无监督聚类K-means算法
    Python程序执行顺序
    修改jupyter notebook响应的浏览器
    Vijos1035 贪婪的送礼者 [map的应用]
    POJ 2976 Dropping tests [二分]
    POJ 3111 K Best 最大化平均值 [二分]
    HDU 2899 Strange fuction [二分]
    HDU 2141 can you find it [二分]
    HDU 4004 The Frog's Games [二分]
    HDU 1969 Pie [二分]
  • 原文地址:https://www.cnblogs.com/yitianhe/p/3334734.html
Copyright © 2011-2022 走看看