readgeotable
说明
使用名称-值参数指定选项。例如,使用名为 T = readgeotable(filename,Name=Value)CoordinateSystemType 的名称-值参数指定坐标系类型。
示例
将包含马萨诸塞州康科德市道路网络的 shapefile 读取到工作空间中,作为地理空间表。
T = readgeotable("concord_roads.shp");该表的 Shape 变量包含道路形状的相关信息,包括坐标参考系 (CRS)。此 shapefile 中的道路形状采用投影坐标参考系。
T.Shape.ProjectedCRS
ans =
projcrs with properties:
Name: "NAD83 / Massachusetts Mainland"
GeographicCRS: [1×1 geocrs]
ProjectionMethod: "Lambert Conic Conformal (2SP)"
LengthUnit: "meter"
ProjectionParameters: [1×1 map.crs.ProjectionParameters]
在地图上显示道路。
mapshow(T) xlabel("x (meters)") ylabel("y (meters)")

可选的投影文件 (.prj) 决定了 shapefile 的坐标系类型。当您的 shapefile 没有投影文件,但您知道坐标系类型时,可通过 CoordinateSystemType 名称-值参数进行指定。
读取名为 tsunamis.shp 的 shapefile 文件(包含海啸事件信息)至工作空间。该文件的元数据表明,该 shapefile 使用地理坐标。
T = readgeotable("tsunamis.shp",CoordinateSystemType="geographic");
查看地理空间表的 Shape 变量。海啸震源位置以点的形式存储。
T.Shape
ans =
162×1 geopointshape array with properties:
NumPoints: [162×1 double]
Latitude: [162×1 double]
Longitude: [162×1 double]
Geometry: "point"
CoordinateSystemType: "geographic"
GeographicCRS: []
在地图上标注源位置。
lat = T.Shape.Latitude; lon = T.Shape.Longitude; geoiconchart(lat,lon)

GPX 文件最多可包含五个图层:航点、轨迹、轨迹点、路线和路线点。当读取包含轨迹点或路线点的图层时,地理空间表中包含一个 ID 变量,该变量将点与轨迹或路线相关联。
导入包含两条轨迹的 GPX 文件中的轨迹图层。每条轨迹的 Shape 变量都是一个 geolineshape 对象。
T = readgeotable("sample_tracks.gpx",Layer="tracks")
T=2×3 table
Shape Name Number
____________ _________________________________________________________________________________________ ______
geolineshape "Track logs from walking the perimeter of the MathWorks campus in Natick on May 21, 2007" 1
geolineshape "Track logs from biking from Concord to the MathWorks campus in Natick on June 30, 2011" 2
查看每条轨迹的形状。第一条轨迹包含一个区段,第二条轨迹包含五个区段。
T.Shape(1)
ans =
geolineshape with properties:
NumParts: 1
Geometry: "line"
CoordinateSystemType: "geographic"
GeographicCRS: [1×1 geocrs]
T.Shape(2)
ans =
geolineshape with properties:
NumParts: 5
Geometry: "line"
CoordinateSystemType: "geographic"
GeographicCRS: [1×1 geocrs]
导入轨迹点图层。每个点的 Shape 变量是一个 geopointshape 对象。
T2 = readgeotable("sample_tracks.gpx",Layer="track_points"); T2.Shape
ans =
2586×1 geopointshape array with properties:
NumPoints: [2586×1 double]
Latitude: [2586×1 double]
Longitude: [2586×1 double]
Geometry: "point"
CoordinateSystemType: "geographic"
GeographicCRS: [1×1 geocrs]
创建一个子表,其中仅包含第二条轨迹中的点。对于此文件,第二条轨迹中点的 TrackFID 值为 1。
rows = (T2.TrackFID == 1); T3 = T2(rows,:);
使用蓝色线条显示子表中的点。
lat = T3.Shape.Latitude;
lon = T3.Shape.Longitude;
geoplot(lat,lon,Color="b")
从网站读取 GeoJSON 数据,并将其保存至文件 storms.geojson。该数据包含来自美国国家海洋和大气管理局/国家气象局风暴预测中心的第 1 天对流天气预报。有关对流展望的更多信息,请参阅 [1]。有关数据的链接,请参阅 [2]。
websave("storms.geojson","https://www.spc.noaa.gov/products/outlook/day1otlk_cat.lyr.geojson");
将数据读取到地理空间表中。如果文件中没有可供 readgeotable 函数读取的数据(例如当没有严重雷暴威胁时),则创建一个包含空多边形形状的地理空间表。
try GT = readgeotable("storms.geojson"); catch GT = table(geopolyshape,"No Data","none",VariableNames=["Shape" "LABEL2" "fill"]); end
查看地理空间表的 Shape 变量。该表将地理区域存储为多边形。
GT.Shape
ans=2×1 geopolyshape array with properties:
NumRegions: [2×1 double]
NumHoles: [2×1 double]
Geometry: "polygon"
CoordinateSystemType: "geographic"
GeographicCRS: [1×1 geocrs]
第一天的对流天气预报会逐日变化,因此您的结果可能有所不同。
在卫星底图上显示对流展望图。要根据雷暴风险等级创建图例,请将表格的每一行绘制为独立的多边形。
figure geobasemap satellite hold on for k = 1:height(GT) row = GT(k,:); geoplot(row,"DisplayName",row.LABEL2,"FaceColor",row.fill) end legend alpha(0.6)
添加标题,包括访问日期。
dt = datetime("today",Format="MMMM d, yyyy"); title("Day 1 Convective Outlooks",string(dt))

