ArcGIS Flex API 调用天地图和Google地图服务

Esri为我们提供了TiledMapServiceLayer类,这个类正是所有瓦片地图服务都必须继承的类,像ArcGISTiledMapServiceLayer, OpenStreetMapLayer, VETiledLayer等esri提供的瓦片类都是继承了该类的,所以我们要扩展该TiledMapServiceLayer类

一.调用天地图服务(SXGeoTileLayer类)

  1. import com.esri.ags.SpatialReference;  
  2. import com.esri.ags.geometry.Extent;  
  3. import com.esri.ags.geometry.MapPoint;  
  4. import com.esri.ags.layers.supportClasses.LOD;  
  5. import com.esri.ags.layers.supportClasses.TileInfo;  
  6. import com.esri.ags.layers.TiledMapServiceLayer;  
  7. import com.esri.ags.layers.TiledMapServiceLayer;  
  8.   
  9. import flash.geom.Point;  
  10. import flash.net.URLRequest;  
  11.   
  12. /**  
  13.  * SXGeoTileLayer   
  14.  */  
  15. public class SXGeoTileLayer extends TiledMapServiceLayer  
  16. {  
  17.  //--------------------------------------------------------------------------  
  18.  //  
  19.  //  Constructor  
  20.  //  
  21.  //--------------------------------------------------------------------------  
  22.    
  23.  /**  
  24.   * Creates a new PortlandTiledMapServiceLayer object.  
  25.   */  
  26.  public function SXGeoTileLayer()  
  27.  {  
  28.   super();  
  29.     
  30.   buildTileInfo(); // to create our hardcoded tileInfo   
  31.     
  32.   setLoaded(true); // Map will only use loaded layers  
  33.  }  
  34.    
  35.  //--------------------------------------------------------------------------  
  36.  //  
  37.  //  Variables  
  38.  //  
  39.  //--------------------------------------------------------------------------  
  40.    
  41.  private var  wkid:int = 4326;  
  42.  private var _tileInfo:TileInfo = new TileInfo();  // see buildTileInfo()   
  43.  private var _url:String = new String();  
  44.  //private var _wmsLayer:String = new String();   
  45.    
  46.  //--------------------------------------------------------------------------  
  47.  //  
  48.  //  Overridden properties  
  49.  //      fullExtent()  
  50.  //      initialExtent()  
  51.  //      spatialReference()  
  52.  //      tileInfo()  
  53.  //      units()  
  54.  //  
  55.  //--------------------------------------------------------------------------  
  56.    
  57.    
  58.  //----------------------------------  
  59.  //  fullExtent  
  60.  //  - required to calculate the tiles to use  
  61.  //----------------------------------  
  62.    
  63.  override public function get fullExtent():Extent  
  64.  {  
  65.   return new Extent(-180, -90, 180, 90, new SpatialReference(4326));  
  66.   //return new Extent(65.94,18.84,137.74,62.85, new SpatialReference(4326));  
  67.  }  
  68.    
  69.  //----------------------------------  
  70.  //  initialExtent  
  71.  //  - needed if Map doesn't have an extent  
  72.  //----------------------------------  
  73.    
  74.  override public function get initialExtent():Extent  
  75.  {  
  76.   return new Extent(-124.731422,24.955967,-66.969849, 49.371735,new SpatialReference(4326));  
  77.   //return new Extent(112.48,47.77,112.60,47.97, new SpatialReference(4326));  
  78.  }  
  79.    
  80.  //----------------------------------  
  81.  //  spatialReference  
  82.  //  - needed if Map doesn't have a spatialReference  
  83.  //----------------------------------  
  84.    
  85.  override public function get spatialReference():SpatialReference  
  86.  {  
  87.   return new SpatialReference(4326);  
  88.  }  
  89.    
  90.  //----------------------------------  
  91.  //  tileInfo  
  92.  //----------------------------------  
  93.    
  94.  override public function get tileInfo():TileInfo  
  95.  {     
  96.   return _tileInfo;  
  97.  }  
  98.    
  99.  //----------------------------------  
  100.  //  units  
  101.  //  - needed if Map doesn't have it set  
  102.  //----------------------------------  
  103.    
  104.  override public function get units():String  
  105.  {  
  106.   return "esriDecimalDegrees";  
  107.  }  
  108.    
  109.  //--------------------------------------------------------------------------  
  110.  //  
  111.  //  Overridden methods  
  112.  //      getTileURL(level:Number, row:Number, col:Number):URLRequest  
  113.  //  
  114.  //--------------------------------------------------------------------------  
  115.    
  116.  override protected function getTileURL(level:Number, row:Number, col:Number):URLRequest  
  117.  {  
  118.   var url:String ;  
  119.   url = _url  + "&X=" + col.toString() + "&Y=" + row.toString()+ "&L="+ level.toString();  
  120.   return new URLRequest(url) ;  
  121.  }  
  122.    
  123.  //--------------------------------------------------------------------------  
  124.  //  
  125.  //  Private Methods  
  126.  //  
  127.  //--------------------------------------------------------------------------  
  128.    
  129.  private function buildTileInfo():void  
  130.  {  
  131.   _tileInfo.height = 256;  
  132.   _tileInfo.width = 256;  
  133.   _tileInfo.origin = new MapPoint(-180, 90);  
  134.   _tileInfo.spatialReference = new SpatialReference(4326);  
  135.   _tileInfo.lods = [      
  136.    //new LOD(0, 1.40625, 590995197.1416691),  
  137.    new LOD(1, 0.703125, 295497598.5708346),  
  138.    new LOD(2, 0.3515625, 147748799.2854173),  
  139.    new LOD(3, 0.17578125, 73874399.64270864),  
  140.    new LOD(4, 0.087890625, 36937199.82135432),  
  141.    new LOD(5, 0.0439453125, 18468599.91067716),  
  142.    new LOD(6, 0.02197265625, 9234299.95533858),  
  143.      
  144.    new LOD(7, 0.010986328125, 4617149.97766929),  
  145.    new LOD(8, 0.0054931640625, 2308574.98883465),  
  146.    new LOD(9, 0.00274658203124999, 1154287.49441732),  
  147.    new LOD(10, 0.001373291015625, 577143.747208662),  
  148.    new LOD(11, 0.0006866455078125, 288571.873604331),  
  149.    new LOD(12, 0.000343322753906249, 144285.936802165),  
  150.    new LOD(13, 0.000171661376953125, 72142.9684010827),  
  151.    new LOD(14, 0.0000858306884765626, 36071.4842005414),  
  152.    new LOD(15, 0.0000429153442382813, 18035.7421002707),  
  153.    new LOD(16, 0.0000214576721191406, 9017.87105013534),  
  154.   ];  
  155.  }  
  156.    
  157.  private function padString(text:String, size:int, ch:String):String  
  158.  {  
  159.   while (text.length < size)  
  160.   {  
  161.    text = ch + text;  
  162.   }  
  163.   return text;  
  164.  }  
  165.  public function set url(val:String):void  
  166.  {  
  167.   this._url = val;  
  168.  }  
  169. }  
