Пример #1
0
 public Terrain(SerializationInfo info, StreamingContext context) : base(info, context)
 {
     this._configurationKeyword = info.GetString("configurationKeyword");
     this._extent                       = info.GetValue("extent", typeof(Extent)) as Extent;
     this._spatialReference             = info.GetValue("spatialReference", typeof(SpatialReference)) as SpatialReference;
     this._pyramidType                  = (esriTerrainPyramidType)Enum.Parse(typeof(esriTerrainPyramidType), info.GetString("pyramidType"), true);
     this._windowSizeMethod             = (esriTerrainWindowSizeMethod)Enum.Parse(typeof(esriTerrainWindowSizeMethod), info.GetString("windowSizeMethod"), true);
     this._windowSizeZThreshold         = info.GetDouble("windowSizeZThreshold");
     this._windowSizeZThresholdStrategy = (esriTerrainZThresholdStrategy)Enum.Parse(typeof(esriTerrainZThresholdStrategy), info.GetString("windowSizeZThresholdStrategy"), true);
     this._tileSize                     = info.GetDouble("tileSize");
     this._maxShapeSize                 = info.GetInt32("maxShapeSize");
     this._maxOverviewSize              = info.GetInt32("maxOverviewSize");
     this._extentDomain                 = info.GetValue("extentDomain", typeof(Extent)) as Extent;
     this._extentAOI                    = info.GetValue("extentAOI", typeof(Extent)) as Extent;
     this._terrainDataSources           = (List <TerrainDataSource>)info.GetValue("terrainDataSources", typeof(List <TerrainDataSource>));
     this._terrainPyramids              = (List <TerrainPyramid>)info.GetValue("terrainPyramids", typeof(List <TerrainPyramid>));
     this._terrainID                    = info.GetInt32("terrainID");
     this._version                      = info.GetInt32("version");
 }
Пример #2
0
 public Terrain(Terrain prototype) : base(prototype)
 {
     this._configurationKeyword = prototype.ConfigurationKeyword;
     if (prototype.Extent != null)
     {
         this._extent = prototype.Extent.Clone() as Extent;
     }
     if (prototype.SpatialReference != null)
     {
         this._spatialReference = prototype.SpatialReference.Clone() as SpatialReference;
     }
     this._pyramidType                  = prototype.PyramidType;
     this._windowSizeMethod             = prototype.WindowSizeMethod;
     this._windowSizeZThreshold         = prototype.WindowSizeZThreshold;
     this._windowSizeZThresholdStrategy = prototype.WindowSizeZThresholdStrategy;
     this._tileSize        = prototype.TileSize;
     this._maxShapeSize    = prototype.MaxShapeSize;
     this._maxOverviewSize = prototype.MaxOverviewSize;
     if (prototype.ExtentDomain != null)
     {
         this._extentDomain = prototype.ExtentDomain.Clone() as Extent;
     }
     if (prototype.ExtentAOI != null)
     {
         this._extentAOI = prototype.ExtentAOI.Clone() as Extent;
     }
     this._terrainDataSources = new List <TerrainDataSource>();
     foreach (TerrainDataSource terrainDataSource in prototype.TerrainDataSources)
     {
         this._terrainDataSources.Add((TerrainDataSource)terrainDataSource.Clone());
     }
     this._terrainPyramids = new List <TerrainPyramid>();
     foreach (TerrainPyramid terrainPyramid in prototype.TerrainPyramids)
     {
         this._terrainPyramids.Add((TerrainPyramid)terrainPyramid.Clone());
     }
     this._terrainID = prototype.TerrainID;
     this._version   = prototype.Version;
 }
        public void WriteXml(XmlWriter writer, esriTerrainPyramidType pyramidType)
        {
            switch (pyramidType)
            {
            case esriTerrainPyramidType.esriTerrainPyramidWindowSize:
                //  <TerrainPyramidLevelWindowSize xsi:type="esri:TerrainPyramidLevelWindowSize">
                //  </TerrainPyramidLevelWindowSize>
                writer.WriteStartElement(Xml.TERRAINPYRAMIDLEVELWINDOWSIZE);
                writer.WriteAttributeString(Xml._XSI, Xml._TYPE, null, Xml._TERRAINPYRAMIDLEVELWINDOWSIZE);
                this.WriteInnerXml(writer);
                writer.WriteEndElement();
                break;

            case esriTerrainPyramidType.esriTerrainPyramidZTolerance:
                // <TerrainPyramidLevelZTol xsi:type="esri:TerrainPyramidLevelZTol">
                // </TerrainPyramidLevelZTol>
                writer.WriteStartElement(Xml.TERRAINPYRAMIDLEVELZTOL);
                writer.WriteAttributeString(Xml._XSI, Xml._TYPE, null, Xml._TERRAINPYRAMIDLEVELZTOL);
                this.WriteInnerXml(writer);
                writer.WriteEndElement();
                break;
            }
        }