[1] "SPC Products."NOAA/National Weather Service Storm Prediction Center.Accessed June 28, 2022. https://www.spc.noaa.gov/misc/about.html.
[2] "SPC Shapefile/KML/KMZ Links."NOAA/National Weather Service Storm Prediction Center.Accessed June 28, 2022. https://www.spc.noaa.gov/gis/.
自 R2023b 起
OpenStreetMap® 文件包含多个数据图层,包括点图层、线图层、多线串图层和多边形图层。readgeotable 函数从 OpenStreetMap 文件中读取的数据取决于您指定的图层。
指定一个包含日本东京涩谷区多个街区数据的 OpenStreetMap 文件名称 [1]。
filename = "shibuya.osm";将读取的行数据层加载到地理空间表中。线条图层表示诸如道路、人行道和铁路轨道等特征。该表格通过线形在地理坐标系中表示线条。
linesLayer = readgeotable(filename,Layer="lines");在地图上显示这些线条。
figure
geoplot(linesLayer)
title("Lines Layer")
将点图层读取到地理空间表中。点图层表示诸如交通信号灯、公交站和地铁入口等要素。该表格通过点形状在地理坐标系中表示点位。
pointsLayer = readgeotable(filename,Layer="points");在同一张地图上显示这些点。
hold on geoplot(pointsLayer) title("Points and Lines Layers")

有关如何解读特定地理特征(如铁路和地铁入口)的信息,请参阅Read Data from OpenStreetMap Files示例。
[1] You can download OpenStreetMap files from https://www.openstreetmap.org, which provides access to crowd-sourced map data all over the world.The data is licensed under the Open Data Commons Open Database License (ODbL), https://opendatacommons.org/licenses/odbl/.
自 R2023b 起
从扩展名为 .osm 的 OpenStreetMap 文件中读取建筑物数据,例如建筑物轮廓、质心和高度。
指定一个包含日本东京涩谷区多个街区数据的 OpenStreetMap 文件名称 [1]。
filename = "shibuya.osm";通过将 readgeotable 函数的 Layer 名称-值参量指定为 "buildings",将建筑物图层读取到地理空间表中。该表格采用地理坐标系中的多边形形状表示建筑物。
buildingsLayer = readgeotable(filename,Layer="buildings");在地图上显示建筑物,并根据建筑物的最高高度进行颜色标注。添加标题,更改颜色图,并添加带标签的颜色栏。
figure geoplot(buildingsLayer,ColorVariable="MaxHeight") title("Maximum Heights of Buildings") colormap sky c = colorbar; c.Label.String = "Height in Meters";

