在Matlab中确定距海岸线的距离

2024-02-07

在 MATLAB 中,我有一组代表美国位置的纬度和经度对。我需要确定到最近海岸线的距离。

我认为 MATLAB 有一个内置的美国经纬度数据库。我如何访问并使用它?

关于如何有效确定距离还有什么建议吗?

Update:后续问题:使用 meshm 时确定 bin 的中心 https://stackoverflow.com/questions/3680621/determine-center-of-bins-when-using-meshm


由于我无权访问绘图工具箱 http://www.mathworks.com/products/mapping/,这对于解决这个问题来说是理想的,我想出了一个独立于任何工具箱的解决方案,包括图像处理工具箱 http://www.mathworks.com/products/image/.

史蒂夫·埃丁斯 https://stackoverflow.com/users/172800/steve-eddins has an The MathWorks 的图像处理博客 http://blogs.mathworks.com/steve/去年,他发表了一系列非常酷的帖子,专门讨论如何使用数字高程地图。具体来说,他指出了从哪里获取它们以及如何加载和处理它们。以下是相关博客文章:

  • 定位美国大陆分水岭,第 1 部分 - 简介 http://blogs.mathworks.com/steve/2009/04/24/continental-divide-1-intro/:在这里,Steve 展示了在哪里可以获得数字高程图 (DEM) 切片以及如何加载和处理它们。您可以获得 DEM 图块(tile E http://www.ngdc.noaa.gov/mgg/topo/DATATILES/elev/e10g.gz and tile F http://www.ngdc.noaa.gov/mgg/topo/DATATILES/elev/f10g.gz覆盖美国大陆)环球置地一公里基地高程项目 http://www.ngdc.noaa.gov/mgg/topo/globe.html。可以找到每个图块的纬度和经度范围here http://www.ngdc.noaa.gov/mgg/topo/gltiles.html.

  • 定位美国大陆分水岭,第 4 部分 - 海洋面具 http://blogs.mathworks.com/steve/2009/05/15/continental-divide-4-oceans/:使用上述帖子中经过处理的 DEM 数据,Steve 展示了如何创建海洋掩模。

利用这些 DEM 数据,您可以找出海洋边缘所在位置的纬度和经度,找到从内陆地图点到最近的这些沿海点的距离,然后进行可视化。我使用了该功能FILTER2 http://www.mathworks.com/access/helpdesk/help/techdoc/ref/filter2.html通过与海洋掩模的卷积以及计算方程来帮助找到海洋的边缘大圆距离 http://en.wikipedia.org/wiki/Great-circle_distance获取沿地球表面的地图点之间的距离。

使用上述博客文章中的一些示例代码,我得出以下结论:

%# Load the DEM data:

data_size = [6000 10800 1];  %# The data has 1 band.
precision = 'int16=>int16';  %# Read 16-bit signed integers into a int16 array.
header_bytes = 0;
interleave = 'bsq';          %# Band sequential. Not critical for 1 band.
byte_order = 'ieee-le';
E = multibandread('e10g',data_size,precision,...        %# Load tile E
                  header_bytes,interleave,byte_order);
F = multibandread('f10g',data_size,precision,...        %# Load tile F
                  header_bytes,interleave,byte_order);
dem = [E F];  %# The digital elevation map for tile E and F
clear E F;    %# Clear E and F (they are huge!)

%# Crop the DEM data and get the ranges of latitudes and longitudes:

[r,c] = size(dem);      %# Size of DEM
rIndex = [1 4000];      %# Row range of DEM to keep
cIndex = [6000 14500];  %# Column range of DEM to keep
dem = dem(rIndex(1):rIndex(2),cIndex(1):cIndex(2));  %# Crop the DEM
latRange = (50/r).*(r-rIndex+0.5);     %# Range of pixel center latitudes
longRange = (-180/c).*(c-cIndex+0.5);  %# Range of pixel center longitudes

%# Find the edge points of the ocean:

ocean_mask = dem == -500;        %# The ocean is labeled as -500 on the DEM
kernel = [0 1 0; 1 1 1; 0 1 0];  %# Convolution kernel
[latIndex,longIndex] = ...       %# Find indices of points on ocean edge
  find(filter2(kernel,~ocean_mask) & ocean_mask);
coastLat = latRange(1)+diff(latRange).*...     %# Convert indices to
           (latIndex-1)./diff(rIndex);         %#   latitude values
coastLong = longRange(1)+diff(longRange).*...  %# Convert indices to
            (longIndex-1)./diff(cIndex);       %#   longitude values

%# Find the distance to the nearest coastline for a set of map points:

