主要内容

地理数据结构

映射工具箱™软件提供了一个简单的显示手段,提取和矢量地图功能组织的操作集合地理数据结构

地理数据结构是MATLAB®结构数组,每一个元素的地理特征。每个特性由坐标和属性。地理数据结构,地理坐标(经度和纬度)geostruct,一个保存地图坐标(预计xy)被称为mapstruct。矢量地理数据结构只保存功能,不能用于保存栅格数据(定期或定位数据网格或图像)。

或者,您可以代表矢量数据通过使用地理空间表。地理空间表时间表对象与一个形状变量和属性变量。更多关于地理空间信息表,请参阅创建地理空间表

shapefile

地理数据结构最常从shapefile导入矢量地理数据时产生。环境系统研究所设计的shapefile格式矢量地理数据。shapefile编码坐标点,测点、线、或多边形,连同non-geometrical属性。

一个shapefile属性和坐标存储在单独的文件中;它由一个主文件,索引文件,一个xBASE文件。这三个文件有相同的基本名称和杰出的扩展.shp,.shx,.dbf,分别。(例如,考虑到基地的名字“concord_roads”shapefile文件名称“concord_roads.shp”,“concord_roads.shx”,“concord_roads.dbf”)。

地理数据结构的内容

shaperead函数从shapefile读取向量的特征和属性,并返回一个地理数据结构数组。的shaperead函数在运行时确定属性字段的名称从shapefile xBASE表或可选的,指定的参数。如果一个shapefile属性名称不能直接用作字段名称,shaperead分配领域一个适当修改名称,通常用下划线代替空间。

字段在一个地理数据结构

字段名 数据类型 描述 评论

几何

特征向量

以下形状类型之一:“点”,“多点”,“行”,或“多边形”

对于一个“多线”,的值几何字段是简单的“行”

BoundingBox

2×2数值数组

指定最小和最大坐标值特征在每个维度下面的形式:

( 最小值 ( X ) 最小值 ( Y ) 马克斯 ( X ) 马克斯 ( Y ) ]

省略了形状类型“点”

X,Y,,或纬度

