MATLAB 帮助中心
本页采用了机器翻译。点击此处可查看英文原文。
将经纬度坐标投影至 x-y 地图坐标系
[x,y] = projfwd(proj,lat,lon)
[x,y] = projfwd(proj,lat,lon) 将由 lat 和 lon 指定的经纬度坐标转换为 x 和 y 地图坐标,该坐标系采用由 proj 指定的投影坐标参考系。使用 projcrs 对象 (自 R2020b 起)、地图投影结构或 GeoTIFF 信息结构来指定 proj。
x
y
proj
lat
lon
projcrs
示例
全部折叠
通过指定地图投影,将经纬度坐标投影至 x-y 坐标系。然后,将投影后的坐标显示在地图上。
为此,首先需指定波士顿地标的经纬度坐标。请使用 NAD83 地理坐标参考系指定坐标。
lat = [42.3604 42.3691 42.3469 42.3480 42.3612]; lon = [-71.0580 -71.0710 -71.0623 -71.0968 -71.0941];
然后,将波士顿的 GeoTIFF 图像导入为数组和地图单元参考对象。通过查询参考对象的 ProjectedCRS 属性获取地图投影信息。验证投影 CRS 所基于的地理坐标系是否为 NAD83。
ProjectedCRS
[A,R] = readgeoraster("boston.tif"); proj = R.ProjectedCRS; proj.GeographicCRS.Name
ans = "NAD83"
将经纬度坐标投影到 x-y 坐标系,使用与 GeoTIFF 图像相同的投影坐标参考系 (CRS)。
[x,y] = projfwd(proj,lat,lon);
在同一张地图上同时显示 GeoTIFF 图像和投影坐标。更改坐标的标记符号和颜色,使其更醒目。然后,添加坐标轴标签。
mapshow(A,R) mapshow(x,y,DisplayType="point",Marker="o", ... MarkerFaceColor="y",MarkerEdgeColor="none") xlabel("x (survey feet)") ylabel("y (survey feet)")
地图投影,指定为 projcrs 对象 (自 R2020b 起)、标量地图投影结构 (mstruct) 或 GeoTIFF 信息结构。有关地图投影结构的更多信息,请参阅 defaultm。有关 GeoTIFF 信息结构的更多信息,请参阅 geotiffinfo。
mstruct
defaultm
geotiffinfo
数据类型: struct
struct
大地纬度,指定为标量值、向量、矩阵或 N 维数组,单位为度。lat 和 lon 的大小必须匹配。
数据类型: single | double
single
double
大地经度,指定为标量值、向量、矩阵或 N 维数组,单位为度。lat 和 lon 的大小必须匹配。
投影后的 x 坐标,以标量值、向量、矩阵或 N 维数组形式返回。
投影后的 y 坐标,以标量值、向量、矩阵或 N 维数组形式返回。
如果 lat 和 lon 的地理坐标参考系与 proj 的地理坐标参考系不匹配,则 x 和 y 的数值可能不准确。当 proj 是 projcrs 对象时,可通过查询其 GeographicCRS 属性获取其地理坐标系。例如,此代码演示了如何根据 EPSG 代码 32610 创建一个 projcrs 对象,并查找其关联的地理坐标参考系。
GeographicCRS
proj = projcrs(32610); proj.GeographicCRS.Name
ans = "WGS 84"
全部展开
projfwd
当在同一 MATLAB® 会话中多次调用 projfwd 和 projinv 函数,且输入相同的 projcrs 对象或地图投影结构时,其在 Windows® 上的性能表现得到提升。
projinv
例如,这段代码比上一版本快了约 1.67 倍。代码:
获取 DTED 文件的网格坐标
使用 projcrs 对象对坐标进行投影和反投影
获取另一个 DTED 文件的网格坐标
使用相同的 projcrs 对象测量投影和逆投影坐标所需的时间
function timingTest info1 = georasterinfo("n39_w106_3arc_v2.dt1"); R1 = info1.RasterReference; [latGrid1,lonGrid1] = geographicGrid(R1); p = projcrs(4088); [xfwd1,yfwd1] = projfwd(p,latGrid1,lonGrid1); [latinv1,loninv1] = projinv(p,xfwd1,yfwd1); info2 = georasterinfo("n40_w106_3arc_v2.dt1"); R2 = info2.RasterReference; [latGrid2,lonGrid2] = geographicGrid(R2); tic [xfwd2,yfwd2] = projfwd(p,latGrid2,lonGrid2); [latinv2,loninv2] = projinv(p,xfwd2,yfwd2); toc end
大致的执行时间为:
R2022a:0.70 秒
R2022b:0.42 秒
该代码在搭载 Windows 10 核 Intel® Xeon® CPU W-2133 @ 3.6 GHz 的测试系统上进行了计时,通过调用函数 timingTest 完成。
timingTest
您可以通过指定一个 projcrs 对象来进行坐标投影。projcrs 对象支持使用早期版本中不可用的投影方法(如 Hotine 斜墨卡托投影)进行坐标转换。
此外,您还可以通过指定具有任何有效 mapprojection 字段的地图投影结构来投影坐标。要获取 mapprojection 字段选项的列表,请使用 maplist 或 maps 函数。
mapprojection
maplist
maps
projlist
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 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处