lat = [39.1407 35 45];        %# Inland latitude points (in degrees)
long = [-84.5012 -100 -110];  %# Inland longitude points (in degrees)
nPoints = numel(lat);         %# Number of map points
scale = pi/180;               %# Scale to convert degrees to radians
radiusEarth = 3958.76;        %# Average radius of Earth, in miles
distanceToCoast = zeros(1,nPoints);   %# Preallocate distance measure
coastIndex = zeros(1,nPoints);        %# Preallocate a coastal point index
for iPoint = 1:nPoints                %# Loop over map points
  rho = cos(scale.*lat(iPoint)).*...  %# Compute central angles from map
        cos(scale.*coastLat).*...     %#   point to all coastal points
        cos(scale.*(coastLong-long(iPoint)))+...
        sin(scale.*lat(iPoint)).*...
        sin(scale.*coastLat);
  d = radiusEarth.*acos(rho);         %# Compute great-circle distances
  [distanceToCoast(iPoint),coastIndex(iPoint)] = min(d);  %# Find minimum
end

%# Visualize the data:

image(longRange,latRange,dem,'CDataMapping','scaled');  %# Display the DEM
set(gca,'DataAspectRatio',[1 1 1],'YDir','normal',...   %# Modify some axes
    'XLim',longRange,'YLim',fliplr(latRange));          %#   properties
