zoukankan      html  css  js  c++  java
  • 基于BIM+GIS的管控平台

             平台基于BIM+GIS技术融合开发,支持集团、分公司、项目、工区、工点多级多项目管理。系统创新实现了基于BIM模式与传统模式的两种模式的项目管理手段,并实现了同一项目下两种模式的数据集成,兼顾了历史与革新,符合当前实际情况。将最新的BIM技术融入到业务管理过程中,为管理各方提供了安全、质量、进度、成本、文档等基于BIM技术的可视化数字化的项目管理手段,结合BIM模型技术应用,使工程项目管理技术手段更为先进。实现了GIS+BIM的多源数据融合,将宏观与微观进行结合,支持大范围复杂场景项目管理的业务需要。

      构件级计量计价

      以斯维尔BIM算量软件为基础,根据城市轨道工程计量计价规则,在项目管理平台中实现了量价一体化。系统创新实现了合同清单-项目计划-验工计价-周报-月报-年报的之间关键经营管理数据的分解与集成,化繁为简,实现了关键业务的数据闭环。系统实现了工点-工区-项目的多级项目管理以及项目-分公司-集团层多项目、多级别的企业级项目管理体系数据与流程互通,使工程项目管理高效、协同、智能。

    <html>
      <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
        <title>ImageryTileLayer - shaded relief renderer | Sample | ArcGIS API for JavaScript 4.19</title>
    
        <link rel="stylesheet" href="https://js.arcgis.com/4.19/esri/themes/light/main.css" />
        <script src="https://js.arcgis.com/4.19/"></script>
    
        <style>
          html,
          body,
          #viewDiv {
            padding: 0;
            margin: 0;
            height: 100%;
             100%;
          }
    
          #rendererDiv {
            padding: 10px;
             280px;
          }
    
          .slider {
            height: 40px;
             100%;
          }
        </style>
    
        <script>
          require([
            "esri/Map",
            "esri/views/MapView",
            "esri/layers/ImageryTileLayer",
            "esri/renderers/RasterShadedReliefRenderer",
            "esri/widgets/Slider",
            "esri/widgets/Expand",
            "esri/tasks/support/MultipartColorRamp"
          ], function(Map, MapView, ImageryTileLayer, RasterShadedReliefRenderer, Slider, Expand, MultipartColorRamp) {
    
            // set the hillshade type for the shaded relief renderer
            let hillshadeType = "traditional";
            const url = "https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer";
    
            // create a colorRamp
            const colorRamp = MultipartColorRamp.fromJSON({
              type: "multipart",
              colorRamps: [{
                fromColor: [175, 240, 233],
                toColor: [255, 255, 179]
              }, {
                fromColor: [255, 255, 179],
                toColor: [0, 128, 64]
              }, {
                fromColor: [0, 128, 64],
                toColor: [252, 186, 3]
              }, {
                fromColor: [252, 186, 3],
                toColor: [128, 0, 0]
              }, {
                fromColor: [120, 0, 0],
                toColor: [105, 48, 13]
              }, {
                fromColor: [105, 48, 13],
                toColor: [171, 171, 171]
              }, {
                fromColor: [171, 171, 171],
                toColor: [255, 252, 255]
              }]
            });
    
            // set the shaded relief renderer parameters
            const renderer = new RasterShadedReliefRenderer({
              altitude: 45,
              azimuth: 315,
              hillshadeType: hillshadeType,
              zFactor: 1,
              scalingType: "adjusted",
              colorRamp: colorRamp
            });
    
            const layer = new ImageryTileLayer({
              url: url,
              renderer: renderer
            });
    
            const map = new Map({
              basemap: "gray-vector",
              layers: [layer]
            });
    
            const view = new MapView({
              container: "viewDiv",
              map: map,
              zoom: 7,
              center: [-111.819, 37.111]
            });
    
            const expand = new Expand({
              view: view,
              content: document.getElementById("rendererDiv"),
              expanded: true,
              expandIconClass: "esri-icon-settings2"
            })
    
            view.ui.add(expand, "top-right");
    
            // this function will be called as user adjusts
            // the renderer parameters via UI
            function updateRenderer() {
              var renderer = layer.renderer.clone();
              var bandStat = layer.rasterInfo.statistics[0];
              renderer.hillshadeType = hillshadeType;
              switch (hillshadeType) {
                case "traditional":
                  renderer.zFactor = zFactorSlider.values[0];
                  renderer.altitude = altitudeSlider.values[0];
                  renderer.azimuth = azimuthSlider.values[0];
                  break;
                case "multi-directional":
                  renderer.zFactor = zFactorSlider.values[0];
                  break;
              }
              layer.renderer = renderer;
            }
    
            // listen to hillshade dropdown change event and update the renderer
            // to reflect the hillshade type.
            const hillshadeTypeSelect = document.getElementById("hillshadeType");
            hillshadeTypeSelect.addEventListener("change", function() {
              if (!layer.loaded) {
                return;
              }
              hillshadeType = hillshadeTypeSelect.value;
              changeHillshadeType(hillshadeType);
            });
    
            function changeHillshadeType(hillshadeType) {
              switch (hillshadeType) {
                case "traditional":
                  document.getElementById("traditionalStuff").style = "";
                  break;
                case "multi-directional":
                 document.getElementById("traditionalStuff").style = "display: none;";
                  break;
              }
              updateRenderer();
            }
    
            // listen to z factor slider's thumb change and drag events
            const zFactorLabel = document.getElementById("zFactorLabel");
            const zFactorSlider = new Slider({
              container: "zFactor-slider",
              min: 1,
              max: 10,
              values: [1],
              steps: 1,
              snapOnClickEnabled: false,
              visibleElements: {
                labels: true,
                rangeLabels: true
              }
            });
            zFactorSlider.on(["thumb-change", "thumb-drag"], updateRenderer);
    
            // listen to altitude slider's thumb change and drag events
            const altitudeSlider = new Slider({
              container: "altitude-slider",
              min: 0,
              max: 90,
              values: [45],
              steps: 1,
              snapOnClickEnabled: false,
              visibleElements: {
                labels: true,
                rangeLabels: true
              }
            });
            altitudeSlider.on(["thumb-change", "thumb-drag"], updateRenderer);
    
            // listen to altitude slider's thumb change and drag events
            const azimuthSlider = new Slider({
              container: "azimuth-slider",
              min: 0,
              max: 360,
              values: [315],
              steps: 5,
              snapOnClickEnabled: false,
              visibleElements: {
                labels: true,
                rangeLabels: true
              }
            });
            azimuthSlider.on(["thumb-change", "thumb-drag"], updateRenderer);
    
    
            // make the renderer grayscale or use the colorramp
            var colorRampCheckBox = document.getElementById("tinted");
            colorRampCheckBox.addEventListener("click", function(val) {
              if (!layer.loaded) {
                return;
              }
              var renderer = layer.renderer.clone();
              renderer.colorRamp = colorRampCheckBox.checked ? colorRamp : null;
              layer.renderer = renderer;
            });
    
            // adjust the scalingType for the renderer
            var adjustBox = document.getElementById("adjust");
            adjustBox.addEventListener("click", function(val) {
              if (!layer.loaded) {
                return;
              }
              var renderer = layer.renderer.clone();
              renderer.scalingType = adjustBox.checked ? "adjusted" : "none";
              layer.renderer = renderer;
            });
          });
        </script>
      </head>
    
      <body>
        <div id="viewDiv"></div>
        <div id="rendererDiv" class="esri-widget">
          <h3 class="esri-widget__heading">Shaded Relief Parameters</h3>
          <label class="esri-feature-form__label">Select type</label>
          <select id="hillshadeType" class="esri-input esri-select">
            <option value="traditional" selected>traditional</option>
            <option value="multi-directional">multi-directional</option>
          </select>
          <br/>
          <label id="zFactorLabel" class="esri-feature-form__label">Exaggeration Factor:</label>
          <div id="zFactor-slider" class="slider"></div>
          <div id="traditionalStuff">
            <label id="altitudeLabel" class="esri-feature-form__label">Sun Altitude:</label>
            <div id="altitude-slider" class="slider"></div>
            <label id="azimuthLabel" class="esri-feature-form__label">Sun Azimuth:</label>
            <div id="azimuth-slider" class="slider"></div>
          </div>
          <input type="checkbox" id="tinted" checked="true"/><label>Tinted hillshade</label><br/>
          <input type="checkbox" id="adjust" checked="true"/><label>Adjust for large scale</label>
        </div>
      </body>
    </html>


    技术交流 省涯 QQ:2252224326 2252224326@qq.com 版权所有 http://blog.sina.com.cn/u/6029512413
  • 相关阅读:
    Typora入门使用
    什么是Structed Streaming?
    Spark的join什么情况下可以避免shuffle?
    spark Executor启动过程分析
    在IDEA中使用Git
    Git和SVN的区别
    Flink on Yarn的两种模式
    如何查看执行计划
    SQL Server 堆表与栈表的对比(大表)
    SQL Server中CURD语句的锁流程分析
  • 原文地址:https://www.cnblogs.com/shengya/p/14931799.html
Copyright © 2011-2022 走看看