使用方法:
  1. var wmslayer:SXGeoTileLayer=new SXGeoTileLayer();  
  2. wmslayer.url=" http://tile0.tianditu.com/DataServer?T=A0610_ImgAnno";  
  3. map.addLayer(wmslayer);  


二.调用Google地图服务
  1.   import com.esri.ags.SpatialReference;  
  2.   import com.esri.ags.geometry.Extent;  
  3.   import com.esri.ags.geometry.MapPoint;  
  4.   import com.esri.ags.layers.TiledMapServiceLayer;  
  5.   import com.esri.ags.layers.supportClasses.*;  
  6.      
  7.   import flash.net.URLRequest;  
  8.      
  9.   //扩展TiledMapServiceLayer图层实现加载google地图  
  10.   public class GoogleMapLayer extends TiledMapServiceLayer  
  11.   {  
  12.       private var _tileInfo:TileInfo=new TileInfo();  
  13.       private var _baseURL:String="";  
  14.          
  15.       public function GoogleMapLayer()  
  16.       {  
  17.           super();  
  18.           buildTileInfo();  
  19.           setLoaded(true);  
  20.       }  
  21.          
  22.       override public function get fullExtent():Extent  
  23.       {  
  24.           return new Extent(-20037508.342787, -20037508.342787, 20037508.342787, 20037508.342787, new SpatialReference(102113));  
  25.       }  
  26.          
  27.       override public function get initialExtent():Extent  
  28.       {  
  29.           return new Extent(-20037508.342787, -20037508.342787, 20037508.342787, 20037508.342787, new SpatialReference(102113));  
  30.       }  
  31.          
  32.       override public function get spatialReference():SpatialReference  
  33.       {  
  34.           return new SpatialReference(102113);  
  35.       }  
  36.          
  37.       override public function get tileInfo():com.esri.ags.layers.supportClasses.TileInfo  
  38.       {  
  39.           return _tileInfo;  
  40.       }  
  41.          
  42.       //获取矢量地图  
  43.       override protected function getTileURL(level:Number, row:Number, col:Number):URLRequest  
  44.       {  
  45.           var url:String=_baseURL&+  
  46.               "x=" + col + "&" +  
  47.               "y=" + row + "&" +  
  48.               "z=" + level+ "&s=";  
  49.              
  50.           return new URLRequest(url);  
  51.       }  
  52.       public function set url(val:String):void  
  53.   
  54. this._baseURL = val;  
  55.   
  56.       private function buildTileInfo():void  
  57.       {  
  58.           _tileInfo.height=256;  
  59.           _tileInfo.width=256;  
  60.           _tileInfo.origin=new MapPoint(-20037508.342787, 20037508.342787);  
  61.           _tileInfo.spatialReference=new SpatialReference(102113);  
  62.           _tileInfo.lods = [  
  63.               new LOD(0, 156543.033928, 591657527.591555),  
  64.               new LOD(1, 78271.5169639999, 295828763.795777),  
  65.               new LOD(2, 39135.7584820001, 147914381.897889),  
  66.               new LOD(3, 19567.8792409999, 73957190.948944),  
  67.               new LOD(4, 9783.93962049996, 36978595.474472),  
  68.               new LOD(5, 4891.96981024998, 18489297.737236),  
  69.               new LOD(6, 2445.98490512499, 9244648.868618),  
  70.               new LOD(7, 1222.99245256249, 4622324.434309),  
  71.               new LOD(8, 611.49622628138, 2311162.217155),  
  72.               new LOD(9, 305.748113140558, 1155581.108577),  
  73.               new LOD(10, 152.874056570411, 577790.554289),  
  74.               new LOD(11, 76.4370282850732, 288895.277144),  
  75.               new LOD(12, 38.2185141425366, 144447.638572),  
  76.               new LOD(13, 19.1092570712683, 72223.819286),  
  77.               new LOD(14, 9.55462853563415, 36111.909643),  
  78.               new LOD(15, 4.77731426794937, 18055.954822),  
  79.               new LOD(16, 2.38865713397468, 9027.977411),  
  80.               new LOD(17, 1.19432856685505, 4513.988705),  
  81.               new LOD(18, 0.597164283559817, 2256.994353),  
  82.               new LOD(19, 0.298582141647617, 1128.497176)  
  83.           ];  
  84.       }  
  85.   }  

