public TerrainPyramid(TerrainPyramid prototype) : base(prototype) { this._pyramidLevelStatus = prototype.PyramidLevelStatus; this._pointCount = prototype.PointCount; this._maxScale = prototype.MaxScale; this._resolution = prototype.Resolution; }
// // 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; } }
// // 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; } }