public TerrainPyramid(TerrainPyramid prototype) : base(prototype)
 {
     this._pyramidLevelStatus = prototype.PyramidLevelStatus;
     this._pointCount         = prototype.PointCount;
     this._maxScale           = prototype.MaxScale;
     this._resolution         = prototype.Resolution;
 }
 public TerrainPyramid(TerrainPyramid prototype) : base(prototype) {
     this._pyramidLevelStatus = prototype.PyramidLevelStatus;
     this._pointCount = prototype.PointCount;
     this._maxScale = prototype.MaxScale;
     this._resolution = prototype.Resolution;
 }
Beispiel #3
0
        //
        // CONSTRUCTOR
        //
        public Terrain(IXPathNavigable path) : base(path) {
            // Get Navigator
            XPathNavigator navigator = path.CreateNavigator();

            // <ConfigurationKeyword></ConfigurationKeyword>
            XPathNavigator navigatorConfigurationKeyword = navigator.SelectSingleNode("ConfigurationKeyword");
            if (navigatorConfigurationKeyword != null) {
                this._configurationKeyword = navigatorConfigurationKeyword.Value;
            }

            // <Extent></Extent>
            XPathNavigator navigatorExtent = navigator.SelectSingleNode("Extent");
            if (navigatorExtent != null && !string.IsNullOrEmpty(navigatorExtent.InnerXml)) {
                this._extent = new Extent(navigatorExtent);
            }

            // <SpatialReference></SpatialReference>
            XPathNavigator navigatorSpatialReference = navigator.SelectSingleNode("SpatialReference");
            if (navigatorSpatialReference != null && !string.IsNullOrEmpty(navigatorSpatialReference.InnerXml)) {
                this._spatialReference = new SpatialReference(navigatorSpatialReference);
            }

            // <FeatureDatasetName></FeatureDatasetName> 
            // Do not load. This can be inferred.

            // <PyramidType></PyramidType>
            XPathNavigator navigatorPyramidType = navigator.SelectSingleNode("PyramidType");
            if (navigatorPyramidType != null) {
                this._pyramidType = (esriTerrainPyramidType)Enum.Parse(typeof(esriTerrainPyramidType), navigatorPyramidType.Value, true);
            }

            // <WindowSizeMethod></WindowSizeMethod>
            XPathNavigator navigatorWindowSizeMethod = navigator.SelectSingleNode("WindowSizeMethod");
            if (navigatorWindowSizeMethod != null) {
                this._windowSizeMethod = (esriTerrainWindowSizeMethod)Enum.Parse(typeof(esriTerrainWindowSizeMethod), navigatorWindowSizeMethod.Value, true);
            }

            // <WindowSizeZThreshold></WindowSizeZThreshold>
            XPathNavigator navigatorWindowSizeZThreshold = navigator.SelectSingleNode("WindowSizeZThreshold");
            if (navigatorWindowSizeZThreshold != null) {
                this._windowSizeZThreshold = navigatorWindowSizeZThreshold.ValueAsDouble;
            }

            // <WindowSizeZThresholdStrategy></WindowSizeZThresholdStrategy>
            XPathNavigator navigatorWindowSizeZThresholdStrategy = navigator.SelectSingleNode("WindowSizeZThresholdStrategy");
            if (navigatorWindowSizeZThresholdStrategy != null) {
                this._windowSizeZThresholdStrategy = (esriTerrainZThresholdStrategy)Enum.Parse(typeof(esriTerrainZThresholdStrategy), navigatorWindowSizeZThresholdStrategy.Value, true);
            }

            // <TileSize></TileSize>
            XPathNavigator navigatorTileSize = navigator.SelectSingleNode("TileSize");
            if (navigatorTileSize != null) {
                this._tileSize = navigatorTileSize.ValueAsDouble;
            }

            // <MaxShapeSize></MaxShapeSize>
            XPathNavigator navigatorMaxShapeSize = navigator.SelectSingleNode("MaxShapeSize");
            if (navigatorMaxShapeSize != null) {
                this._maxShapeSize = navigatorMaxShapeSize.ValueAsInt;
            }

            // <MaxOverviewSize></MaxOverviewSize>
            XPathNavigator navigatorMaxOverviewSize = navigator.SelectSingleNode("MaxOverviewSize");
            if (navigatorMaxOverviewSize != null) {
                this._maxOverviewSize = navigatorMaxOverviewSize.ValueAsInt;
            }

            // <ExtentDomain></ExtentDomain>
            XPathNavigator navigatorExtentDomain = navigator.SelectSingleNode("ExtentDomain");
            if (navigatorExtentDomain != null && !string.IsNullOrEmpty(navigatorExtentDomain.InnerXml)) {
                this._extentDomain = new Extent(navigatorExtentDomain);
            }

            // <ExtentAOI></ExtentAOI>
            XPathNavigator navigatorExtentAOI = navigator.SelectSingleNode("ExtentAOI");
            if (navigatorExtentAOI != null && !string.IsNullOrEmpty(navigatorExtentAOI.InnerXml)) {
                this._extentAOI = new Extent(navigatorExtentAOI);
            }

            // <TerrainDataSources>
            //     <TerrainDataSource>
            //     </TerrainDataSource>
            // </TerrainDataSources>
            this._terrainDataSources = new List<TerrainDataSource>();
            XPathNodeIterator interatorTerrainDataSource = navigator.Select("TerrainDataSources/TerrainDataSource");
            while (interatorTerrainDataSource.MoveNext()) {
                // Get <ConnectivityRule>
                XPathNavigator navigatorTerrainDataSource = interatorTerrainDataSource.Current;
                TerrainDataSource terrainDataSource = new TerrainDataSource(navigatorTerrainDataSource);
                this._terrainDataSources.Add(terrainDataSource);
            }

            // TerrainPyramids
            this._terrainPyramids = new List<TerrainPyramid>();
            string pyramidPath = null;
            switch(this._pyramidType){
                case esriTerrainPyramidType.esriTerrainPyramidWindowSize:
                    // <TerrainPyramidLevelWindowSizes>
                    //    <TerrainPyramidLevelWindowSize>
                    //    </TerrainPyramidLevelWindowSize>
                    // </TerrainPyramidLevelWindowSizes>
                    pyramidPath = "TerrainPyramidLevelWindowSizes/TerrainPyramidLevelWindowSize";
                    break;
                case esriTerrainPyramidType.esriTerrainPyramidZTolerance:
                    // <TerrainPyramidLevelZTols>
                    //    <TerrainPyramidLevelZTol>
                    //    </TerrainPyramidLevelZTol>
                    // </TerrainPyramidLevelZTols>
                    pyramidPath = "TerrainPyramidLevelZTols/TerrainPyramidLevelZTol";
                    break;
            }
            XPathNodeIterator interatorTerrainPyramid = navigator.Select(pyramidPath);
            while (interatorTerrainPyramid.MoveNext()) {
                // Get <ConnectivityRule>
                XPathNavigator navigatorTerrainPyramid = interatorTerrainPyramid.Current;
                TerrainPyramid terrainPyramid = new TerrainPyramid(navigatorTerrainPyramid);
                this._terrainPyramids.Add(terrainPyramid);
            }
            
            // <TerrainID></TerrainID>
            XPathNavigator navigatorTerrainID = navigator.SelectSingleNode("TerrainID");
            if (navigatorTerrainID != null) {
                this._terrainID = navigatorTerrainID.ValueAsInt;
            }

            // <Version></Version>
            XPathNavigator navigatorVersion = navigator.SelectSingleNode("Version");
            if (navigatorVersion != null) {
                this._version = navigatorVersion.ValueAsInt;
            }
        }