使用方法:

  1. var wmslayer:GoogleMapLayer =new GoogleMapLayer();  
  2. wmslayer.url="http://khm2.google.com/kh/v=38&hl=zh-CN";  
  3. map.addLayer(wmslayer); 
内容概要:本文围绕“考虑电动汽车聚合可调节能力的含波动性电源电氢耦合系统多目标优化运行”展开研究,提出了一种基于Matlab代码实现的多目标优化模型。该模型深度融合电-氢耦合系统与高比例波动性可再生能源(如风电、光伏),充分挖掘电动汽车(EV)集群作为移动储能单元的灵活调节潜力,通过聚合调控提升系统对新能源的消纳能力与运行经济性。研究系统构建了电动汽车可调度能力、电解水制氢与储氢动态过程、多能源协同互补的优化调度框架,并结合智能优化算法实现经济性、低碳性与运行稳定性等多重目标的协同优化。文中配套提供了完整的Matlab仿真代码、相关数据及可能的论文支撑材料,极大地方便了模型的复现、验证与后续深化研究。; 适合人群:具备电力系统、综合能源系统、优化理论或新能源技术等相关领域基础知识的研究生、科研人员,以及从事新型电力系统规划、清洁能源消纳与智慧能源管理的工程技术人员。; 使用场景及目标:①开展高渗透率可再生能源接入下的综合能源系统多目标优化调度研究;②探究电动汽车集群在电网削峰填谷、平抑新能源出力波动及提供辅助服务方面的应用价值与潜力;③学习并掌握电氢耦合系统的建模方法、多目标优化求解技术及其在Matlab/Simulink环境下的仿真实现流程。; 阅读建议:此资源不仅提供可运行的代码,更蕴含了前沿的科研思路与创新方法,建议读者结合所提供的代码、数据与可能的论文文档,系统性地学习从问题建模、算法设计到仿真分析的完整科研过程,并重点关注其中关于需求侧资源聚合、多能互补协同与绿色低碳运行的核心理念。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值