OpenGIS应用(1)

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta http-equiv="refresh" content="300"> <!--每隔300秒自动刷新-->
    <title>平面图</title>
    <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="ext/ext-all.js"></script>
    <script type="text/javascript" src="OpenLayers/OpenLayers.js"></script>
    <script type="text/javascript" src="geoext/lib/GeoExt.js"></script>
    <script type="text/javascript" src="js/jeegoocontext_1_3/jquery-1.3.2.min.js"></script>
    <script type="text/javascript" src="js/GeoWebCache.js"></script>
    <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css">
    <script type="text/javascript">
        var mapSRS,jpegFormat,geoserverWFSUrl,featureNameSpace;
      
      try{
          var map;
        var mapPanel,store,gridPanel,mainPanel;
        var mapUnits;
        var geoserverWMTSUrl;
        
        Ext.onReady(function() {
            mapSRS = "EPSG:2385",jpegFormat = "image/jpeg",mapUnits = "meters";
          geoserverWFSUrl = "http://192.168.122.114:8989/geoserver/wfs";
          geoserverWMTSUrl = "http://192.168.122.114:8989/geoserver/gwc/service/wms";
          featureNameSpace = "http://localhost:8989/";
          
          var mode = 0;
          
          switch (mode) {
              case 0:  // 调用WMTS
                var mapBounds = new OpenLayers.Bounds(1474755,576879,1537217,599560);
                var options = {
                  resolutions: [82.83203125,41.416015625,20.7080078125],
                projection: new OpenLayers.Projection(mapSRS),
                units: mapUnits,
                maxExtent: mapBounds
              };
              
              map = new OpenLayers.Map("map",options);
              
              var baseLayer = new OpenLayers.Layer.WMS(
                  "底图",
                geoserverWMTSUrl, {
                    layers: "seari:nb7_extent",
                    format: jpegFormat
                },{
                    tileSize: new OpenLayers.Size(256,256),
                    displayInLayerSwitcher: false
                }
              );
              map.addLayers([baseLayer]);
                break;
          }
          // 添加图层
          var layer1 = CreateLayer("新建墙体","nb7_layer1","#00946A");  // 74
          var layer2 = CreateLayer("建筑墙体","nb7_layer2","#000482");  // 175
          //var layer3 = CreateLayer("顶面主要造型","nb7_layer3","#AB00AB")  // 97
          var layer4 = CreateLayer("玻璃","nb7_layer4","#009696");  // 136
          var layer5 = CreateLayer("景观","nb7_layer5","#4CE600");  // 2367
          var layer6 = CreateLayer("通-尺寸","nb7_layer6","#009E08");  // 750
          var layer7 = CreateLayer("平面洁具","nb7_layer7","#A65B00");  // 288
          var layer8 = CreateLayer("地面填充","nb7_layer8","#004799");  // 3
          var layer9 = CreateLayer("完成厚面","nb7_layer9","#A32E00");  // 10
          var layer10 = CreateLayer("消防楼梯","nb7_layer10","#991700");  // 174
          var layer11 = CreateLayer("活动家具","nb7_layer11","#05008F");  // 588
          var layer12 = CreateLayer("门套","nb7_layer12","#001E82");  // 38
          var layer13 = CreateLayer("柱体框线","nb7_layer13","#009C9C");  // 139
          var layer14 = CreateLayer("门","nb7_layer14","#828282");  // 1193
          var layer15 = CreateLayer("电梯桥箱","nb7_layer15","#329E00");  // 48
          
          // 面图层
          var layer0 = CreateThematicLayer("客流分布","nb7_floor");
          map.addLayers([layer0,layer1,layer2,layer4,layer5,layer6,layer7,layer8,layer9,layer10,layer11,layer12,layer13,layer14,layer15]);
          
          map.zoomToMaxExtent();
          
          mapPanel = new GeoExt.MapPanel({
            title: "平面图",
            region: "center",
            height: 650,
            width: 900,
            map: map
          });
          
          store = new GeoExt.data.FeatureStore({
            layer: layer0,
            fields: [
              {name: 'RoomNum', tyep: 'string'},
              {name: 'Num', tyep: 'integer'}
            ],
            proxy: new GeoExt.data.ProtocolProxy({
              protocol: new OpenLayers.Protocol.WFS({
                version: "1.1.0",
                  url: geoserverWFSUrl,
                  featureType: "nb7_floor",
                  featureNS: featureNameSpace,
                  srsName: mapSRS,
                  geometryName: "the_geom"
              })
            }),
            autoLoad: true
          });
          
          store.sort("RoomNum","ASC");  // 排序
          
          gridPanel = new Ext.grid.GridPanel({
            title: "客流统计",
            region: "east",
            store: store,
            width: 150,
            columns: [{
              header: "房间号",
              width: 60,
              dataIndex: "RoomNum"
            },{
              header: "客流数(人)",
              width: 90,
              dataIndex: "Num"
            }]
          });
          
          mainPanel = new Ext.Panel({
                      renderTo: "mainPanel",
                      layout: "border",
            height: 650,
            width: 1050,
            items: [mapPanel,gridPanel]
                    });
          
          var treeControl = new Ext.tree.TreePanel({
            renderTo: "toc",
            title: "图层控制",
            border: true,
            region: "west",
            width: 150,
            collapsible: true,  // 折叠TreePanel
            collapseMode: "mini",
            root: new GeoExt.tree.LayerContainer({
              text: "平面图",
              layerStore: mapPanel.layers,
              leaf: false,
              expanded: true
            }),
            rootVisible: true,  // 显示根节点
            lines: true  // 显示根节点与子节点的关联线
          });
        });        
      } catch (e) {
        alert(e);
      }
      
      function CreateLayer(layerName,featType,color){
        var styleMap = new OpenLayers.StyleMap({
          "default": new OpenLayers.Style({
            "strokeColor": color,
            "strokeWidth": 0.8
          })
        });
        var layer = new OpenLayers.Layer.Vector(layerName,{
            strategies: [new OpenLayers.Strategy.BBOX()],
            projection: new OpenLayers.Projection(mapSRS),
            protocol: new OpenLayers.Protocol.WFS({
              version: "1.1.0",
              url: geoserverWFSUrl,
              featureType: featType,
              featureNS: featureNameSpace,
              srsName: mapSRS,
              geometryName: "the_geom"
            }),
            styleMap: styleMap
          }
        );
        return layer;
      }
      
      function CreateThematicLayer(layerName,featType){
          // 创建客流分布专题图层
        var rule0 = new OpenLayers.Rule({
            filter: new OpenLayers.Filter.Comparison({
              type: OpenLayers.Filter.Comparison.EQUAL_TO,
            property: "Num",
            value: 0
          }),
          symbolizer: {
              fillColor: "#C3C3C3",
            fillOpacity: .6,
            label: '${Num}',
            fontColor: "#000000",
            strockColor: "#6E6E6E",
            strockWidth: 1
          }
        });
        
        var rule1 = new OpenLayers.Rule({
            filter: new OpenLayers.Filter.Comparison({
              type: OpenLayers.Filter.Comparison.BETWEEN,
            property: "Num",
            lowerBoundary: 1,
            upperBoundary: 5
          }),
          symbolizer: {
              fillColor: "#38A800",
            fillOpacity: .6,
            label: '${Num}',
            fontColor: "#000000",
            strockColor: "#6E6E6E",
            strockWidth: 1
          }
        });
        
        var rule2 = new OpenLayers.Rule({
            filter: new OpenLayers.Filter.Comparison({
              type: OpenLayers.Filter.Comparison.BETWEEN,
            property: "Num",
            lowerBoundary: 5,
            upperBoundary: 10
          }),
          symbolizer: {
              fillColor: "#8BD100",
            fillOpacity: .6,
            label: '${Num}',
            fontColor: "#000000",
            strockColor: "#6E6E6E",
            strockWidth: 1
          }
        });
        
        var rule3 = new OpenLayers.Rule({
            filter: new OpenLayers.Filter.Comparison({
              type: OpenLayers.Filter.Comparison.BETWEEN,
            property: "Num",
            lowerBoundary: 10,
            upperBoundary: 15
          }),
          symbolizer: {
              fillColor: "#FFFF00",
            fillOpacity: .6,
            label: '${Num}',
            fontColor: "#000000",
            strockColor: "#6E6E6E",
            strockWidth: 1
          }
        });
        
        var rule4 = new OpenLayers.Rule({
            filter: new OpenLayers.Filter.Comparison({
              type: OpenLayers.Filter.Comparison.BETWEEN,
            property: "Num",
            lowerBoundary: 15,
            upperBoundary: 20
          }),
          symbolizer: {
              fillColor: "#FF8000",
            fillOpacity: .6,
            label: '${Num}',
            fontColor: "#000000",
            strockColor: "#6E6E6E",
            strockWidth: 1
          }
        });
        
        var rule5 = new OpenLayers.Rule({
            filter: new OpenLayers.Filter.Comparison({
              type: OpenLayers.Filter.Comparison.GREATER_THAN,
            property: "Num",
            value: 20
          }),
          symbolizer: {
              fillColor: "#FF0000",
            fillOpacity: .6,
            label: '${Num}',
            fontColor: "#000000",
            strockColor: "#6E6E6E",
            strockWidth: 1
          }
        });
        
        var styles = new OpenLayers.Style();
        styles.addRules([rule0,rule1,rule2,rule3,rule4,rule5]);
        
        var styleMap = new OpenLayers.StyleMap({
            'default': styles
        });
        
        var layer = new OpenLayers.Layer.Vector(layerName,{
            strategies: [new OpenLayers.Strategy.BBOX()],
            projection: new OpenLayers.Projection(mapSRS),
            protocol: new OpenLayers.Protocol.WFS({
              version: "1.1.0",
              url: geoserverWFSUrl,
              featureType: featType,
              featureNS: featureNameSpace,
              srsName: mapSRS,
              geometryName: "the_geom"
            }),
            styleMap: styleMap,
            attribution: "<img src='legend.png' />"
          }
        );
        return layer;
      }
    </script>
  </head>
  <body>
    <table style="width:100%;height:100%">
      <tr>
        <td style="width: 10%;height: 100%">
          <div id="toc" style="width: 100%;height: 100%"></div>
        </td>
        <td style="width: 90%;height: 100%">
          <div id="mainPanel" style="width: 100%;height: 100%"></div>
        </td>
      </tr>
    </table>
  </body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值