精华内容
下载资源
问答
  • #资源达人分享计划#
  • 由SE符号数据模型、SE地图符号编辑器和地图符号绘制引擎形成的通用地图符号系统将理论上的国际地图符号规范转变成具有可操作性的GIS地图符号共享方法,使人们在共享地理空间数据的同时,实现同一地图符号库在多个GIS...
  • 本文通过建立个性化地图符号概念模型,从感知适人化、解意适宜化两方面展开个性化地图符号能指、所指和意指的理论探讨,从而剖析地理事物、地图符号与用户感知解意之间的关联,探讨个性化地图符号的设计依据。...
  • 基于BP神经网络的点状地图符号模式识别,魏钜杰,朗杨,本文采用三层BP神经网络模型,对点状地图符号自动识别进行了研究,设计了点状地图符号自动识别流程,讨论了BP神经网络的数据获取�
  • 根据从制图区域到主体认知结构,从主体认知结构到二维平面之间存在映射的关系,给出了模拟地图符号和虚拟地图符号的定义,探讨了其演化规律,并给出了规划和预测地图的数学模型以及地理虚拟空间的数学定义。
  • 地图符号,几何图形样式  地图符号(cartographic symbol)表示地图要素的空间位置、质量和数量特征的特定图形记号或文字。 构成特点  地图内容是通过符号来表达的,地图符号是表示地图内容的基本手段,它由...

    地图符号,几何图形样式

            地图符号(cartographic symbol)表示地图要素的空间位置、质量和数量特征的特定图形记号或文字。

    构成特点

            地图内容是通过符号来表达的,地图符号是表示地图内容的基本手段,它由形状不同,大小不一,色彩有别的图形和文字组成。因此符号具有如下特点:

           1.符号应与实际事物的具体特征有联系,以便于根据符号联想实际事物;

           2.符号之间应有明显的差异,以便相互区别;

           3.同类事物的符号应该类似,以便分析各类事物总的分布情况,以及研究各类事物之间的相互联系;

           4.简单、美观、便于记忆、使用方便。

    符号的空间分布情况。

           有四种类型:点位分布、线状分布、面积分布、体积分布。

           点位分布可以表现为:存在于一个独立位置的事物、离散的空间现象、一个测量控制点、一座城市等,代表一个地区的国民经济统计图形,也算做点位分布。因此,点状符号在地图上算作是一个定位点。

           线状分布指存在于空间的有序现象,如河流、河堤、道路、运输线,他们可能扩散成一个宽带,以具有相对长度和路线为主要特征。因此线状符号在地图上是一个线段。

           面积分布指事物的占有范围、连续的空间现象。因此面状符号在地图上是一块图斑。

    体积分布可以推想为从某一基准面向上下延伸的空间体,例如人口或一座城市,可以表示具有体积量度特征的有形实物或概念产物,这些空间现象可以构成一个光滑曲面。因此体积符号在地图上可以表现为点状、线状、面状三维模型。(体积分布在本教程中不做讲解)

     

    地图符号基类

           对于这些地图符号,可以抽象出一个基类,用来存储样式的公共属性,这个基类取名为Symbol(中文解释:符号,里面只包含一个枚举型变量SymbolType(符号类型),用来存储扩展子类的样式类型。

     

    符号类型枚举

    namespace GIS.HJ.Symbol

    {

        ///<summary>

        ///地图符号类型枚举

        ///</summary>

        public enum SymbolType

        {

            None,

            ///<summary>

            ///点符号

            ///</summary>

            PointSymbol,

            ///<summary>

            ///线符号

            ///</summary>

            LineSymbol,

            ///<summary>

            ///面符号

            ///</summary>

            PolygonSymbol

        }

    }

     

    地图符号基类

    namespace GIS.HJ.Symbol

    {

        ///<summary>

        ///地图符号基类

        ///</summary>

        public abstract class SymbolClass

        {

            ///<summary>

            ///符号类型

            ///</summary>

            public SymbolType SymbolType { get; set; }

        }

    }

     

    点符号类

             作用:描述地图上离散的点状空间对象。

             类:   点状符号类型,除了继承基类的符号类型属性外,还新增了点的颜色和半径属性。

    namespace GIS.HJ.Symbol

    {

        ///<summary>

        ///点符号

        ///</summary>

        public class PointSymbolClass:SymbolClass

        {

            ///<summary>

            ///构造函数

            ///</summary>

            publicPointSymbolClass()

            {

                base.SymbolType= SymbolType.PointSymbol;

            }

            ///<summary>

            ///带参数的构造函数

            ///</summary>

            ///<paramname="pointColor">点颜色</param>

            ///<paramname="radius">点半径</param>

            publicPointSymbolClass(Color pointColor,float radius)

                : this()

            {

                PointColor = pointColor;

                Radius = radius;

            }

            ///<summary>

            ///默认点符号

            ///</summary>

            privatestaticPointSymbolClass_Default;

            ///<summary>

            ///默认点符号

            ///</summary>

            public static PointSymbolClassDefault

            {

                get

                {

                    if(_Default == null)

                        _Default = newPointSymbolClass(Color.Black, 1);

                    return_Default;

                }

            }

            ///<summary>

            ///点颜色

            ///</summary>

            public Color PointColor { get;set; }

            ///<summary>

            ///点半径

            ///</summary>

            public float Radius { get; set; }       

        }

    }

    线符号类

             作用:描述地图上连续的线状空间对象。

             类:   线状符号类型,除了继承基类的符号类型属性外,还新增了线的颜色、宽度和线型属性。

     

    namespace GIS.HJ.Symbol

    {

        ///<summary>

        ///线符号

        ///</summary>

        public class LineSymbolClass:SymbolClass

        {

            ///<summary>

            ///构造函数

            ///</summary>

            publicLineSymbolClass()

            {

                this.SymbolType= SymbolType.LineSymbol;

            }

            ///<summary>

            ///带参数的构造函数

            ///</summary>

            ///<paramname="LineColor">线颜色</param>

            ///<paramname="Width">线宽度</param>

            ///<paramname="LineStyle">线型</param>

            publicLineSymbolClass(Color lineColor,float width,DashStylelineStyle)

            {

                LineColor = lineColor;

                Width = width;

                LineStyle = lineStyle;

            }

            ///<summary>

            ///默认线符号

            ///</summary>

            privatestaticLineSymbolClass_Default;

            ///<summary>

            ///默认线符号

            ///</summary>

            public static LineSymbolClassDefault

            {

                get

                {

                    if(_Default == null)

                        _Default = newLineSymbolClass(Color.Black, 1,DashStyle.Solid);

                    return_Default;

                }

            }

            ///<summary>

            ///线颜色

            ///</summary>

            public Color LineColor { get;set; }

            ///<summary>

            ///线宽度

            ///</summary>

            public float Width { get; set; }

            ///<summary>

            ///线型

            ///</summary>

            public DashStyle LineStyle { get;set; }

        }

    }

    面状符号类

             作用:描述地图上片状的空间对象。

             类: 面状符号类型,除了继承基类的符号类型属性外,还新增了边界颜色和填充颜色属性。

    namespace GIS.HJ.Symbol

    {

        ///<summary>

        ///面符号

        ///</summary>

        public class PolygonSymbolClass:SymbolClass

        {

            ///<summary>

            ///构造函数

            ///</summary>

            publicPolygonSymbolClass()

            {

                base.SymbolType= SymbolType.PolygonSymbol;

            }

            ///<summary>

            ///带参数的构造函数

            ///</summary>

            ///<paramname="borderColor">边界颜色</param>

            ///<paramname="fillColor">填充颜色</param>

            publicPolygonSymbolClass(Color borderColor,Color fillColor)

                :this()

            {

                BorderColor = borderColor;

                FillColor = fillColor;

            }

            ///<summary>

            ///默认面符号

            ///</summary>

            privatestaticPolygonSymbolClass_Default;

            ///<summary>

            ///默认面符号

            ///</summary>

            public static PolygonSymbolClassDefault

            {

                get

                {

                    if(_Default == null)

                        _Default = newPolygonSymbolClass(Color.Black,Color.Blue);

                    return_Default;

                }

            }

            ///<summary>

            ///边界颜色

            ///</summary>

            public Color BorderColor { get;set; }

            ///<summary>

            ///填充颜色

            ///</summary>

            public ColorFillColor { get; set;}

        }

    }

     

     

    展开全文
  • 图元是计算机地图制图的信息法矢量符号库的基本组成单元。首先定义了符号库的树状结构;然后进行了面向对象的图元设计;最后分别针对 Her-mite曲线图元和自由曲线图元,阐述其数学模型,构造其实现方法。所实现的符号...
  • 将符号的状态描述(参量)与过程操作(对不同参量实施不同变换)封装,采用关键帧层一图元一几何/非几何属性结构进行符号组织,从而将地图符号的时间维信息纳入到符号设计之中,建立了不同的变化速率模型,实现属性...
  • 通过分析地图上各类统计制图符号的图形结构及其图元生成模式,...结果表明该模型不仅能快速生成科学美观的单指标统计制图符号,而且还能生成结构复杂的多指标组合统计制图符号,为快速制作多样化统计地图提供了新方法。
  • 论文范文有关语言学的三维符号动态组织模型及可视化建模问题分析 第一章 绪论 1.1 引言 科学技术的不断进步极大的促进了地图学的发展新的理论和技术为地图学的每一次变革均提供了新的表现方法和手段不断推动地图学...
  • 基于SVG的地图符号设计与实现

    千次阅读 2007-11-11 02:32:00
     地图符号的描述模型通常表现为3个层次:一是地图符号图元,是构成地图符号的基本要素;二是地图符号模板,由图元按照一定的规则构成;三是地图符号,按照一定的配置规则将空间信息用符号模板进行符号化。配置规则是一种...
    <script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-4234177103003112&dt=1194719304890&lmt=1194663739&prev_slotnames=2590732127&output=html&slotname=9803889511&correlator=1194719304812&url=http%3A%2F%2Fwww.souzz.net%2Fhtml%2Fsvg%2F4%2F34014.html&ref=http%3A%2F%2Fwww.baidu.com%2Fs%3Fie%3Dgb2312%26bs%3DSVG%25BB%25F9%25B4%25A1%26sr%3D%26z%3D%26cl%3D3%26f%3D8%26wd%3DSVG%25D3%25EB%25B5%25D8%25CD%25BC%26ct%3D0&cc=359&ga_vid=777391925.1194719303&ga_sid=1194719303&ga_hid=923023177&flash=9&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency">
    摘要:讨论了基于SVG的网络地图符号的设计与显示问题;首先介绍了常用地图符号的描述模型和SVG的概念;然后根据地图符号的结构特征和SVG的自身特点,提出基于SVG的地图符号描述模型;重点进行了点、线和面3种类型的基于SVG地图符号设计,为地图符号的结构化描述和符号库共享提供了一种通用的实现方法,这些地图符号可以在WebGIS中得到充分应用。获得的结论对于相关技术及专业的应用研究具有一定的借鉴作用。

      关键词:SVG;地图符号;WebGIS

     

      图形符号,也就是常说的地图符号和图表是地图符号系统的主体,包括点状符号、线状符号和面状符号[1]。SVG能描述任意复杂的图形,但由于地图符号的复杂性,在将地图符号用SVG格式描述时,还有许多问题有待解决。SVG目前仅支持一些基本的图形元素,但远不能满足应用的要求。为了能够有效地通过SVG来对地图符号进行描述,就必须将地图符号按照SVG标准进行设计。

    • 1 常用地图符号的描述模型

      地图符号的描述模型通常表现为3个层次:一是地图符号图元,是构成地图符号的基本要素;二是地图符号模板,由图元按照一定的规则构成;三是地图符号,按照一定的配置规则将空间信息用符号模板进行符号化。配置规则是一种操作,点、线和面操作分别对应于平移、映射和填充。文中操作是将文字配置在参考位置上,参考位置可以是点、线或面。当为参考点时,将文本平移到点位置;当为线时,将文本映射到线上,使得文本沿线配置;当为面时,可以将面分解为中心点、中轴线或边界线,再在点或线上配置文本。符号模板包括点、线、面模板以及注记,并声明了一系列形式化参数[2]。

    • 2 基于SVG的地图符号描述模型

      SVG是W3C制定的基于XML开放标准的文本式标记语言,支持矢量图形,如矩形、圆形、椭圆形、多边形、贝塞尔曲线等。同时,SVG还引入了平面设计中路径和剪裁路径的概念,使得SVG与其他XML应用的协作变得十分简单,因此其扩展性很强,可以表达任意复杂的图像[3]。还有灵活的坐标控制手段,可以将用户自定义的符号加入其中,可以说它是图形、图像和文字的有机统一。它提供了6种类型的对象,其中包括矢量图形、图像、渐变填充、滤镜操作、可重复单元和文本。它对于图形对象可进行组合、添加样式、几何变换、复合等操作。特征集包括嵌套变换、剪切路径、Alpha蒙版、滤镜效果、模板对象和动画效果,这些都极大地丰富了图形图像的显示效果。

      在理论上,这些SVG对象的组合可以构筑任意复杂的图形/图像。根据功能不同,SVG的主
    要对象可以归为基本要素对象(矩形、圆、椭圆、直线、折线、曲线和多边形)和页面描述功能对象(文字、图像、路径、交互事件)两大类[4]。这两种对象可以组合成各种地图符号模板,地图符号模板经过环境配置(填充、平移、重复、变形、变长、渐变、随机和自定义属性)构成了地图符号。描述模型如图1所示。


    图1  SVG地图符号描述模型

    • 3

        基于SVG的地图符号的具体设计符号模板是由图元对象和页面描述对象相结合构成的,在SVG图像显示中是可重用的。通常做法是在文档的定义部分(作为<defs></defs>元素的一部分)指定以后可在图像主体中调用的标识来创建。地图符号是按照一定的规则,将符号模板配置在相应的位置上显示地理信息的。

      3.1点状符号

      点状符号是由不同形状的几何图形单元组合构成的,通过对点状符号的几何形状特征进行分析,可以将构成点状符号的几何图形单元分为:点、圆、圆弧、椭圆、矩形、多边形、直线、折线等基本图元。SVG提供了<circle>、<ellipse>、<line>、<polyline>、<rect>、<polygon>等6种基本的图形元素,可以很好地对构成点状符号的基本图元描述,从而实现对点状符号描述。

      点状符号都有明确的定位点和方向性。根据点状符号的方向性,可以将点状符号分两类:一类为固定方向的,如GPS点、三角点等,另一类为不固定方向的,如不依比例尺的车站、桥梁等,如图2所示。


    图2  SVG点状符号

    具体方法如下(部分代码):


    <defs>

    <polyline id="qiao" points="5,20"/>

    </defs>

    <use xlink:href = "# qiao" transform = "rotate(180) translate

    (-80,-80)"/>

     

      对于符号方向不固定的,方向的控制可以在调用该符号时,通过设置图形分组元素的属性“rotate”(旋转)来实现。

      3.2线状符号

      线状符号用来表示空间上1维的地理现象,它有一个显著的特点是都有一条有形或无形的空间定位线。根据线状符号的分解特性和图形的对称特性,将线状符号分为两类。一类为普通的线状符号,如等高线、等深线等,如图3所示。另一类为模式化的线状符号,这类符号以定位线为基准,以某一基本图形单元为循环体沿定位线生成,如高速公路、铁路等,如图3所示。

      SVG文档中的大多数可视化元素都可以使用“style”(样式)属性来定义图形的渲染方式。
    “style”的参数多种多样,几乎涵盖了从文字到图形、从色彩到滤镜等各个方面[5]。其中,参数fill说明图形的填充样式;参数stroke说明描边线条的颜色。下面的几个参数都是“stroke”的附加参数。

      stroke-width:说明描边线条的宽度;
      stroke-linecap:说明描边线条端点的绘制样式,有“butt”(正常)、“round”(圆形)和“square”(方形)3种;
      strokelinejoin:说明描边线条拐角处的过渡形状,有“miter”(正常)、“round”(圆弧)和“bevel”(斜面)3种;
      strokedasharray:说明描边线条的线型,用来定义虚线;
      stroke-dashoffset:说明描边模板(如虚线)的起始偏移量,缺省是从起点开始。

      对第一类线状符号而言描述比较简单,使用折线<polyline>或路径<path>描述,设置相应的线色、线宽等参数即可。

      第二类线状符号的描述较复杂,不能直接使用<polyline>或<path>来实现。目前,都是用path和polyline描述线状符号[3,6],实际上只提到了第一类线状符号的描述,都没有涉及到第二类线状符号的描述。对于第二类线状符号,从图3可以看出,这类线状符号的构图都以一个基本单元为基础循环配置而成。文中描述这类符号的方法是:预先描述一个基本模板,然后在具体画线时引用这个基本的模版,具体采用GIS中线状符号的配置方法。

    图3  SVG线状符号

    具体方法如下(部分代码):

    <symbol id="symbolized">

    <polyline points="5,20"/>

    </symbol>

    <use xlink:href="#symbolized" mce_href="#symbolized" fill = "none" stroke = "

    black" stroke-width="16"/>

      3.3面状符号

      面状符号都有一个或多个有形或无形的封闭边界线,为了区别地物的性质和地理现象空间分布的数量、质量等特征,面状符号常采用一定的填充方式。根据填充方式的不同,面状符号可分为3类:第一类是用颜色填充的面状符号,如依比例尺的湖泊、河流等;第二类是用晕线填充的面状符号,如依比例尺的沼泽地、盐田等;第三类是用点状符号填充的面状符号,如草地、森林等。

      对于第一类面状符号只需设置填充颜色即可实现;对于第二类和第三类可以采用模式填充的方法实现,文中主要针对后两类面状符号的描述进行阐述。后两类面状符号描述的方法是:首先定义填充的模式(pattern),也就是定义用于填充的图案,定义模式的元素是<pattern>,并设置该模式的“id”属性;然后,在被填充区域渲染时引用该模式,模式的引用格式是url(#id)。模式的定义原理是:首先,定义一个矩形区域作为基本的填充单元,然后,按面状符号的构图规律描述填充的图案,如图4所示。


    图4  SVG面状符号

    具体方法如下(部分代码):

    <pattern id="pattern1"  ">
    <pathd="M2.52 L2.54"/>
    </pattern>
    <g>
    <path style="fill:url(#pattern1)" d="M9.522  z"/>
    </g>

    • 4  结语

      SVG作为一种图形标记语言,不仅具有描述图形的功能,还可以直接显示图形符号,这是其他标记方法不能实现的。地图是传递地理信息的工具,地图符号则是传递地理信息的手段,最终地理信息都要以地图符号的形式表现出来。因此,这就涉及到地图的符号化,简而言之,就是地图符号的使用。实际上,可以把每一种点状符号看作是一个基本的图形单元、把每一种线状符号看作是一种线型样式、把每一种面状符号看作是一种模式填充的方式,这样,地图符号的引用,可以归结为对基本图形单元、线型样式和模式填充方式的引用。一幅SVG格式的郑州市地图实现如图5所示。


    图5  WebGIS中的SVG应用

      具有统一的标准和开放性是SVG优点所在,统一的标准便于加强交流与共享,开放性有利于自身发展强大。另外,体积小、可缩放、可链接等特点使SVG成为未来网上图形传输发展方向。通过SVG地图符号描述地理信息,相信它必将成为推动WebGIS和空间信息技术发展的动力。

    • 关于作者

    和万礼,崔铁军,刘兴科 信息工程大学测绘学院,河南郑州 450052
    陈应东 68029部队,甘肃兰州 730020)

    • 参考文献:
      [1]华一新.地理信息系统[M].北京:解放军出版社,2001:267290.
      [2]尹章才,李霖.基于SVG的地图符号描述模型研究[J].武汉大学学报(信息科学版),2004,(6)
      :544547.
      [3]孙少红,边馥苓.SVG网络图像标准支持下的地图显示[J].测绘信息与工程,2002,(8):1516.
      [4]周强中,谈俊忠.SVG在WebGIS中的应用[J].计算机应用研究,2003,(1):108121.
      [5]刘啸,毕永年.基于XML的SVG应用指南[M].北京:北京科海集团公司,2001:3943.
      [6]周文生,胡鹏,贾永红.Web环境下SVG地图浏览器的设计与实现[J].测绘学院学报,2003,(2)
      :4347.

    (全文结束)

     
    展开全文
  • ArcGIS Runtime 100.0 可谓是有了个天翻地覆的改进,比如跨平台、3D地图的加载以及多样的地图离线选择等。其实这里面我最感兴趣的是可以加载MMPK数据,MMPK是一种全新的移动地图包,有很多创新和优势,总结起来是...

          去年的Esri大会,随着最新的ArcGIS 10.5产品的发布,全新的ArcGIS Runtime 100.0也随之发布。ArcGIS Runtime 100.0 可谓是有了个天翻地覆的改进,比如跨平台、3D地图的加载以及多样的地图离线选择等。其实这里面我最感兴趣的是可以加载MMPK数据,MMPK是一种全新的移动地图包,有很多创新和优势,总结起来是一下几点:

    1. 数据存储于压缩的Mobile GDB中,相比起切片数据,体积小了很多;
    2. 保存了所有的fearture要素,底图上展示的都是要素,可供查询和分析;
    3. 可以将所有地图和数据资源打包,
          总结下,就是通过一个文件实现了之前TPK和geodatabase加起来实现的功能,并且体积更小,速度更快。这对于经常要用多个切片数据,时常面临着移动端内存卡空间不足的我来说,绝对是个福音。

          然而,Rumtime100里对大量的接口,类和方法就行了更改,如果直接移植到我们的产品上,那绝对是万里江山一片红,而且性能的稳定性也没经过太多测试,于是,我想慢慢实践、测试下,了解后再移植到产品里。
          本篇是一篇初步实践篇,通过将之前我写的空间分析的demo为例(博客地址http://blog.csdn.net/bit_kaki/article/details/76581848)进行移植尝试,获取对于ArcGIS Runtime 100.0的初步印象。

    一、环境配置
          
          和之前ArcGIS所需环境差不多,在project的build.gradle里添加url:
    allprojects {
        repositories {
            jcenter()
            maven {
                url 'http://esri.bintray.com/arcgis'
            }
        }
    }

          然后在module的build.gradle里添加compile:
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:25.3.1'
     //   compile 'com.esri.arcgis.android:arcgis-android:10.2.8'
        compile 'com.esri.arcgisruntime:arcgis-android:100.0.0'
    }

          注意下面个是Runtime100,被我注释掉的是之前用的10.2.8

    二、导入包
          
          等gradle更新完毕了以后,进入我们的主activity页面会看到这样的情况:

      
          祖国江山一片红,可谓凄惨。
          不过没关系,这主要是原来10.2版本的包名和现在的包名不一样导致的。我们需要将以前导入的类删掉,重新导入一下:


          重新导入包以后,我们会发现,呃,好像好了一点,但依然是祖国江山半壁红。


          其实是Runtime100里很多类和方法都进行了更改,比如上图里我们可以看到之前常用的Line和GraphicsLayer类都已经不存在了,只能用其他类替代;另外改变了很多方法,也新增了很多方法,所以我们就一步一步来看看吧。

    三、地图和图层的加载(MapView和Layer)

          首先我们先回顾下10.2里的MapView和Layer的关系。
          在10.2里MapView直接继承于ViewGroup类,本身就是地图内容的展示容器,使用时候直接在MapView可以加载各种基础底图、业务图层和绘制图层。





          但是在Runtime100里,增加了3D地图显示的功能。为了满足大多数人的使用习惯,Esri依然采用MapView类作为2D地图的展示容器,新增了SceneView类作为3D地图的展示容器,然后这两个类共同继承于一个叫GeoView的基类。


        
          然后整个MapView的结构也进行了更改。不再是作为一个容器直接添加图层,而是分成了地图内容和绘制图层两部分进行添加:



          所以,Runtime100里要添加基础底图和业务图层,需要新建一个ArcGISMap类,在这个类里添加图层,然后用MapView.setMap()的方法添加地图。
          
          第二点,对于图层来说,Runtime100里更改了不少图层类。

          比如将基础图层中的ArcGISLocalTiledLayer类和ArcGISTiledMapServiceLayer类合并成了一个ArcGISTiledLayer类,也就是将离线和在线加载瓦片数据的类合成了一个,其实也是为了简化程序员的负担,弱化了离线和在线的概念;
          比如将之前的临时图形图层GraphicsLayer换成了GraphicsOverlay,同样是一个临时图层,比起之前的优化来就是它基于GeoView基类并且始终置于顶层,(很棒吧,妈妈再也不用担心临时图层被业务图层覆盖的问题了!)调用的方法也有所改变,比如官网给的例子:



          第三点,关于图层的加载。

          上面说了Runtime100里,如果要添加基础底图和业务图层需要通过ArcGISMap类来实现,那么我们来实践下如何加载图层。
          对于加载切片数据,需要当做基础底图进行加载,比起以前的方法,相当于是在MapView里有且仅有一个底图,
    这个底图无法进行编辑,仅能提供背景和坐标参考系。
    mMapView=(MapView)findViewById(R.id.mapview);
    String url=StorageUtil.getSDCardRootPath(getApplicationContext())+"/ArcGIS/localtilelayer/CY_YGYX_BG.tpk";
    TileCache mainTileCache = new TileCache(url);
    ArcGISTiledLayer layer =new ArcGISTiledLayer(mainTileCache);Basemap basemap=new Basemap(layer);arcGISMap=new ArcGISMap(basemap);mMapView.setMap(arcGISMap);

          对于离线业务数据,方法和原来基本一样,唯一有所不同的就是获取GeodatabaseFeatureTable的方法名由getGeodatabaseTables()变成了getGeodatabaseFeatureTables()。
    String url= StorageUtil.getROMRootPath(getApplicationContext())+"/ArcGIS/localtilelayer/ncdc.geodatabase";
    Geodatabase localGdb=null;
    try {
        localGdb = new Geodatabase(url);
    }catch (Exception e){
        e.printStackTrace();
    }
    if (localGdb != null) {
        for (GeodatabaseFeatureTable gdbFeatureTable : localGdb.getGeodatabaseFeatureTables()) {
            if (gdbFeatureTable.hasGeometry()){
                dataFeatureLayer = new FeatureLayer(gdbFeatureTable);
            }
        }
    }
          
          对于临时绘制图层,我们则需要先获取MapView里的GraphicOverlays的列表,向里面增加我们需要添加的临时绘制图层即可。
    mMapView=(MapView)findViewById(R.id.mapview);
    mMapView.getGraphicsOverlays().add(messureLayer);
    mMapView.getGraphicsOverlays().add(pointAnalysistAllGraphicsLayer);
    mMapView.getGraphicsOverlays().add(pointAnalysistOneGraphicsLayer);

    四、图形和符号(Geometry和Symbol)
          
          在地图加载完毕后,我们再来看看代码:



          可以看出红色报错的地方少多了。在我们初始化地图并加载好图层后,接下来我们考虑的初始化我们的图形和符号了。然后我们看看初始化地方的代码:



          果然错误很多,我们先来看看图形吧。在Runtime 100里不能通过实例化空模型来完成图形的实例化,我们可以看看Polygon API里的构造方法(Polyline与之完全类似):



          也就是说得通过PointCollection或者Part进行构造。
          这两个类都是Runtime 100里新出现的类,但是对于PointCollection看名称我们就知道这是个Point的集合,而我们之前在画面的时候,就是采用点的集合完成的。于是我想就把之前的List<Point>改成PointCollection类,将图形的构造往后放不就可以了。于是尝试一下:
          首先是构造一个PointCollection类,而构造PointCollection需要坐标参考信息SpatialReference(),这个信息我们可以从地图内容里获取,于是:
    pointCollection=new PointCollection(arcGISMap.getSpatialReference());

          然后我们可以考虑在获取点的时候构造线和面就可以:
    pointCollection.add(mPoint);// 选择点加入点的集合
    if (pointCollection.size() > 1) {
        messurePolyline = new Polyline(pointCollection);
        if (pointCollection.size() > 1) {
            messurePolygon = new Polygon(pointCollection);
        }
    }

          接下来是符号,可以看出所有的符号构造函数都在报错,我们先看看SimpleLineSymbol类,它Runtime 100里的构造函数是:


          比起10.2里也多了一项,是SimpleLineSymbol.Style。这是个枚举类,里面包含了几种样式可以修饰符号。(具体的我测试后再发出效果图)
    public static enum Style {
        DASH,
        DASH_DOT,
        DASH_DOT_DOT,
        DOT,
        SOLID,
        NULL;
    
        private Style() {
        }
    }

         接下来是SimpleFillSymbol类,看看它在Runtime 100里符号的构造函数是:



          可以看出比起10.2的SimpleFillSymbol类,构造函数里还多了个LineSymbol类,我们知道SimpleFillSymbol主要是用来定义面的样式,最后这个LineSymbol类是给这个面加个轮廓,如果不需要加,写null即可。
          以前如果需要在面符号里加上轮廓样式的话,还需要用SimpleFillSymbol.setOutline(SimpleLineSymbol)的方法,也就是说新的构造类是将两个方法合二为一,更加方便。
          
          最后是SimpleMarkerSymbol类,它在Runtime 100里符号的构造函数和10.2里几乎没变,只是将参数的顺序变了下。
          于是修改后,原函数里的符号初始化定义变化为:
    pointCollection=new PointCollection(arcGISMap.getSpatialReference());
    mMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE,Color.RED, 10);
    messureLineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.NULL,Color.BLUE, 3);// 初始化线的样式
    messureMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE,Color.RED, 10);// 初始化测量时点的样式
    messureLayer =new GraphicsOverlay();// 初始化测量图层
    pAnalysistSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.NULL,Color.RED, 3);
    messureFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.BACKWARD_DIAGONAL,Color.argb(100, 225, 225, 0),new SimpleLineSymbol(SimpleLineSymbol.Style.NULL,Color.BLACK, 2));// 初始化测量时面的样式
    messureFillSymbol_red = new SimpleFillSymbol(SimpleFillSymbol.Style.BACKWARD_DIAGONAL,Color.argb(100, 225, 0, 0),new SimpleLineSymbol(SimpleLineSymbol.Style.NULL,Color.BLACK, 2));
    messureFillSymbol_blue = new SimpleFillSymbol(SimpleFillSymbol.Style.BACKWARD_DIAGONAL,Color.argb(100, 0, 0, 225),new SimpleLineSymbol(SimpleLineSymbol.Style.NULL,Color.BLACK, 2));
    messureFillSymbol_green = new SimpleFillSymbol(SimpleFillSymbol.Style.BACKWARD_DIAGONAL,Color.argb(100, 0, 225, 0),new SimpleLineSymbol(SimpleLineSymbol.Style.NULL,Color.BLACK, 2));
    pointAnalysistAllGraphicsLayer = new GraphicsOverlay();
    pointAnalysistOneGraphicsLayer = new GraphicsOverlay();

          大功告成!



    展开全文
  • 分析了GIS的3种典型符号模型不利于构建地图符号与符号间难以共享的原因,引入了PB符号模型,提出了符号数据共享与符号渲染功能共享相结合的符号共享机制,设计了3类G1S点状符号与PB符号间的映射方法,实现GIS点状...
  • 官方介绍了一种放置3D模型的方法是使用ModelNode. using namespace osgEarth; using namespace osgEarth::Symbology; ... //加载模型 osg::Node* myModel = osgDB::readNodeFile(...); //构建坐标系统...

    官方介绍了一种放置3D模型的方法是使用ModelNode.

    using namespace osgEarth;

    using namespace osgEarth::Symbology;

    ...


    //加载模型

    osg::Node* myModel = osgDB::readNodeFile(...);


    //构建坐标系统

    const SpatialReference* latLong = SpatialReference::get("wgs84");


    //创建符号

    Style style;

    style.getOrCreate<ModelSymbol>()->SetModel(myModel);


    //创建ModelNode

    ModelNode* model = new ModelNode(mapNode, style);


    //设置位置

    model.setPosition(GeoPoint(latLong, -121.0, 34.0, 1000.0,  ALTMODEL_ABSOLUTE));


    如果你希望创建一个osg::Matrix,用osg::MatrixTransform来定位模型,你可以这样使用:

    GeoPoint point(latLong, -121.0, 34.0, 1000.0, ALTMODE_ABSOLUTE);

    osg::Matrix matrix;

    point.createLocalToWorld(matrix);

    myMatrixTransform->setMatrix(matrix);


    在osgearth_annotation示例中有较多的节点参考。


    如用osg::Group节点包含了大量的注记。

    如用FeatureNode创建了立方体图形。

    如用FeatureNode创建了Tokyo和New York的连线。


    展开全文
  • 常见的地图表达方法有分级色彩、分级符号,柱状图等,有时候我们也可以通过一张地形图来反映空间数据的属性特征。常见的地形图是平面图,地形高低起伏不明显,常需要借助等高线来反映地形变化;而从3D图我们则可以很...
  • 文章目录 1. 1. 摘要2. 2. Map-Matching(MM)问题3. 3. 隐马尔科夫模型(HMM)3.1. 3.1. HMM简述3.2. 3.2. 基于HMM的Map-Matching3.3. 3.3. Viterbi算法4. 4. 相关部分论文工作4.1. 4....
  • ArcGIS符号级别的应用

    2021-03-27 21:59:03
    制图人员经常需要控制在地图上绘制符号的顺序。这可通过在 ArcMap 中使用符号级别绘制来实现。 可以利用符号级别绘制控制要素符号系统的绘制顺序,还可以控制线符号彼此之间的连接方式。使用符号级别绘制可指定在...
  • 数学模型

    2011-04-12 10:12:00
    而玩具、照片、飞机火箭模型是一种实物模型,地图,电路图,分子结构图是一种符号模型。 做出简化假设 用符号表示有关量 用物理定律(这个属于专业知识,就像利率的计算知识一样) 求解得到数学解答 回答原...
  • C4模型

    千次阅读 2019-02-14 10:53:00
    用于软件架构的 C4 模型关键要点 关键要点 由于向敏捷转型,软件架构图的使用规模已经大幅缩减。即使有在使用软件架构图,它们往往也混淆不清。 C4 模型由一系列分层的软件架构图组成,这些架构图用于描述上...
  • 概述 我不是一个产品经理,我是是一个GISer。虽然不是产品经理,但是有时候也不免...经过分类、简化、夸张、符号化、模型化和概括方法[2]。 正文 结合产品和地图概括两者的概念,我们可以称经“地图概括”后的地图
  • HMM:隐马尔可夫模型 - 表示

    万次阅读 2016-02-23 12:37:53
    隐马尔可夫模型(Hidden Markov Models, HMM)描述由一个隐藏的马尔可夫链随机生成的不可观测的状态序列,再由各个状态生成一个观测而产生观测随机序列的过程,属于生成模型。HMM(隐马尔可夫模型)...
  • 模型数据

    2020-05-08 16:18:26
    开发工具与关键技术: SuperMap iDesktop 9D 模型数据 作者:黎凤焕 撰写时间:2020年 5 月 2日 Bim模型数据与GIS平台的对接? (1)、Bim模型和属性信息丰富—》模型+属性一次性导出。 (2)、Bim模型精细度非常高...
  • 2、地图学 2.1 地图的主要特征 1.地图信息的载体 ...用地图符号所表示的制图区域内,各种自然和社会经济现象的分布、联系以及时间变化等的内容部分(又称地理要素)。 2.数学要素 数学要素是决定图形分布位置和
  • 地图是按照一定的法则,有选择地以二维(2D)或多维形式(3D)与手段在平面或...现阶段地图的定义是:以一定的数学(Math)法则(即模式化)、符号化、抽象化反映客观实际的形象符号模型或者称为图形数学模型。 地图一般都包
  • 示范如何导入栅格图片到符号库,并将刚导入的栅格符号设置为当前点图层的风格,从而更加形象直观的表示图层中对象代表的地物,让地图更加美观。
  • 如何看懂常用原理图符号、如何阅读原理图

    千次阅读 多人点赞 2019-04-30 18:19:05
    1、原理图符号(第1部分) 1.1、电阻器 1.2、电位计和可变电阻器 1.3、电容器 1.4、电感器 1.5、开关 1.6、电源 1.6.1、直流或交流电压源 1.6.2、电池 1.6.3、电压节点 2、原理图符号(第2部分) 2.1、...
  • seo优化公式模型 seo优化模型

    千次阅读 2011-05-12 09:46:00
    seo公式-seo优化模型-seo基础公式模型-seo概括模型seo优化公式模型 seo优化模型seo优化模型-seo基础公式模型-seo概括模型概括seo优化公式...是一个积分符号,C=content ,L=link ,K=keywords ,O=others 。SEO就
  • 地图符号不仅具有确定的空间位置以及空间地物的性质:例如在一个城市管线系统中不同的线符号表示不同类型的管线,不同的点符号表示不同类型的设备等等,而且地图符号也可以表达与空间位置相关的丰富信息:例如人口...
  • 勿在流沙住高台,出来混迟早要还的。 做一个积极的人 编码、改bug、提升自己 我有一个乐园,面向编程,春暖花开!...知识地图: 一、概述 Java的内存管理采用[自动内存管理]机制,因为这个自动管理机制,Ja...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,318
精华内容 3,727
关键字:

地图符号模型