Beispiel #4
0
        //
        // CONSTRUCTOR
        //
        public Terrain(IXPathNavigable path) : base(path)
        {
            // Get Navigator
            XPathNavigator navigator = path.CreateNavigator();

            // <ConfigurationKeyword></ConfigurationKeyword>
            XPathNavigator navigatorConfigurationKeyword = navigator.SelectSingleNode("ConfigurationKeyword");

            if (navigatorConfigurationKeyword != null)
            {
                this._configurationKeyword = navigatorConfigurationKeyword.Value;
            }

            // <Extent></Extent>
            XPathNavigator navigatorExtent = navigator.SelectSingleNode("Extent");

            if (navigatorExtent != null && !string.IsNullOrEmpty(navigatorExtent.InnerXml))
            {
                this._extent = new Extent(navigatorExtent);
            }

            // <SpatialReference></SpatialReference>
            XPathNavigator navigatorSpatialReference = navigator.SelectSingleNode("SpatialReference");

            if (navigatorSpatialReference != null && !string.IsNullOrEmpty(navigatorSpatialReference.InnerXml))
            {
                this._spatialReference = new SpatialReference(navigatorSpatialReference);
            }

            // <FeatureDatasetName></FeatureDatasetName>
            // Do not load. This can be inferred.

            // <PyramidType></PyramidType>
            XPathNavigator navigatorPyramidType = navigator.SelectSingleNode("PyramidType");

            if (navigatorPyramidType != null)
            {
                this._pyramidType = (esriTerrainPyramidType)Enum.Parse(typeof(esriTerrainPyramidType), navigatorPyramidType.Value, true);
            }

            // <WindowSizeMethod></WindowSizeMethod>
            XPathNavigator navigatorWindowSizeMethod = navigator.SelectSingleNode("WindowSizeMethod");

            if (navigatorWindowSizeMethod != null)
            {
                this._windowSizeMethod = (esriTerrainWindowSizeMethod)Enum.Parse(typeof(esriTerrainWindowSizeMethod), navigatorWindowSizeMethod.Value, true);
            }

            // <WindowSizeZThreshold></WindowSizeZThreshold>
            XPathNavigator navigatorWindowSizeZThreshold = navigator.SelectSingleNode("WindowSizeZThreshold");

            if (navigatorWindowSizeZThreshold != null)
            {
                this._windowSizeZThreshold = navigatorWindowSizeZThreshold.ValueAsDouble;
            }

            // <WindowSizeZThresholdStrategy></WindowSizeZThresholdStrategy>
            XPathNavigator navigatorWindowSizeZThresholdStrategy = navigator.SelectSingleNode("WindowSizeZThresholdStrategy");

            if (navigatorWindowSizeZThresholdStrategy != null)
            {
                this._windowSizeZThresholdStrategy = (esriTerrainZThresholdStrategy)Enum.Parse(typeof(esriTerrainZThresholdStrategy), navigatorWindowSizeZThresholdStrategy.Value, true);
            }

            // <TileSize></TileSize>
            XPathNavigator navigatorTileSize = navigator.SelectSingleNode("TileSize");

            if (navigatorTileSize != null)
            {
                this._tileSize = navigatorTileSize.ValueAsDouble;
            }

            // <MaxShapeSize></MaxShapeSize>
            XPathNavigator navigatorMaxShapeSize = navigator.SelectSingleNode("MaxShapeSize");

            if (navigatorMaxShapeSize != null)
            {
                this._maxShapeSize = navigatorMaxShapeSize.ValueAsInt;
            }

            // <MaxOverviewSize></MaxOverviewSize>
            XPathNavigator navigatorMaxOverviewSize = navigator.SelectSingleNode("MaxOverviewSize");

            if (navigatorMaxOverviewSize != null)
            {
                this._maxOverviewSize = navigatorMaxOverviewSize.ValueAsInt;
            }

            // <ExtentDomain></ExtentDomain>
            XPathNavigator navigatorExtentDomain = navigator.SelectSingleNode("ExtentDomain");

            if (navigatorExtentDomain != null && !string.IsNullOrEmpty(navigatorExtentDomain.InnerXml))
            {
                this._extentDomain = new Extent(navigatorExtentDomain);
            }

            // <ExtentAOI></ExtentAOI>
            XPathNavigator navigatorExtentAOI = navigator.SelectSingleNode("ExtentAOI");

            if (navigatorExtentAOI != null && !string.IsNullOrEmpty(navigatorExtentAOI.InnerXml))
            {
                this._extentAOI = new Extent(navigatorExtentAOI);
            }

            // <TerrainDataSources>
            //     <TerrainDataSource>
            //     </TerrainDataSource>
            // </TerrainDataSources>
            this._terrainDataSources = new List <TerrainDataSource>();
            XPathNodeIterator interatorTerrainDataSource = navigator.Select("TerrainDataSources/TerrainDataSource");

            while (interatorTerrainDataSource.MoveNext())
            {
                // Get <ConnectivityRule>
                XPathNavigator    navigatorTerrainDataSource = interatorTerrainDataSource.Current;
                TerrainDataSource terrainDataSource          = new TerrainDataSource(navigatorTerrainDataSource);
                this._terrainDataSources.Add(terrainDataSource);
            }

            // TerrainPyramids
            this._terrainPyramids = new List <TerrainPyramid>();
            string pyramidPath = null;

            switch (this._pyramidType)
            {
            case esriTerrainPyramidType.esriTerrainPyramidWindowSize:
                // <TerrainPyramidLevelWindowSizes>
                //    <TerrainPyramidLevelWindowSize>
                //    </TerrainPyramidLevelWindowSize>
                // </TerrainPyramidLevelWindowSizes>
                pyramidPath = "TerrainPyramidLevelWindowSizes/TerrainPyramidLevelWindowSize";
                break;

            case esriTerrainPyramidType.esriTerrainPyramidZTolerance:
                // <TerrainPyramidLevelZTols>
                //    <TerrainPyramidLevelZTol>
                //    </TerrainPyramidLevelZTol>
                // </TerrainPyramidLevelZTols>
                pyramidPath = "TerrainPyramidLevelZTols/TerrainPyramidLevelZTol";
                break;
            }
            XPathNodeIterator interatorTerrainPyramid = navigator.Select(pyramidPath);

            while (interatorTerrainPyramid.MoveNext())
            {
                // Get <ConnectivityRule>
                XPathNavigator navigatorTerrainPyramid = interatorTerrainPyramid.Current;
                TerrainPyramid terrainPyramid          = new TerrainPyramid(navigatorTerrainPyramid);
                this._terrainPyramids.Add(terrainPyramid);
            }

            // <TerrainID></TerrainID>
            XPathNavigator navigatorTerrainID = navigator.SelectSingleNode("TerrainID");

            if (navigatorTerrainID != null)
            {
                this._terrainID = navigatorTerrainID.ValueAsInt;
            }

            // <Version></Version>
            XPathNavigator navigatorVersion = navigator.SelectSingleNode("Version");

            if (navigatorVersion != null)
            {
                this._version = navigatorVersion.ValueAsInt;
            }
        }