geoshape

地理形状向量

描述

地理形状向量是用点、线或多边形拓扑表示地理向量特征的对象。这些特性包括纬度和经度坐标以及相关的属性。

在空间上变化的属性称为顶点属性。geoshape向量的这些元素是耦合的,这样纬度和经度坐标属性值的长度总是与任何其他动态顶点属性的长度相等。

只属于整体特征(点、线、多边形)的属性称为特征属性。特性属性没有链接到Vertex属性的自动调整大小机制。这两种属性类型都可以在构造过程中添加到地理形状矢量中,或者使用标准点()符号。

创建

描述

例子

s = geoshape ()构造一个空的几何形状矢量,年代,使用这些默认属性设置。

s = 0x1 geoshape vector with properties: Collection properties: Geometry: 'line' Metadata: [1x1 struct] Vertex properties: Latitude: [] Longitude: []

年代始终是列向量。

例子

s = geoshape (纬度经度设置纬度经度几何矢量的性质年代

例子

s = geoshape (纬度经度名称,值设置纬度经度属性,然后将动态属性添加到使用名称,值参数对。可以以任意顺序指定多个名称-值对参数名称1,值1,…,名称,值

例子

s = geoshape (structArray构造一个geoshape从结构数组的字段中得到的向量,structArray

  • 如果structArray包含的字段纬度,且不包含该字段纬度,那么纬度属性值设置为等于纬度字段值。类似的行为发生在structArray包含的字段且不包含该字段经度

  • 如果structArray既包含纬度纬度字段,然后纬度属性值设置为等于纬度字段值。同样,一个纬度将创建动态特性,并将其值设置为纬度字段值。对于经度字段中同时存在这两个字段时structArray

  • 其他structArray字段分配给年代变成动态属性。字段值在structArray非数值、字符串标量、字符串数组、字符向量、数字值、逻辑或字符向量的单元格数组将被忽略。可以将单元格数组中的向量指定为行向量或列向量。

例子

s = geoshape (纬度经度structArray设置纬度经度属性的字段值设置动态属性structArray

  • 如果structArray包含字段纬度纬度经度,则这些字段值将被忽略,因为纬度经度输入向量设置纬度经度属性值。

属性

全部展开

geoshape类是表示各种地理要素的通用类。此类允许要素具有多个顶点,因此除了多点之外,还可以表示直线和多边形。有关中特性类型的详细信息,请参阅geoshape,请参阅属性集合顶点属性,功能属性

动态属性是添加到地理形状矢量中的新特性和顶点。属性可以在构造过程中将动态属性附加到地理形状向量名称,值参数,或在构造后使用点()符号。这类似于向结构中添加新字段。有关添加动态Feature属性的示例,请参见构造一个带有动态属性的地理形状向量

地理形状向量中每个特征的形状,指定为“行”“点”,或“多边形”几何是一个Collection属性,因此每个对象实例只能有一个值,其目的纯粹是提供信息。三个允许值几何不要改变类行为。该类不验证直线或多边形拓扑。

数据类型:烧焦|字符串

纬度坐标,指定为数字行或列向量。纬度存储为行向量。纬度是一个Vertex属性。

数据类型:双重的|

经度坐标,指定为行或列向量。经度存储为行向量。经度是一个Vertex属性。

数据类型:双重的|

作为标量结构指定的每个特性的信息。可以向结构中添加任何数据类型。元数据是一个Collection属性,因此每个对象只允许一个实例。

  • 如果“元数据”在构造函数中作为动态属性名提供,对应的值是标量结构,然后价值被复制到元数据属性。否则,将发出错误。

  • 如果一个元数据字段由structArray,都元数据structArray是标量结构,那么元数据字段值复制到元数据属性值。如果structArray是一个标量,但元数据字段不是结构,则发出错误。如果structArray不是标量,那么元数据字段被忽略。

数据类型:结构体

对象的功能

附加 附加特征到地理或平面矢量
连接地理或平面矢量
disp 显示地理或平面矢量
字段名 返回地理矢量或平面矢量的动态特性名称
isempty 确定地理矢量或平面矢量是否为空
isfield 确定动态特性是否存在于地理矢量或平面矢量中
isprop 确定属性在地理或平面向量中是否存在
长度 返回地理或平面向量中的元素数
属性 返回地理或平面向量的属性名
rmfield 从地理或平面矢量中移除动态属性
rmprop 从地理或平面矢量中移除属性
大小 返回地理或平面矢量的大小
结构体 将地理或平面矢量转换为标量结构
vertcat 垂直连接地理或平面向量

例子

全部折叠

构造一个空的地理形状向量。

s = geoshape ()
s = 0x1 geoshape vector with properties: Collection properties: Geometry: 'line' Metadata: [1x1 struct] Vertex properties: Latitude: [] Longitude: []

设置纬度经度属性值使用点表示法。

s.Latitude = 0:45:90;s.经度= [10 10 10];

显示更新的地理形状矢量。

年代
s = 1x1 geoshape vector with properties: Collection properties: Geometry: 'line' Metadata: [1x1 struct] Vertex properties: Latitude: [0 45 90] Longitude: [10 10 10]

创建一个geoshape向量,指定纬度和经度值作为输入参数。

S = geoshape([42 43 45],[10 11 15])
s = 1x1 geoshape vector with properties: Collection properties: Geometry: 'line' Metadata: [1x1 struct] Vertex properties: Latitude: [42 43 45] Longitude: [10 11 15]

使用名称-值对创建一个地理形状向量来定义一个新的Feature属性。这个例子定义了一个名为“温度”赋值为89。

点= geoshape(42, -72,,)“温度”, 89)
point = 1x1 geoshape vector with properties: Collection properties: Geometry: 'line' Metadata: [1x1 struct] Vertex properties: Latitude: 42 Longitude: -72 Feature properties: Temperature: 89

要在构造完成后向地理形状向量添加动态属性,请使用标准点表示法。添加一个称为的动态属性“TemperatureUnits”与价值“华”

点。TemperatureUnits =“华”
[1x1 struct]顶点属性:纬度:42经度:-72特征属性:温度:89温度单位:“华氏度”

要修改属性,请使用标准点表示法。更新温度,并改变“几何”“点”

点温度=86;点几何=“点”
[1x1 struct]顶点属性:纬度:42经度:-72特征属性:温度:86温度单位:“华氏度”

这个例子强调了创建具有相同特征的地理形状向量的两种方法。第一种方法是在构造函数中为地理形状向量使用结构数组。第二种方法是在构造完成后将结构数组的字段添加到geoshape向量中。

首先,将数据读入结构数组。本例中的数组包含128个元素。每个元素使用多个位置顶点将河流定义为一条线。

structArray = shaperead (“worldrivers”“UseGeoCoords”,真正的);

中显示第一个元素structArray.请注意,纬度向量以a结束分隔符,用于分隔geoshape类中的顶点要素数据。

结构数组(1)
ans =结构体字段:几何:'Line' bound box: [2x2 double] Lon: [126.7796 126.5321 126.3121 126.2383 126.0362 NaN] Lat: [73.4571 73.0669 72.8343 72.6010 72.2894 NaN] Name: 'Lena'

方法1:将该结构作为参数提供给构建geoshape向量的构造函数。

创建一个geoshape向量,将结构数组作为参数提供给构造函数。

shape1=地理形状(structArray)
shape1 = 128x1 geoshape vector with properties: Collection properties: Geometry: 'line' Metadata: [1x1 struct] Vertex properties:(128个特征用127个分隔符连接)Latitude: [1x5542 double] Longitude: [1x5542 double] Feature properties: Name: {1x128 cell}

请注意,BoundingBoxstructArray中的字段不能被赋给属性shape1因为该字段值不是受支持的类型。万博1manbetx

方法2:在构造完成后,将特征添加到地理形状向量中。

创建一个空的地理形状矢量。

shape2 = geoshape;

添加顶点属性纬度经度使用点表示法从结构数组中的每个条目中提取。添加一个动态特性属性,RiverName,每条河流的名字structArray.的默认值几何属性集合“行”在本例中不需要显式地设置它。

Latitude={structArray.Lat};Longitude={structArray.Lon};shape2.RiverName={structArray.Name}
shape2 = 128x1 geoshape vector with properties: Collection properties: Geometry: 'line' Metadata: [1x1 struct] Vertex properties:(128个特征用127个分隔符连接)Latitude: [1x5542 double] Longitude: [1x5542 double] Feature properties: RiverName: {1x128 cell}

首先,将数据读入结构数组。本例中的数组包含128个元素。每个元素使用多个位置顶点将河流定义为一条线。

structArray = shaperead (“worldrivers”“UseGeoCoords”,对)
structArray =128×1带有字段的结构数组:几何边界框名称

创建纬度和经度向量。出于说明目的,向量不对应于structArray

Lat = {[0:10:40], [1:5]};{[-60:30:60], [0:2:8]};

使用经纬度矢量和结构数组构造一个地理形状矢量。

s = geoshape(纬度,经度,structArray);

的前三个元素年代. 特征用一个分隔符。

s(1:3)
ans = 3 x1 geoshape向量和属性:集合属性:几何:“线”的元数据:[1 x1 struct]顶点属性:(3功能连接与2分隔符)纬度:[0 10 20 30 40南1 2 3 4 5南0]经度:[-60 -30 0 30 60南0 2 4 6 8南0]功能属性:名称:{“莉娜”“莉娜”“麦肯锡”}

观察到geoshape使用参数纬度填充纬度经度属性,即使structArray提供了纬度字段值。而且,由于纬度元素比功能少structArray,纬度经度属性使用值0扩展大小。

创建一个包含世界城市位置的单一特征的地理形状向量。

S = shaperead (“worldcities.shp”“UseGeoCoords”,真正的);城市= geoshape ([S。Lat], [S。朗),“名字”{{S.Name}});城市。几何=“点”

将帕德伯恩德国附加到地理形状向量。

lat = 51.715254;朗= 8.75213;城市(1).Latitude结束(+ 1)=纬度;(1)城市.Longitude(结束)=朗;(1)城市。名字{结束}=“帕德伯恩”
[1x1 struct]顶点属性:Latitude: [1x319 double] Longitude: [1x319 double] Name: {1x319 cell}

每个顶点属性的长度在纬度(终点+1)是集。其余属性使用索引结束

您可以通过构造一个地理点向量来显示最后一个点。

帕德伯恩=地理点(城市。纬度(结束),城市。经度(结束),...“名字”,cities.Name{end})
paderborn = 1x1 geopoint vector with properties: Collection properties: Geometry: 'point' Metadata: [1x1 struct] Feature properties: Latitude: 51.7153 Longitude: 8.7521 Name: ' paderborn '

创建一个包含南北半球城市的两个新特征的地理形状矢量。添加一个位置动态特征属性来区分不同的分类。

(1) =北部城市。纬度> = 0;(1) =南部城市。纬度< 0;指数={北部;南方};位置= {北半球的“南半球”};半球= geoshape ();K = 1:length(index)...cities.Latitude(指数{k}), cities.Longitude(指数{k}),...“名字”{{cities.Name(指数k})},“位置”、位置{k});结束半球。几何=“点”
数据:[1x1 struct]顶点属性:(2个特征用1个分隔符连接)纬度:[1x320双]Longitude: [1x320双]Name: {1x320 cell}特征属性:位置:{'Northern Hemisphere' ' 'Southern Hemisphere'}

北方城市用红色标出,南方城市用蓝色标出。

半球。颜色={“红色”“蓝色”};图;worldmap (“世界”) geoshow (“陆地面积.上海医药”k = 1:2 geoshow(半球(k)。纬度,半球(k)。经度,...“DisplayType”半球。几何,...“MarkerEdgeColor”半球(k) .Color)结束

构造一个地理形状矢量并对其动态属性进行排序。

形状= geoshape (shaperead (“海啸”“UseGeoCoords”,真的));形状。几何=“点”;Shape = Shape (:, sort(fieldnames(Shape)))
shape = 162x1 geoshape vector with properties: Collection properties: Geometry: 'point' Metadata: [1x1 struct] Vertex properties:(162个特征用161个分隔符连接)Latitude: [1x323 double] Longitude: [1x323 double] Feature properties: Cause: {1x162 cell} Cause_Code: [1x162 double] Country: {1x162 cell} Day:[1x162 double] Desc_Deaths: [1x162 double] Eq_Mag: [1x162 double] Hour: [1x162 double] Iida_Mag: [1x162 double] Intensity: [1x162 double] Location: {1x162 cell} Max_Height: [1x162 double] Minute: [1x162 double] Month: [1x162 double] Num_Deaths: [1x162 double] Second: [1x162 double] Val_Code: [1x162 double] Validity: {1x162 cell}年份:[1x162 double

修改地理形状矢量,使其只包含动态属性,一年白天小时分钟

Shape = Shape (:, {)“年”“月”“天”“小时”“分钟”})
shape = 162x1 geoshape vector with properties: Collection properties: Geometry: 'point' Metadata: [1x1 struct] Vertex properties:(162个特征用161个分隔符连接)Latitude: [1x323 double] Longitude: [1x323 double] Feature properties: Year: [1x162 double] Month: [1x162 double] Day: [1x162 double] Hour: [1x162 double] Minute:[1 x162双]

显示前五个元素。

形状(1:5)
ans = 5x1 geoshape vector with properties: Collection properties: Geometry: 'point' Metadata: [1x1 struct] Vertex properties:(5个特征用4个分隔符连接)Latitude: [-3.8000 NaN 19.5000 NaN -9.0200 NaN 42.1500 NaN 19.1000] Longitude: [128.3000 NaN -156 NaN 157.9500 NaN 143.8500 NaN -155] Feature properties:年份:[1950 1951 1951 1952 1952]月:[10 8 12 3 3]日:[8 21 22 4 17]小时:[3 10 NaN 1 3]分钟:[23 57 NaN 22 58]

从文件中读取多个GPS跟踪日志数据。trk1trk2geopoint对象。

trk1 = gpxread (“sample_tracks”
trk1 = 1851x1 geopoint vector with properties: Collection properties: Geometry: 'point' Metadata: [1x1 struct] Feature properties: Latitude: [1x1851 double] Longitude: [1x1851 double] Elevation: [1x1851 double] Time: {1x1851 cell}
trk2 = gpxread (“sample_tracks”“指数”2);

要构造具有多个特征的地理形状向量,请将坐标放置到单元阵列中。

lat = {trk1。纬度,trk2.纬度};朗= {trk1。经度,trk2.经度};

将海拔和时间值放入单元格数组中。

海拔= {trk1。海拔高度,trk2.海拔高度};时间= {trk1。时间,trk2.时间};

构造包含两个轨迹日志特征的地理形状向量,其中包括海拔高度时间作为动态顶点属性。

轨道=地理形状(纬度、经度、,“高度”海拔高度,“时间”、时间)
track = 2x1 geoshape vector with properties: Collection properties: Geometry: 'line' Metadata: [1x1 struct] Vertex properties:(2个特征用1分隔符连接)Latitude: [1x2591 double] Longitude: [1x2591 double] Elevation: [1x2591 double] Time: {1x2591 cell}

每一个纬度经度坐标对有关联海拔高度时间值。

若要构造包含动态Feature属性的地理形状向量,请使用与坐标单元格数组长度相同的数组。例如,添加aMaximumElevation动态特征属性。

tracks.MaximumElevation=[最大(trk1.高程)最大(trk2.高程)]
tracks=2x1带属性的地理图形向量:集合属性:几何体:“线”元数据:[1x1结构]顶点属性:(2个要素与1个分隔符连接)纬度:[1x2591双精度]经度:[1x2591双精度]高程:[1x2591双精度]时间:{1x2591单元格}要素属性:最大高程:[92.4240 76.1000]

Feature属性值只有两个数值,每个特性对应一个数值。

从MAT文件加载海岸线数据。

负载海岸线

创建一个n-by-2海岸线纬度和经度值数组。

PTS =[海岸海岸];

创建geoshape对象并存储纬度和经度数据。如果将纬度和经度坐标值存储在n2数组,geoshape分配纬度属性值为第一个经度属性值为第二

形状= geoshape ();形状(1)=分
[1x1 struct]顶点属性:纬度:[1x9865 double]经度:[1x9865 double]

请注意,纬度经度将行向量存储在地理形状向量中。

现在,创建一个2-by-海岸线纬度和经度值的数组。注意括号内的分号。

pts2=[coastlat;coastlon];

创建一个geoshape对象并存储纬度和经度数据-数组,geoshape分配纬度属性值为第一个经度属性值为第二

shape2 = geoshape ();shape2 (1) = pts2
shape2 = 1x1 geoshape vector with properties: Collection properties: Geometry: 'line' Metadata: [1x1 struct] Vertex properties: Latitude: [1x19730 double] Longitude: [1x19730 double]

更多关于

全部展开

提示

  • geoshape函数使用价值观如果通过使用标量索引到地理形状向量来显示要素,例如(1),然后分隔特性的值不会显示。

  • 如果纬度经度,或将动态属性设置为比geoshape向量中的特性更多的值,则所有其他属性使用0(数值为0,字符向量为空)扩展大小('')为单元格值。

  • 如果设置的动态特性的值少于特征数,则此动态特性将展开以匹配其他特性的大小,如果该值为数字或空字符向量,则插入0(''),如果该值是单元格数组。

  • 如果纬度经度属性设置为比对象中包含的值更少的值,则所有其他属性都会缩小大小。

  • 如果有的话纬度经度设置为[],然后两个坐标属性都设置为[],并删除所有动态属性。

  • 如果将动态特性设置为[],则会将其从对象中删除。

  • 地理形状向量可以索引像任何MATLAB®向量。您可以访问向量的任何元素以获得特定的特性。下面的例子演示了这种行为:

    使用索引将单点和形状附加到地理形状矢量

    使用索引排序和修改动态特性

    从多个对象构建一个地理形状向量

介绍了R2012a