在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 PARFOR 循环可以通过编程方式打开/关闭吗?

    有一个关于 MATLAB 中 parfor 的简单问题 我想在程序中设置一个标志 以便在 parfor 和常规 for 循环之间进行更改 基本上 我需要此功能 以便我的代码的某些部分可以在 调试 模式下更新图形 然后当关闭该标志时 使用 p
  • 两个 y 轴与相同的 x 轴[重复]

    这个问题在这里已经有答案了 可能的重复 在单个图中绘制 4 条曲线 具有 3 个 y 轴 https stackoverflow com questions 1719048 plotting 4 curves in a single plo
  • 在另一列中添加具有特定条件的一列,如 excel 的 sumif

    我有一个像这样的矩阵 A 1 2 2 3 3 4 4 5 5 6 6 8 7 9 8 5 9 4 现在我想添加第二列 条件是如果 limit 0 interval 3 且 limit limit interval 或者换句话说 当第 1 列
  • 不等间隔时间序列的移动平均线

    我有一个证券交易所股票价格的数据集 时间 价格 但数据点之间的间隔并不相等 从 1 到 2 分钟不等 在这种情况下计算移动平均值的最佳实践是什么 如何在Matlab中实现呢 我倾向于认为 点的权重应该取决于自上一个点以来的最后时间间隔 Ma
  • 使用 MATLAB 进行线路跟踪

    我有一个图像 我想将其转换为逻辑图像 包括线条为黑色 背景为白色 当然 可以使用阈值方法来实现这一点 但我不想使用这种方式来做到这一点 我想通过使用线路跟踪方法或类似的方法来检测它 这是关于视网膜血管检测的 我找到了一个article ht
  • 在 R 中使用 k-NN 和分类值

    我希望对主要具有分类特征的数据进行分类 为此 欧几里得距离 或任何其他数值假设距离 不适合 我正在寻找 R 的 kNN 实现 其中可以选择不同的距离方法 例如汉明距离 有没有一种方法可以使用常见的 kNN 实现 例如具有不同距离度量函数的
  • MATLAB 教程中的 SIFT 实现

    我正在寻找 MATLAB 中的一些基本 SIFT 实现 我需要从第一原则来写它 另外 我正在寻找一些可以解释程序中发生的事情的内容 Vedali 的代码和 David Lowe 的代码超出了我的理解范围 如果您是 Matlab 用户 您一定
  • C#:如何确定坐标是否在美国大陆?

    我正在获取坐标 纬度 经度 我想检查这些坐标是否位于美国大陆 有没有一种简单的方法可以在 C 中实现 我可以将坐标转换为 MGRS 或 UTM 谢谢 哇哦 他们专门为你准备了 http econym org uk gmap states x
  • 如何计算 React-Native 中 MapView 组件的纬度和经度增量?

    我如何从 React Native 中的 MapView 组件的纬度和经度值计算增量纬度和增量经度值 谢谢 如果您有一个坐标数组并且想要一个适合所有这些点的区域 您可以执行以下操作 const regionContainingPoints
  • 在python中查找地理数据中圆内的所有坐标

    我有数百万个地理点 对于其中的每一个 我想找到所有 邻近点 即某个半径 例如几百米 内的所有其他点 这个问题有一个简单的 O N 2 解决方案 简单地计算所有点对的距离 但是 因为我正在处理适当的距离度量 地理距离 所以应该有一种更快的方法
  • matlab中的正则逻辑回归代码

    我正在尝试正则化 LR 在 matlab 中使用以下公式很简单 成本函数 J theta 1 m sum y i log h x i 1 y i log 1 h x i lambda 2 m sum theta j 梯度 J theta t
  • 使用 google geocoding api jquery 从经度和纬度获取城市名称

    我想从经度和纬度获取城市名称 我正在使用以下代码 但它返回包含城市名称 邮政编码 省份和国家 地区的完整地址 我只想要城市名称 ajax url http maps googleapis com maps api geocode json
  • 如何使用 MATLAB 的 substruct 函数创建表示使用“end”的引用的结构?

    我想使用substruct http www mathworks com help matlab ref substruct html函数创建一个结构体以供使用subsref 目的是使用索引字符串subsref而不是通常的 符号 因为我正在
  • 通过 Matlab 访问 Physionet 的 ptbdb 中的数据库

    我首先设置系统 old path which rdsamp if isempty old path rmpath old path 1 end 8 end wfdb url http physionet org physiotools ma
  • MATLAB - 冲浪图数据结构

    我用两种不同的方法进行了计算 对于这些计算 我改变了 2 个参数 x 和 y 最后 我计算了每种变体的两种方法之间的 误差 现在我想根据结果创建 3D 曲面图 x gt on x axis y gt on y axis Error gt o
  • 球体表面上(经度、纬度)点的凸包

    标准凸包算法不适用于 经度 纬度 点 因为标准算法假设您需要一组笛卡尔点的包 纬度 经度点是not笛卡尔坐标系 因为经度在反子午线处 环绕 180 度 即 东经 179 度以东 2 度为 179 因此 如果您的点集恰好横跨反子午线 您将错误
  • “Desort”向量(撤消排序)

    在Matlab中 sort返回排序后的向量和索引向量 显示哪个向量元素已移动到以下位置 v ix sort u Here v是一个包含所有元素的向量u 但已排序 ix是一个向量 显示每个元素的原始位置v in u 使用 Matlab 的语法
  • 在matlab中绘制给定区域内(两个圆之间)的向量场

    我想在 Matlab 中绘制下面的向量场 u cos x x 0 y y 0 v sin x x 0 y y 0 我可以在网格中轻松完成 例如 x 和 y 方向从 2 到 2 x 0 2 y 0 1 x y meshgrid 2 0 2 2
  • ROC曲线和libsvm

    给定一条 ROC 曲线plotroc m see here http www csie ntu edu tw cjlin libsvmtools roc curve for binary svm 理论问题 如何选择要使用的最佳阈值 编程问题
  • Matlab 的 imresize 函数中用于插值的算法是什么?

    我正在使用 Matlab Octaveimresize 对给定的二维数组重新采样的函数 我想了解如何使用特定的插值算法imresize works 我在Windows上使用八度 e g A 1 2 3 4 是一个二维数组 然后我使用命令 b

随机推荐

  • 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 时