1)×(n组类

坐标向量。

Attr

特征矢量和标量数字

属性名称、类型和值。

可选的。通常有多个属性。

shaperead函数金宝app支持任何3 d或“测量”形状类型:“博”,“PointM”,“MultipointZ”,“MultipointM”,“PolyLineZ”,“PolyLineM”,“PolygonZ”,“PolylineM”,或“Multipatch”。此外,虽然“零形状”可以出现在一个特性“点”,“多点”,“多线”,或“多边形”shapefile时,他们将被忽略。

多段线多边形形状

在地理数据结构多边形几何图形、个人特性可以有多个parts-disconnected线段和多边形戒指。大纲的部分可以包括逆时针内圈“漏洞”。对于一个n illustration of this, see创建和显示多边形。每个连接部分是分开下南内XY(或纬度)向量。您可以使用isShapeMultipart函数来确定一个功能有NaN-separated部分。

每个多点或NaN-separated扇形线或多边形实体构成一个单一的功能,因此有一个特征向量或标量/属性字段值的两倍。不可能将不同的属性分配给不同地区的功能;向量任何字符或数字属性与进口(或随后添加到)geostruct或mapstruct适用于所有功能的部分结合在一起。

Mapstructs和Geostructs

默认情况下,shaperead返回一个mapstruct包含XY字段。这是适当的,如果数据集的坐标已经预计(在地图坐标系统)。否则,如果数据集坐标非预料的(在地理坐标系),使用参数值对“UseGeoCoords”,真的为了使shaperead返回一个geostruct有纬度字段。

协调类型。如果你不知道一个shapefile使用地理坐标或地图坐标,这里有一些事情你可以试试:

  • 如果shapefile文件包括一个投影(.prj),使用shapeinfo得到的坐标参考系统的信息。如果CoordinateReferenceSystem返回的结构是一个领域projcrs对象,你有地图坐标。如果字段是一个geocrs对象,你有地理坐标。

  • 如果shapefile文件不包括投影,使用shapeinfo获取BoundingBox。通过观察坐标的范围,你可以告诉你什么样的坐标。

  • 问你的数据提供者。

geoshow函数显示地理特性存储在geostructs,mapshow函数显示存储在mapstructs地理特性。如果你想显示一个mapstructgeoshow警告和调用,函数问题mapshow。如果你想显示一个geostructmapshow功能项目板块Carree投影的坐标和问题一个警告。

分析地理数据结构

这里的一个例子是一个过滤mapstruct返回shaperead:

S = shaperead (“concord_roads.shp”)

输出显示如下:

S = 609 x1结构体数组字段:X Y边界框(几何大小)STREETNAME RT_NUMBER类ADMIN_TYPE长度

shapefile包含609个特性。除了几何,BoundingBox,协调字段(XY),有5个属性字段:STREETNAME,RT_NUMBER,,ADMIN_TYPE,长度

看第十元素:

(10)

输出显示如下:

:边界框(ans =几何:‘行’大小)[2 x2双]X: [1 x9双]Y: [1 x9双]STREETNAME:赖特农场RT_NUMBER:”类:5 ADMIN_TYPE: 0长度:79.0347

这个mapstruct包含“行”特性。第十个有九个顶点。前两个属性的值是特征向量。第二个是一个空的特征向量。最后三个属性数值。的元素年代,XY可以有不同长度,但STREETNAMERT_NUMBER必须始终包含特征向量,然后呢,ADMIN_TYPE长度必须始终包含标量双打。

在这个例子中,shaperead返回一个过滤mapstruct。如果你想过滤掉一些属性,请参阅选择Shapefile要读取的数据为更多的信息。

如何构建地理数据结构

等功能shapereadgshhs返回geostructs在导入矢量地理数据。然而,您可能想要创建geostructs或mapstructs自己在某些情况下。例如,您可能进口矢量地理数据不是存储在一个shapefile(例如,从MAT-file,从一个微软®Excel®电子表格,或通过阅读在分隔的文本文件)。你也可能计算矢量地理数据和属性通过调用各种MATLAB工具箱函数或映射。在这两种情况下,坐标和其他数据通常是在工作区中向量或矩阵。包装变量geostruct或mapstruct可以简化映射和出口,因为地理坐标数组数据结构提供了几个优势:

  • 所有相关的地理数据变量是打包在一个容器,一个结构数组。

  • 结构自我记录的字段名称。

  • 你可以改变地图标记的点,线,通过构造一个多边形根据其属性值symbolspec用于显示geostruct或mapstruct。

  • 之间存在一一对应的结构元素和地理特性,扩展了的孩子hggroup对象由mapshowgeoshow

实现这些好处并不困难。使用下面的例子作为指导包装矢量地理数据或创建导入地理数据结构。

使Geostructs点和线

下面的示例首先创建一个点geostruct包含三个城市在不同的大洲,情节geoshow。然后它创建一个行geostruct大圆包含数据导航跟踪连接这些城市。最后,它使用symbolspec情节这些线。

  1. 开始少量的点数据,大致纬度和经度三大洲的三个城市:

    latparis = 48.87084;lonparis = 2.41306;%巴黎坐标latsant = -33.36907;lonsant = -70.82851;%圣地亚哥latnyc = 40.69746;lonnyc = -73.93008;%纽约

  2. 建立一个点geostruct;它需要有以下必填字段:

    • 几何(在这种情况下“点”)

    • 纬度(点,这是一个标量双)

    • (点,这是一个标量双)

    %第一个字段按照惯例是几何(维度)。%作为所有元素的几何形状是相同的,分配与交易:[城市(1:3)。几何]=交易(“点”);% geostruct加入纬度和经度:城市(1)。Lat = latparis;(1)城市。朗= lonparis; Cities(2).Lat = latsant; Cities(2).Lon = lonsant; Cities(3).Lat = latnyc; Cities(3).Lon = lonnyc; % Add city names as City fields. You can name optional fields % anything you like other than Geometry, Lat, Lon, X, or Y. Cities(1).Name = 'Paris'; Cities(2).Name = 'Santiago'; Cities(3).Name = 'New York'; % Inspect your completed geostruct and its first member Cities Cities = 1x3 struct array with fields: Geometry Lat Lon Name Cities(1) ans = Geometry: 'Point' Lat: 48.8708 Lon: 2.4131 Name: 'Paris'

  3. 在墨卡托投影显示geostruct地球陆地的存储在landareas.shpshapefile,设置地图限制排除极地地区:

    axesm(“墨卡托”、“网格”,“上”,“MapLatLimit”, 75 [-75]);tightmap;%地图geostruct与欧洲大陆轮廓geoshow (landareas.shp) %地图的城市位置填充圆形标记geoshow(城市、“标记”、“o”,…“MarkerFaceColor”、“c”,“MarkerEdgeColor”、“k”);%显示城市geostruct字段名中使用数据名称。%注意,您必须把单元阵列名称字段。textm([城市(:). lat],[城市(:).Lon],…{城市(:). name},‘FontWeight’,‘大胆’);

    纽约,圣地亚哥,和巴黎世界地图标记

  4. 接下来,构建一个行geostruct包大圆导航轨迹之间的三个城市:

    %调用新的geostruct跟踪和给它一个几何行:[跟踪(1:3)。几何]=交易(“行”);%创建一个文本字段识别跟踪每个条目。%这里他们都将大圈,确定为' gc %(某些功能所使用的特征向量表示大圆弧线)trackType =“gc”;(跟踪。交易类型]= (trackType);%给每个跟踪识别名称(1)。Name = ' Paris-Santiago ';((1)。纬度Tracks(1).Lon] = ... track2(trackType,latparis,lonparis,latsant,lonsant); Tracks(2).Name = 'Santiago-New York'; [Tracks(2).Lat Tracks(2).Lon] = ... track2(trackType,latsant,lonsant,latnyc,lonnyc); Tracks(3).Name = 'New York-Paris'; [Tracks(3).Lat Tracks(3).Lon] = ... track2(trackType,latnyc,lonnyc,latparis,lonparis);

  5. 计算长度的大圆跟踪:

    %之间的距离函数计算距离和方位%给定的点,在度。geostruct存储。j = 1:元素个数(跟踪)(dist az) =…距离(trackType,跟踪(j) . lat (1)……跟踪(j) .Lon (1)……跟踪(j) . lat(结束),…跟踪(j) .Lon(结束));(跟踪(j)。长度]=经销;(跟踪(j)。Azimuth] = az; end % Inspect the first member of the completed geostruct Tracks(1) ans = Geometry: 'Line' Type: 'gc' Name: 'Paris-Santiago' Lat: [100x1 double] Lon: [100x1 double] Length: 104.8274 Azimuth: 235.8143

  6. 图中的三个追踪geostruct行:

    %在圆柱投影像墨卡托,大圆曲目%是弯曲的,除了那些遵循赤道或子午线。%图形区分轨道通过创建一个symbolspec;%关键线颜色轨道长度,使用colormap“夏天”。% Symbolspecs方便不同颜色和线型%属性值。您还可以指定默认象征学。colorRange = makesymbolspec(‘行’,……{“长度”,[min ([Tracks.Length])…马克斯([Tracks.Length])],……“颜色”,冬季(3)});geoshow(追踪,SymbolSpec colorRange);

    相同的世界地图追踪在纽约和巴黎之间,纽约和圣地亚哥,巴黎和圣地亚哥

    您可以保存您刚才创建的geostructs shapefile通过调用shapewrite您选择的文件名称,例如:

    shapewrite(城市、“citylocs”);shapewrite (, ' citytracks ');

使多边形Geostructs

创建一个geostruct或mapstruct多边形数据类似于建筑一个点或线数据。然而,如果你的多边形包含多个NaN-separated部分,回想一下,他们只能有一个价值/属性,每部分不是一个值。每个属性在一个结构元素对于这样一个多边形属于其所有部分。这意味着,如果您定义的一群岛屿,例如用一个NaN-separated列表为每个坐标,所有属性的元素描述这些岛屿作为一个群体,而不是特定的岛屿。如果你想把属性与一个特定的岛,你必须提供一个不同的结构元素,岛。

请注意,多边形顶点的排序问题。多边形数据映射时,多边形的方向遍历有意义如何呈现等功能geoshowmapshow。正确的方向尤为重要,如果多边形包含漏洞。外环的坐标映射工具箱会议编码(例如,大陆和岛屿轮廓)顺时针顺序;逆时针方向排序用于内圈(例如,内陆湖泊和海洋)。在坐标数组,每个环南分开前的那一个。

当绘制mapshowgeoshow、顺时针戒指了。逆时针的环空;任何潜在的符号显示通过这些漏洞。确保内部和外部环正确编码根据上述约定,可以调用以下函数:

  • ispolycw——真正的顶点的多边形轮廓是否顺时针命令

  • poly2cw——多边形轮廓转换为顺时针顺序

  • poly2ccw——多边形轮廓转换为逆时针方向排序

  • poly2fv——转换多边形区域face-vertex形式使用补丁为了正确渲染多边形包含漏洞

三种功能检查或修改命令定义一个多边形的顶点,和第四个转换多边形孔完全不同的表现。

与多边形geostructs合作的一个例子,请参阅(GSHHG) Shapefile格式转换海岸线数据

映射的工具箱版本1显示结构

版本2之前,geostructs和mapstructs介绍时,采用不同的数据结构从某些外部进口地理数据格式来封装的时候地图显示功能。这些显示结构同时满足光栅和矢量地图数据和其他类型的对象,但缺乏当前geostructs的普遍性和mapstructs表示向量的特性和被淘汰的工具箱。但是,您可以将显示包含geostruct形式使用矢量地理数据的结构updategeostruct。关于版本1的更多信息显示结构和它们的用法,看看版本1显示结构在页面的引用displaym。位于参考页面的额外信息updategeostruct

另请参阅

|

相关的话题