有关如何根据地理空间表中存储的信息显示建筑物数据的信息,请参阅Display Buildings from OpenStreetMap Files示例。
[1] You can download OpenStreetMap files from https://www.openstreetmap.org, which provides access to crowd-sourced map data all over the world.The data is licensed under the Open Data Commons Open Database License (ODbL), https://opendatacommons.org/licenses/odbl/.
输入参数
名称-值参数
将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
示例: readgeotable("sample_tracks.gpx",Layer="track_points") 从 GPX 文件中读取轨迹点图层。
当文件包含多个图层时,指定要读取的图层,可以是正整数、字符串标量或字符向量。若指定整数,则该数值必须小于或等于文件中矢量图层的数量。此参数区分大小写。
文件中包含的图层取决于文件格式。
| 文件格式 | 层格式 |
|---|---|
| Esri 文件地理数据库 | 文件的内容决定了图层的数量和图层的名称。 |
| GeoJSON | 文件的内容决定了图层的数量和图层的名称。 |
| GeoPackage | 文件的内容决定了图层的数量和图层的名称。 |
| GPX | 将图层指定为以下选项之一:
|
| KML | 每个文件夹及其子文件夹均对应一个图层,且文件夹名称与图层名称一致。 |
| KMZ | 底层 KML 文件中的每个文件夹及其子文件夹均对应一个图层,且文件夹名称与图层名称一致。 |
| OpenStreetMap® | 将图层指定为以下选项之一。有关各层存储数据的更多信息,请参阅Data Stored in OpenStreetMap Layers。
|
| 形状文件 | shapefile 包含一个图层。 |
数据类型: single | double | char | string
坐标系类型,指定为以下值之一:
"auto"- 根据文件内容创建Shape表变量。"geographic"- 使用geopointshape、geolineshape和geopolyshape对象创建Shape表变量。"planar"- 使用mappointshape、maplineshape和mappolyshape对象创建Shape表变量。
当 readgeotable 函数无法检测到坐标系类型时,请指定坐标系类型。
对于 shapefile,坐标系类型由可选的投影文件 (.prj) 确定。如果您的 shapefile 没有投影文件,您可以尝试通过以下任一方式确定坐标系类型:
请参阅元数据。
请咨询您的数据提供商。
使用
shapeinfo函数将 shapefile 的信息以结构体形式返回。然后,通过查询结构体的BoundingBox字段查看数据的边界。这些范围或许能帮助您预测坐标系类型。
用于保留变量名的标志,可选以下选项之一:
"preserve"- 保留不符合 MATLAB 标识符规则的变量名,例如包含空格和非 ASCII 字符的变量名。"modify"- 将由isvarname函数标识的无效变量名转换为有效的 MATLAB 标识符。
数据类型: char | string
输出参量
地理空间表,以地理空间表形式返回。地理空间表是一个包含 Shape 变量和属性变量的 table 对象。
Shape变量包含关于点、线和多边形形状的二维信息。Shape变量可包含形状类型的组合。所有形状都采用相同的坐标参考系 (CRS)。readgeotable函数通过使用geopointshape、geolineshape和geopolyshape对象,将地理坐标系中的坐标表示为形状。readgeotable函数通过使用mappointshape、maplineshape和mappolyshape对象,在投影 CRS 中表示具有坐标的形状。属性变量包含诸如名称、分类和测量值等数据。
当数据文件包含坐标参考系 (CRS) 信息时,readgeotable 函数会将该信息存储为每个形状对象内的 projcrs 或 geocrs 对象。
有关从 OpenStreetMap 文件创建的地理空间表的更多信息,请参阅 Data Stored in OpenStreetMap Layers。
详细信息
readgeotable 函数支持这些文件格式。
Esri file geodatabase (
.gdb)GeoJSON(
.json或.geojson)GeoPackage (
.gpkg) (自 R2025a 起)GPX (
.gpx)KML (
.kml)KMZ (
.kmz) (自 R2023b 起)OpenStreetMap(
.osm或.osm.pbf) (自 R2023b 起)Shapefile (
.shp)
某些文件格式由主文件和多个辅助文件组成。例如,shapefile 包含一个主文件 (.shp)、一个索引文件 (.shx) 和一个属性文件 (.dbf)。当使用 readgeotable 函数读取包含辅助文件的数据文件时,请指定主文件的扩展名。
当文件包含三维点、线或多边形时,该函数仅将二维信息读取到地理空间表的 Shape 变量中。
对于 GeoJSON 文件,所有属性均适用于地理空间表中的所有行,即使该 GeoJSON 文件并未将某个属性应用于所有元素。当文件未将属性应用于某个元素时,地理空间表中对应的单元格将包含缺失数据值。
对于 GPX 文件,不支持 Garmin® 扩展名。
对于 KML 和 KMZ 文件,readgeotable 函数仅将形状、名称和描述读取到地理空间表中。
版本历史记录
在 R2021b 中推出readgeotable 函数可从 GeoPackage 格式文件 (.gpkg) 中读取矢量数据。
readgeotable 函数能够读取 OpenStreetMap 格式(.osm、.osm.pbf)文件中的数据和建筑物。
readgeotable 函数可读取 KMZ 格式文件 (.kmz) 中的数据。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)