• ArcGIS API for Silverlight/WPF 2.1学习笔记(一)——精简版


    一、安装

    1、Visual Studio:

    (1)Visual Studio 2010或Visual Web Developer Express 2010

    (2)Silverlight 4 Tools for Visual Studio (add-on) :仅Silverlight 4支持

    (3)Expression Blend 4 SDK for Silverlight (also included with Expression Blend 4)

    (Necessary for behavior and Silverlight support)

    2、Expression Blend:

    (1)Expression Blend 4:Included with Expression Studio editions

    3、其它附加(非必须安装)

    (1)Deep Zoom Composer

    (2)Silverlight Toolkit

    二、开始

    1、VS2010,新建“Silverlight应用程序”

    2、勾选“在新网站中承载Silverlight应用程序”(ASP.NET Web应用程序项目)

    3、添加引用:.NETESRI.ArcGIS.Client

    4、xaml文件中:添加命名空间指向ArcGIS Silverlight/WPF;添加Map控件,并指定其MapServiceLayer。

    <UserControl x:Class="SilverlightApplication.MainPage" xmlns="…" …

    xmlns:esri="http://schemas.esri.com/arcgis/client/2009">

           <Grid x:Name="LayoutRoot">

                  <esri:Map x:Name="MyMap" >

                         <esri:ArcGISTiledMapServiceLayer ID="StreetMapLayer"                             

    Url="http://hostName/ArcGIS/rest/services/mapservName/MapServer"/>

          </esri:Map>

           </Grid>

    </UserControl>

    注意:为了能跨域访问(MapServer在不同域),需要将clientaccesspolicy.xml或 crossdomain.xml文件拷贝到网站根目录(如IIS的C:inetpubwwwroot)。

    三、ArcGIS API for Microsoft Silverlight/WPF 2.1的ODM:

    1、OMD(Object model diagrams对象模型图表)总览:参见附件一

    2、OMD(Object model diagrams对象模型图表)详表:参见附件二

    四、地图和图层(Maps and Layers

    1、创建地图(map)

    exent属性:地图的左下角和右上角坐标值,即地图的显示范围

    默认:所有地图图层的范围

    spatial reference(空间参考)属性:如果空间参考不一致,地图将不显示

    默认:采用第一个图层的空间参考值

    <esri:Map x:Name="MyMap">   

           <esri:Map.Extent>      

                  <esriGeometry:Envelope XMin="." YMin="." XMax="." YMax="." >        

                         <esriGeometry:Envelope.SpatialReference>           

                                <esriGeometry:SpatialReference WKID="26777"/>           

                         </esriGeometry:Envelope.SpatialReference>   

                  </esriGeometry:Envelope>   

           </esri:Map.Extent>

    </esri:Map>

    也可后台指定:

    ESRI.ArcGIS.Client.Geometry.Envelope initialExtent = new ESRI.ArcGIS.Client.Geometry.

    Envelope(ESRI.ArcGIS.Client.Bing.Transform.GeographicToWebMercator( new ESRI.

    ArcGIS.Client.Geometry.MapPoint(-130, 20)),ESRI.ArcGIS.Client.Bing.Transform.

    GeographicToWebMercator(new ESRI.ArcGIS.Client.Geometry.MapPoint(-65, 55)));

    initialExtent.SpatialReference = new ESRI.ArcGIS.Client.Geometry.SpatialReference(102100);

    MyMap.Extent = initialExtent;

    注:WKID-Well Know ID:EPSG发布的代表特定椭球体、单位、地理坐标系或投影坐标系的ID,例如 "EPSG:4326" 指的就是WGS 84地理坐标系,其中WKID=4326

    2、新增图层(layer)

    第一加载图层的空间参考决定了整个地图的空间参考

    先加载的图层在地图下边,如下图:

    Map Service Layers

    两种类型:

    tiled Service:瓦片,地图服务器上预先定义好的Image

    Dyanmic Service:动态,动态生成的Image

    Service host

    Map Service Layer Type

    描述

    ArcGIS Service

    ArcGISTiledMapServiceLayer

    地图服务器的缓存地图服务已经存在所有地图image瓦片

    ArcGISDynamicMapServiceLayer

    地图服务器的无缓存地图服务动态生成地图images,可动态访问矢量(vector)和(栅格)raster数据

    ArcGISImageServiceLayer

    地图服务器的image服务动态生成地图images,可动态访问栅格数据

    Bing Maps

    TileLayer

    Feature layers

    包含features,如geometry(几何学)和attribute(属性)

    不支持多图层缓存

    ArcGISDynamicMapServiceLayer的背景颜色通常为透明

    opacity属性用于定义图层的透明度(0-1)

    地图不显示的原因有:

    url不正确;

    Map Service不可用

    Map Service网站或主机没有跨域认证文件(clientaccesspolicy.xml或 crossdomain.xml)

    Map Service要求token或credentials

    3、导航地图(Navigation)

    (1)map的ZoomDuration属性和PanDuration 属性:用于指定缩放和平移动作的持续时间。

    如<esri:Map ZoomDuration="00:00:00" PanDuration ="00:00:00” …>

    (2)map的SnapToLevels属性:用于指定level of detail(LOD),地图在该级别是否显示。

    如<esri:Map SnapToLevels=”ture” …>

    (3)map的ZoomFactor属性:键盘+/-进行缩放时,缩放的级数

    (4)系统已封装的键盘和鼠标导航地图快捷键:

    键盘

    鼠标

    结果

    上、下、左、右

    地图平移

    拖动

    地图平移

    +、-

    地图缩放,缩放比例为map的ZoomFactor属性指定的值

    双击

    地图放大,放大比例为map的ZoomFactor属性指定的值

    Shift

    拉框

    拉框放大

    Shift+Ctrl

    拉框

    拉框缩小

    滚轮

    地图缩放

    (5)系统已封装的导航地图的方式和接口:

    map的属性|方法

    描述

    Extent属性

    map.Extent=envelope

    Zoom()

    map.Zoom(n) ,n为缩放比率,n>1为zoomin,n<1为zoomout

    Zoomto()

    map.Zoomto(envelope)

    ZoomToResolution()

    map.ZoomToResolution(lod.Resolution);

    Resolution指每pixel包含的map unit数,如

    Lod lod=tiledMapServiceLayer.TileInfo.Lods[5];

    map.ZoomToResolution(lod.Resolution);

    Panto()

    Panto(point),point为地图窗口的中心点

    4、Time-aware layers(此知识点不懂,有待继续研究)

    ArcGIS10开始支持Time-aware layers,存储了随时间变化的信息,可用于:

    (1)飓风路径及其它气象学事件;

    (2)人口和土地利用的历史变化;

    (3)监测生产现状的变化;

    (4)火灾或洪水的行进;

    (5)疾病的蔓延。

    Time-aware layers的使用:

    (1)使用Tookit里的TimeSlider控件

    (2)使用API自己建立应用程序

    Time-aware layers的建立:

    在ArcMap中,右键图层属性Time,勾选Enable time on this layer

    地图发布后,可以使用time-aware map或feature Service(ArcGISDynamicMapServiceLayer 或FeatureLayer classes)来随时间变化的查询和展示。

    对于Image Services,栅格地图必须提供Mosaic Dateset,如下图:

     

    访问TimeExtent类:通过time-aware layers的TimeExtent属性访问

    TimeExtent timeExtent = (MyMap.Layers["MyFeatureLayer"] as FeatureLayer)

    .TimeExtent;

    //TimeExtent timeExtent = new ESRI.ArcGIS.Client.TimeExtent();

    timeExtent.Start = DateTime.Parse("2002-01-01T17:33:46.0000000",

                            CultureInfo.CurrentCulture, DateTimeStyles.AdjustToUniversal);

    5、Behaviors和actions

    BehaviorAPI位于Esri.ArcGIS.Client.Behaviors集(内藏在Expression Blend4中),用于定义用户与地图的交互。使用时必须添加System.Windows.Interactivity集。

    xaml文件中必须添加命名空间如下:

    xmlns:esriBehaviors="clr-namespace:ESRI.ArcGIS.Client.Behaviors;assembly=ESRI.ArcGIS.Client.Behaviors"    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

    BehaviorAPI包括三个核心类:

    (1)Behavior:由trigger(地图上的事件)和action(产生结果)组成

    (2)Action:由trigger(地图上的事件)和目标结果

  • 相关阅读:
    每个人在公司都有自己的品牌--如何做一名优秀的管理者
    ios 逆向
    游戏整理
    Mac 开发装机必备
    php整理
    mongodb 学习
    python 学习
    pdf 下载整理
    C# 整理
    微服务学习
  • 原文地址:https://www.cnblogs.com/changbaishan/p/3314381.html
Copyright © 2020-2023  润新知