主要内容

本页采用了机器翻译。点击此处可查看英文原文。

defaultm

创建或重置地图投影结构

    说明

    mstruct = defaultm(projid) 使用投影 ID projid 创建一个地图投影结构。

    示例

    mstruct = defaultm(mstructIn) 通过更新空字段和依赖字段来重置地图投影结构 mstructIn。该函数更新 originflatlimitflonlimitmaplatlimitmaplonlimit 字段,使其彼此兼容,并与 mapprojection 字段兼容。当结构表示 UTM 或 UPS 坐标系时,该函数还会更新 zone 字段。

    注意

    要设置地图投影结构,必须两次使用 defaultm 函数。这些步骤展示了如何设置地图投影结构。

    1. 使用语法 defaultm(projid) 创建具有默认值的地图投影结构。

    2. 通过为 originmaplatlimmaplonlim 等字段指定数值来自定义地图投影结构。

    3. 使用语法 defaultm(mstructIn) 更新地图投影结构中的空字段和依赖字段。

    示例

    示例

    全部折叠

    创建一个基于墨卡托投影的地图投影结构。默认情况下,许多字段都是空的。

    mstruct = defaultm("mercator")
    mstruct = struct with fields:
         mapprojection: 'mercator'
                  zone: []
            angleunits: 'degrees'
                aspect: 'normal'
         falsenorthing: []
          falseeasting: []
           fixedorient: []
                 geoid: [1 0]
           maplatlimit: []
           maplonlimit: []
          mapparallels: 0
            nparallels: 1
                origin: []
           scalefactor: []
               trimlat: [-86 86]
               trimlon: [-180 180]
                 frame: []
                 ffill: 100
            fedgecolor: 'default'
            ffacecolor: 'none'
             flatlimit: []
            flinewidth: 2
             flonlimit: []
                  grid: []
             galtitude: Inf
                gcolor: 'default'
            glinestyle: ':'
            glinewidth: 0.5000
        mlineexception: []
             mlinefill: 100
            mlinelimit: []
         mlinelocation: []
          mlinevisible: 'on'
        plineexception: []
             plinefill: 100
            plinelimit: []
         plinelocation: []
          plinevisible: 'on'
             fontangle: 'normal'
             fontcolor: 'default'
              fontname: 'Helvetica'
              fontsize: 10
             fontunits: 'points'
            fontweight: 'normal'
           labelformat: 'compass'
         labelrotation: 'off'
            labelunits: []
         meridianlabel: []
        mlabellocation: []
        mlabelparallel: []
           mlabelround: 0
         parallellabel: []
        plabellocation: []
        plabelmeridian: []
           plabelround: 0
    
    

    指定地图原点。然后,再次使用 defaultm 函数更新空字段以及依赖于地图原点的字段,例如地图经纬度边界。

    mstruct.origin = [0 90 0];
    mstruct = defaultm(mstruct)
    mstruct = struct with fields:
         mapprojection: 'mercator'
                  zone: []
            angleunits: 'degrees'
                aspect: 'normal'
         falsenorthing: 0
          falseeasting: 0
           fixedorient: []
                 geoid: [1 0]
           maplatlimit: [-86 86]
           maplonlimit: [-90 270]
          mapparallels: 0
            nparallels: 1
                origin: [0 90 0]
           scalefactor: 1
               trimlat: [-86 86]
               trimlon: [-180 180]
                 frame: 'off'
                 ffill: 100
            fedgecolor: 'default'
            ffacecolor: 'none'
             flatlimit: [-86 86]
            flinewidth: 2
             flonlimit: [-180 180]
                  grid: 'off'
             galtitude: Inf
                gcolor: 'default'
            glinestyle: ':'
            glinewidth: 0.5000
        mlineexception: []
             mlinefill: 100
            mlinelimit: []
         mlinelocation: 30
          mlinevisible: 'on'
        plineexception: []
             plinefill: 100
            plinelimit: []
         plinelocation: 15
          plinevisible: 'on'
             fontangle: 'normal'
             fontcolor: 'default'
              fontname: 'Helvetica'
              fontsize: 10
             fontunits: 'points'
            fontweight: 'normal'
           labelformat: 'compass'
         labelrotation: 'off'
            labelunits: 'degrees'
         meridianlabel: 'off'
        mlabellocation: 30
        mlabelparallel: 86
           mlabelround: 0
         parallellabel: 'off'
        plabellocation: 15
        plabelmeridian: -90
           plabelround: 0
    
    

    通过使用地图投影结构而非基于 axesm 的地图来投影坐标。

    创建一个用于正弦投影的地图投影结构。

    mstruct = defaultm("sinusoid");

    为地图投影结构指定地图边界和参考椭球体。再次使用 defaultm 函数,根据地图边界填充结构体的附加字段。

    mstruct.maplonlimit = [-150 -30];
    mstruct.geoid = referenceEllipsoid("grs80","kilometers");
    mstruct = defaultm(mstruct);

    加载海岸线数据并将其裁剪至地图边界。然后,使用 projfwd 函数和地图投影结构投影纬度和经度坐标。

    load coastlines
    [lat,lon] = maptriml(coastlat,coastlon,mstruct.maplatlimit,mstruct.maplonlimit);
    [x,y] = projfwd(mstruct,lat,lon);

    在笛卡尔坐标区上显示投影坐标。

    figure
    plot(x,y)
    axis equal

    Figure contains an axes object. The axes object contains an object of type line.

    输入参数

    全部折叠

    投影 ID,指定为字符向量或字符串标量。

    此代码演示了如何通过使用 maps 函数在命令行窗口中列出支持的投影 ID。

    m = maps("idlist")

    有关支持的投影 ID 的更多信息,请参阅投影摘要与指南

    数据类型: char | string

    输入地图投影结构,指定为与基于 axesm 的地图属性相同的结构体。有关基于 axesm 的映射的更多属性信息,请参阅 axesm-Based Map Properties

    输出参量

    全部折叠

    地图投影结构,以结构体形式返回,其字段与基于 axesm 的地图属性完全一致。地图投影结构字段的示例包括投影名称、角度单位、原点、方位角、虚东坐标和虚北坐标。有关基于 axesm 的映射的更多属性信息,请参阅 axesm-Based Map Properties

    地图投影结构使您能够对地理坐标进行投影和逆投影,而无需创建基于 axesm 的地图。您可以通过将地图投影结构作为输入,使用 projfwdvfwdtran 函数来投影坐标。您可以通过将地图投影结构作为输入,使用 projinvvinvtran 函数来解投影坐标。

    提示

    • 默认情况下,地图投影结构中的角度值字段以度为单位。若必须使用弧度单位,请更新结构体的 angleunits 字段,然后重置该结构体。此代码演示了如何将地图投影结构更新为使用弧度。

      mstruct = defaultm("mercator");
      mstruct.angleunits = "radians";
      mstruct = defaultm(mstruct);

      一旦将结构更新为使用弧度,在修改角度值字段(如 originparallelsmaplatlimitmaplonlimit)时必须使用弧度。

    • 您可以通过使用 gcm 函数,从基于 axesm 的地图中获取地图投影结构。此代码演示了如何通过使用 defaultm 函数,创建与基于 axesm 的地图相同的地图投影结构。

      % Set longitude limits and define reference ellipsoid
      lonlim = [-150 -30];
      ref = referenceEllipsoid("grs80","kilometers");
      
      % Create map projection structure using defaultm
      mstruct1 = defaultm("sinusoid");
      mstruct1.maplonlimit = lonlim;
      mstruct1.geoid = ref;
      mstruct1 = defaultm(mstruct1);
      
      % Create map projection structure from axesm-based map
      abm = axesm("sinusoid","maplonlimit",lonlim,"geoid",ref);
      mstruct2 = gcm(abm);
      f = gcf;
      close(f)
      
      % Compare map structures
      isequal(mstruct1,mstruct2)

    版本历史记录

    在 R2006a 之前推出

    全部展开