colormap([0 0.8 0.8; hot]);  %# Add a cyan color to the "hot" colormap
xlabel('Longitude');         %# Label the x axis
ylabel('Latitude');          %# Label the y axis
hold on;                     %# Add to the plot
plot([long; coastLong(coastIndex).'],...    %'# Plot the inland points and
     [lat; coastLat(coastIndex).'],...      %'#   nearest coastal points
     'wo-');
str = strcat(num2str(distanceToCoast.',...  %'# Make text for the distances
                     '%0.1f'),{' miles'});
text(long,lat,str,'Color','w','VerticalAlignment','bottom');  %# Plot the text

这是结果图:

我猜这使我距离最近的“海洋”海岸线近 400 英里(实际上,这可能是近岸水道 http://en.wikipedia.org/wiki/Intracoastal_Waterway).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Matlab中确定距海岸线的距离 的相关文章

  • 在 MATLAB 中高效地形成动态窗口

    有人可以帮助我提供一种有效的方法 或者帮助我执行提供的代码 以尽可能少的步骤获得相同的结果 我将感激你 我有一个原始数组 A 1 1 1 4 3 4 5 4 4 3 3 1 0 0 2 6 2 6 3 6 6 2 7 4 8 7 2 2 2
  • 优化数组压缩

    假设我有一个数组k 1 2 0 0 5 4 0 我可以按如下方式计算掩码m k gt 0 1 1 0 0 1 1 0 仅使用掩码 m 和以下操作 左移 右移 And Or 加 减 乘 我可以将 k 压缩为以下形式 1 2 5 4 以下是我目
  • 数组中 2 个百分位之间的平均元素

    我有 2 个长度为 200 的向量 例如 A 和 B 然后我使用以下方法找到数组 A 的每第二个百分位数 A1 prctile A 1 2 100 1 这样A1是一个长度为50的数组 现在我想找到A1中每两个元素内的A元素的平均值 即A的第
  • 如何打开 matlab p 代码文件

    有谁知道如何查看 matlab p 代码文件的代码 p 代码文件专门存在 以便您可以共享代码 以便其他人无法查看它 换句话说 您看不到 Matlab p 代码文件的代码
  • MATLAB 中元胞数组的左连接

    I ve 2 cellMATLAB 中的数组 例如 A jim 4 paul 5 sean 5 rose 1 第二个 B jim paul george bill sean rose 我想做一个 SQL 左连接 这样我就可以得到 B 中的所
  • 是否有一个函数可以将两个元胞数组“压缩”在一起? [复制]

    这个问题在这里已经有答案了 假设我有一个元胞数组A and B as so A A B C D B 1 2 3 4 我想创建元胞数组C通过将 A 和 B 压缩 在一起 如下所示 C zip A B C A 1 B 2 C 3 D 4 这样的
  • 在matlab中设置图例符号的精度

    我有这个 leg2 strcat Max Degree num2str adet 1 1 ch l leg3 strcat Min Degree num2str adet 1 2 ch l leg4 strcat Max Request n
  • 增加 .fig 文件中的散点标记大小

    我有一个图形文件 scatter fig 该图有许多使用 scatter 的散点绘图仪 现在我只有这个无花果文件 我需要增加所有散点的标记大小 手动尝试过 但非常困难 有没有办法我可以做类似的事情 H 图形句柄 s 点 h 设置 s 标记大
  • 根据纬度和经度识别哪个是多边形

    我有一张使用 leaflet js 绘制的地图 如果我给出经度和纬度值作为输入 我可以识别多边形吗 我可以获得一个客户端脚本吗 得到答复如下 这是基于 多边形中的点算法 function getPoint float x 89 824218
  • 在 Matlab 中对列进行排序

    我有 2 列使用 textscan 导入的数据 数据看起来像这样 其中U is undetect and D is detect mydata 51 U 57 D 48 U 47 D my data 4x1 double 4x1 char
  • 如何使用Matlab提高PSD的分辨率

    我有音频信号 我用 Matlab 读取该信号 并使用 pwelch 获取其 PSD 这是我正在使用的代码 x Fs audioread audioFile wav x x 1 mono xPSD f pwelch x hamming 512
  • 如何选择部分密集数据集的均匀分布子集?

    P是一个 n d 矩阵 持有nd 维样本 P某些地区的密度是其他地区的几倍 我想选择一个子集P其中任意样本对之间的距离大于d0 并且我需要将其传播到整个区域 所有样本都具有相同的优先级 无需优化任何内容 例如覆盖面积或成对距离之和 这是执行
  • 如何获取活动对象 MATLAB GUI 的句柄

    我正在尝试使用 MATLAB GUI 创建日历 我有两个Edit Text对象 edittext1 and edittext2 我想做这个 我把光标放在edittext1然后在日历中选择日期 它会进入文本字段edittext1 同样对于ed
  • 这是 `min` 和 `nanmin` 之间的区别; Matlab 中的“max”和“nanmax”?

    Matlab描述nanmin and nanmax像这样 NANMIN最小值 忽略NaNs NANMAX最大值 忽略NaNs 但实际上 min and max ignore NaNs too 那我应该使用哪个 根据我的测试 nanmin a
  • 在 MATLAB 中用两个值替换向量值

    我必须创建一个以向量作为输入的函数v和三个标量a b and c 该函数替换了的每个元素v等于a有一个二元素数组 b c 例如 给定v 1 2 3 4 and a 2 b 5 c 5 输出将是 out 1 5 5 3 4 我的第一次尝试是尝
  • 估算缺失数据,同时强制相关系数保持不变

    考虑以下 excel 数据集 m r 2 0 3 3 0 8 4 0 1 3 2 1 5 2 2 3 1 9 2 5 1 2 3 0 2 0 2 6 我的目标是使用以下条件填充缺失值 将上述两列之间的成对相关性表示为 R 大约 0 68 将
  • 作为动画的八度情节点

    我有以下八度脚本 TOTAL POINTS 100 figure 1 for i 1 TOTAL POINTS randX rand 1 randY rand 1 scatter randX randY hold on endfor 当我运
  • 将 XML 数据提取到 php [重复]

    这个问题在这里已经有答案了 我正在尝试从 XML 文件中提取数据 http freegeoip net xml google com http freegeoip net xml google com 您可以看到该文件的内容类似于
  • 如何获取MATLAB句柄对象的ID?

    当我尝试使用时出现问题MATLAB 句柄对象 http www mathworks com help techdoc ref handle html作为关键值MATLAB 容器 Map http www mathworks com help
  • 垂直子图的单一颜色条

    我想让下面的 MATLAB 图有一个沿着两个子图延伸的颜色条 像这样的事情 使用图形编辑器手动完成 Note 这与提出的问题不同here https stackoverflow com questions 39950229 matlab t

随机推荐

  • C++11 const && 的绑定规则

    很多人不知道const右值引用是 C 11 语言的一部分 This http www codesynthesis com boris blog 2012 07 24 const rvalue references 博客文章讨论了它们 但在约
  • TFS Confluence 集成或替代方案

    我们可能会使用 Team Foundation Server TFS 但是 我发现它缺少 Confluence 管理需求文档的敏捷性 并且我认为 SharePoint 也没有那么好 我的问题是 是否可以将 TFS 与 Confluence
  • 防止幸运补丁/播放许可的方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我即将发布一个应用程序 但不希望它被盗版 有一些应用程序 例如 luckypatcher 即使您有许可 也可以为您破解该应用程序 有人
  • 我如何在android上设置相机防抖(图像稳定器)功能

    我制作了一个相机应用程序 我想添加防抖功能 但我找不到防抖 图像稳定器 的设置 请帮助我 通常图像稳定器是内置的相机功能 而OIS 光学图像稳定 是内置的hardware特征 到目前为止 很少有设备支持它们 如果设备没有内置功能 我认为您无
  • React 应用程序在部署后显示空白页面[重复]

    这个问题在这里已经有答案了 我之前在 GitHub 和 netlify 上创建并部署了单页 React 应用程序 它们都运行良好 问题在于使用react router的多页面应用程序 为了测试这一点 我尝试了几次不同的应用程序 一旦我实现了
  • 在特定日期重复 UILocalNotification

    我需要设置 UILocalNotification 我只需要从 DatePicker 获取小时和分钟 并且需要设置特定日期 比如 星期一 并每周一重复一次 我对此有两个问题 第一 是否可以在日期选择器的日期部分仅显示 日期名称 例如 星期日
  • JAX-RS (Resteasy 3.5.0.Final) + Wildfly 12 + Java 9 + maven = 404 未找到,但 JAX-RS (Resteasy 3.5.0.Final) + Wildfly 12 + Java 8 + ma

    我有一个简单的 Hello World 示例 JAX RS 项目 真的很简单又愚蠢 只是最小的配置 我打算在将来增强它 想象一下这样的事情 https robferguson org blog 2016 12 02 getting star
  • 在 django 中运行测试时设置 liveserver 端口

    我正在使用 django 作为 web 应用程序 并使用 docker 来部署它 我需要在带有硒的容器中测试它 我正在使用硒网格进行测试 为了与 docker 上的 liveserver 连接 我需要转发特定端口 但据我在 django 文
  • 添加特定 unicode 表情时 Discord.js message.react 失败

    昨天我开始使用discord js 的指南编写一个机器人 The core https github com discordjs guide tree master code samples command handling file se
  • 多个 id 的更新语句

    我有 3 个表 我需要通过计算其他两个表的数据来更新第三个表的列 update table3 set column3 select t2 column3 t1 column3 from table2 t2 with nolock join
  • 如何迭代 WeakMap?

    JavaScriptWeakMap https developer mozilla org en US docs Web JavaScript Reference Global Objects WeakMap不允许您通过设计获取密钥 长度或
  • 如何将 IEEE-754 格式整数输出为浮点数

    我有一个无符号长整数值 它表示使用 IEEE 754 格式的浮点数 在 C 中将其打印为浮点数的最快方法是什么 我知道一种方法 但我想知道 C 中是否有一个更好的方便实用程序 我所知道的方式的例子是 union unsigned long
  • 使用数据绑定和 MVVM 处理 onClick 事件

    我想设置一个onClickListener on an ImageView using Databinding并控制它ViewModel MVVM 在 xml 布局中我实现的所有内容Databinding作品 但 onClick 事件不起作
  • 在返回 observable 之前操作数据

    我对 Angular 2 和 Observables 的概念还很陌生 然而 对于经验丰富的专家来说 我想要实现的目标应该相当简单 所以 我有一个组件 其中有subscribed来自服务的可观察值 出于测试目的 我一直在使用数据数组来使我的组
  • 无法通过 Style 设置列表框的 GroupStyle?

    我正在尝试创建一个样式来为我的 ListBox 控件设置 GroupStyle 属性 但是我收到编译时错误 The Property Setter GroupStyle cannot be set because it does not h
  • 滑动侧边栏菜单 IOS 8 Swift [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有没有办法在 IOS Swift 中实现幻灯片侧边栏菜单 如 Facebook 应用程序 而不需要任何第三方库 我寻找解决方案 但我只
  • 一个好的(最好是免费的).Net 应用程序安装程序?

    我有一个使用 Sql Express 的 Net C 应用程序 开发已完成 现在我必须选择一些安装程序来部署我的应用程序 我尝试过 Microsoft Visual Studio 发布向导 但我又爱又恨它 我喜欢它 因为它可以检测客户端计算
  • Django 上的 memcache 不工作

    我有一个竞争条件Celery 受此启发 http ask github io celery cookbook tasks html ensuring a task is only execulated one at a time http
  • mysql 查询:按日期显示所有付款的摘要和发票总数

    I want this kind of result 从这些表中 我什至不知道如何用 php 来做到这一点 我什至尝试按日期加入付款和发票表 但没有成功 这是一个购买系统 此查询将按日期显示所有付款的摘要和发票总数 我想到了一个解决方案 首
  • 在Matlab中确定距海岸线的距离

    在 MATLAB 中 我有一组代表美国位置的纬度和经度对 我需要确定到最近海岸线的距离 我认为 MATLAB 有一个内置的美国经纬度数据库 我如何访问并使用它 关于如何有效确定距离还有什么建议吗 Update 后续问题 使用 meshm 时