Пример #4
0
 public void WriteXml(XmlWriter writer, esriTerrainPyramidType pyramidType) {
     switch (pyramidType) {
         case esriTerrainPyramidType.esriTerrainPyramidWindowSize:
             //  <TerrainPyramidLevelWindowSize xsi:type="esri:TerrainPyramidLevelWindowSize">
             //  </TerrainPyramidLevelWindowSize>
             writer.WriteStartElement(Xml.TERRAINPYRAMIDLEVELWINDOWSIZE);
             writer.WriteAttributeString(Xml._XSI, Xml._TYPE, null, Xml._TERRAINPYRAMIDLEVELWINDOWSIZE);
             this.WriteInnerXml(writer);
             writer.WriteEndElement();
             break;
         case esriTerrainPyramidType.esriTerrainPyramidZTolerance:
             // <TerrainPyramidLevelZTol xsi:type="esri:TerrainPyramidLevelZTol">
             // </TerrainPyramidLevelZTol>
             writer.WriteStartElement(Xml.TERRAINPYRAMIDLEVELZTOL);
             writer.WriteAttributeString(Xml._XSI, Xml._TYPE, null, Xml._TERRAINPYRAMIDLEVELZTOL);
             this.WriteInnerXml(writer);
             writer.WriteEndElement();
             break;
     }
 }
Пример #5
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;
            }
        }
Пример #6
0
 public Terrain(Terrain prototype) : base(prototype) {
     this._configurationKeyword = prototype.ConfigurationKeyword;
     if (prototype.Extent != null) {
         this._extent = prototype.Extent.Clone() as Extent;
     }
     if (prototype.SpatialReference != null) {
         this._spatialReference = prototype.SpatialReference.Clone() as SpatialReference;
     }
     this._pyramidType = prototype.PyramidType;
     this._windowSizeMethod = prototype.WindowSizeMethod;
     this._windowSizeZThreshold = prototype.WindowSizeZThreshold;
     this._windowSizeZThresholdStrategy = prototype.WindowSizeZThresholdStrategy;
     this._tileSize = prototype.TileSize;
     this._maxShapeSize = prototype.MaxShapeSize;
     this._maxOverviewSize = prototype.MaxOverviewSize;
     if (prototype.ExtentDomain != null) {
         this._extentDomain = prototype.ExtentDomain.Clone() as Extent;
     }
     if (prototype.ExtentAOI != null) {
         this._extentAOI = prototype.ExtentAOI.Clone() as Extent;
     }
     this._terrainDataSources = new List<TerrainDataSource>();
     foreach (TerrainDataSource terrainDataSource in prototype.TerrainDataSources) {
         this._terrainDataSources.Add((TerrainDataSource)terrainDataSource.Clone());
     }
     this._terrainPyramids = new List<TerrainPyramid>();
     foreach (TerrainPyramid terrainPyramid in prototype.TerrainPyramids) {
         this._terrainPyramids.Add((TerrainPyramid)terrainPyramid.Clone());
     }
     this._terrainID = prototype.TerrainID;
     this._version = prototype.Version;
 }
Пример #7
0
 public Terrain(SerializationInfo info, StreamingContext context) : base(info, context) {
     this._configurationKeyword = info.GetString("configurationKeyword");
     this._extent = info.GetValue("extent", typeof(Extent)) as Extent;
     this._spatialReference = info.GetValue("spatialReference", typeof(SpatialReference)) as SpatialReference;
     this._pyramidType = (esriTerrainPyramidType)Enum.Parse(typeof(esriTerrainPyramidType), info.GetString("pyramidType"), true);
     this._windowSizeMethod = (esriTerrainWindowSizeMethod)Enum.Parse(typeof(esriTerrainWindowSizeMethod), info.GetString("windowSizeMethod"), true);
     this._windowSizeZThreshold = info.GetDouble("windowSizeZThreshold");
     this._windowSizeZThresholdStrategy = (esriTerrainZThresholdStrategy)Enum.Parse(typeof(esriTerrainZThresholdStrategy), info.GetString("windowSizeZThresholdStrategy"), true);
     this._tileSize = info.GetDouble("tileSize");
     this._maxShapeSize = info.GetInt32("maxShapeSize");
     this._maxOverviewSize = info.GetInt32("maxOverviewSize");
     this._extentDomain = info.GetValue("extentDomain", typeof(Extent)) as Extent;
     this._extentAOI = info.GetValue("extentAOI", typeof(Extent)) as Extent;
     this._terrainDataSources = (List<TerrainDataSource>)info.GetValue("terrainDataSources", typeof(List<TerrainDataSource>));
     this._terrainPyramids = (List<TerrainPyramid>)info.GetValue("terrainPyramids", typeof(List<TerrainPyramid>));
     this._terrainID = info.GetInt32("terrainID");
     this._version = info.GetInt32("version");
 }
Пример #8
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;
            }
        }