如何选择区域正是基于经纬度?

32视图(30天)
大家好,
我需要做分析这部分(图1中黑色)。我想要非常精确的关于区域选择。有无论如何我可以选择区域正是基于经纬度?我绘制的数据来自hdf文件。谢谢你!

答案(3)

KSSV
KSSV 2021年7月5日
读到 inpolygon 。如果你有封闭的多边形的坐标可以指数躺在这个封闭的多边形。
6个评论
KSSV
KSSV 2021年7月5日
如何绘制黑色线条的阴谋吗?
如果你有x, y点inpolygon使用。

登录置评。


图像分析
图像分析 2021年7月5日
无法确定你的意思。这些是你想要做什么?
  1. 如何drawpolygon()交互式地选择/画多边形区域?
  2. 或者你的意思是你有一个列表,N(纬度、经度)坐标已经以某种方式和您想大纲或在列表上显示图像。
3评论
IMC
IMC 2021年7月5日
纬度和经度限制我的图:
h1 = axesm (“墨卡托”,“MapLatLimit”55,[15],“MapLonLimit”150年[80]);
其次,在这个hdf形象我显示每一个像素都有其lat经度值。我刚读参数(云温度(CT))和纬度,经度 hdfread。 然后图。
geoshow (h1,纬度,经度,CT,“DisplayType”,“texturemap”)
图像的最小纬度:33.1063
马克斯纬度的形象:54.5416
图像的最小经度:95.9691
马克斯·朗的形象:130.7437
下面的图连接。谢谢你!

登录置评。


图像分析
图像分析 2021年7月5日
试试这个。它要求你的纬度和经度的极限,然后用一个函数,把空间校准图像(行、列)或(y, x) latitidue和经度。然后发现了彩色的多边形区域和标签的极限边界框纬度,经度。然后打印出每个像素的纬度和经度多边形区域的命令窗口。
%演示图像分析师,2021年6月,。
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
clearvars;
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 16;
流(运行% s的开始。m…\ n”,mfilename);
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%读入图像。
文件夹= [];
baseFileName =“map.jpeg”;
fullFileName = fullfile(文件夹,baseFileName);
%检查文件是否存在。
如果~ isfile (fullFileName)
%的文件不存在,没有找到它在该文件夹。
%检查整个搜索路径(其他文件夹)去掉文件的文件夹。
fullFileNameOnSearchPath = baseFileName;%没有路径。
如果~存在(fullFileNameOnSearchPath“文件”)
%仍然没有找到它。提醒用户。
errorMessage = sprintf (的错误:% s在搜索路径的文件夹不存在。,fullFileName);
uiwait (warndlg (errorMessage));
返回;
结束
fullFileName = fullFileNameOnSearchPath;
结束
rgbImage = imread (fullFileName);
(行、列,numberOfColorChannels) =大小(rgbImage)
%显示测试图像尺寸。
次要情节(2 2 1);
imshow (rgbImage []);
轴(“上”,“图像”);
标题= sprintf (“原始图像:“% s”,baseFileName);
标题(标题,“字形大小”字形大小,“翻译”,“没有”);
drawnow;
惠普= impixelinfo ();%设置状态栏看到当你鼠标值图像。
%设置图属性:
%全屏放大图。
hFig1 = gcf;
hFig1。单位=“归一化”;
hFig1。WindowState =“最大化”;
%去掉工具栏和下拉菜单的图。
%设置(gcf“工具栏”,“没有”,“菜单”,“没有一个”);
%的标题栏提供一个名称。
hFig1。Name =的演示图像分析师”;
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%找到轴框。
axesBoxMask = rgbImage (:: 1) < 128;
%填补
axesBoxMask = imfill (axesBoxMask,“黑洞”);
%将最大团
axesBoxMask = bwareafilt (axesBoxMask, 1);
次要情节(2,2,2);
imshow (axesBoxMask);
网格;
标题(“轴面具”,“字形大小”、字形大小);
%的边界框
[r、c] =找到(axesBoxMask);
第一行= min (r);
row2 = max (r);
col1 = min (c);
col2 = max (c);
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
%得到纬度和经度坐标。
%问用户两个浮点数。
defaultValue = {“60”,“15”};
titleBar =输入纬度值的;
userPrompt = {“进入最高纬度:”,“输入底纬度:”};
caUserInput = inputdlg (userPrompt titleBar 1, defaultValue);
如果isempty (caUserInput),返回,结束如果他们点击取消%纾困。
%从字符串转换为浮点数。
lat1 = str2double (caUserInput {1})
lat2 = str2double (caUserInput {2})
% usersValue1检查有效性。
如果isnan (lat1)
%他们没有输入一个数字。
%他们点击取消,或输入一个字符,符号,或别的东西不允许的。
%将默认从一个字符串,插到usersValue1。
lat1 = str2double (defaultValue {1});
消息= sprintf (”我说必须是一个数字。\ nTry替换用户。倪\将使用%。2 f,继续。”,lat1);
uiwait (warndlg(消息));
结束
%为usersValue2做同样的事情
% usersValue2检查有效性。
如果isnan (lat2)
%他们没有输入一个数字。
%他们点击取消,或输入一个字符,符号,或别的东西不允许的。
%将默认从一个字符串,插到usersValue2。
lat2 = str2double (defaultValue {2});
消息= sprintf (”我说必须是一个数字。\ nTry替换用户。倪\将使用%。2 f,继续。”,lat2);
uiwait (warndlg(消息));
结束
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
%获得经度坐标。
%问用户两个浮点数。
defaultValue = {“80”,“150”};
titleBar =“输入经度值”;
userPrompt = {“进入左经度:”,“输入正确的经度:”};
caUserInput = inputdlg (userPrompt titleBar 1, defaultValue);
如果isempty (caUserInput),返回,结束如果他们点击取消%纾困。
%从字符串转换为浮点数。
lon1 = str2double (caUserInput {1})
lon2 = str2double (caUserInput {2})
% usersValue1检查有效性。
如果isnan (lon1)
%他们没有输入一个数字。
%他们点击取消,或输入一个字符,符号,或别的东西不允许的。
%将默认从一个字符串,插到usersValue1。
lon1 = str2double (defaultValue {1});
消息= sprintf (”我说必须是一个数字。\ nTry替换用户。倪\将使用%。2 f,继续。”,lon1);
uiwait (warndlg(消息));
结束
%为usersValue2做同样的事情
% usersValue2检查有效性。
如果isnan (lon2)
%他们没有输入一个数字。
%他们点击取消,或输入一个字符,符号,或别的东西不允许的。
%将默认从一个字符串,插到usersValue2。
lon2 = str2double (defaultValue {2});
消息= sprintf (”我说必须是一个数字。\ nTry替换用户。倪\将使用%。2 f,继续。”,lon2);
uiwait (warndlg(消息));
结束
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
%得到彩色的地区。
[regionMask, maskedRGBImage] = createMask (rgbImage);
%填补
regionMask = imfill (regionMask,“黑洞”);
%采取最大2团只有彩色的地区——和彩条(以防彩条更大)。
regionMask = bwareafilt (regionMask 2);
%最左侧的一个。它将标签1
labeledImage = bwlabel (regionMask);
regionMask = ismember (labeledImage, 1);%提取区域标记# 1。
%显示图像。
次要情节(2、2、3);
imshow (regionMask []);
轴(“上”,“图像”);
标题(“地区面具”,“字形大小”字形大小,“翻译”,“没有”);
drawnow;
惠普= impixelinfo ();%设置状态栏看到当你鼠标值图像。
%得到一个公式列转换成纬度和经度
% lat = a + b *行
latCoefficients = polyfit([第一行,row2], [lat1 lat2], 1)
lonCoefficients = polyfit ([col1, col2], [lon1 lon2], 1)
%得到多边形regionMask的坐标
(rp, cp) =找到(axesBoxMask);
%的边界框
prow1 = min (rp);
prow2 = max (rp);
pcol1 = min (cp);
pcol2 = max (cp);
markerSize = 25;
持有;
%标签左上角。
(纬度、经度)= GetLatAndLon (prow1、pcol1 latCoefficients, lonCoefficients)
str = sprintf ('(纬度、经度)= \ n (%。1 f % .1f) '纬度,经度);
情节(pcol1 prow1,' r + ',“MarkerSize”markerSize,“线宽”2);
文本(pcol1 prow1, str,“颜色”,“r”,“字形大小”10“FontWeight”,“大胆”);
%标签左下角。
(纬度、经度)= GetLatAndLon (prow2、pcol1 latCoefficients, lonCoefficients)
str = sprintf ('(纬度、经度)= \ n (%。1 f % .1f) '纬度,经度);
情节(pcol1 prow2,' r + ',“MarkerSize”markerSize,“线宽”2);
文本(pcol1 prow2, str,“颜色”,“r”,“字形大小”10“FontWeight”,“大胆”);
%标签右上角。
(纬度、经度)= GetLatAndLon (prow1、pcol2 latCoefficients, lonCoefficients)
str = sprintf ('(纬度、经度)= \ n (%。1 f % .1f) '纬度,经度);
情节(pcol2 prow1,' r + ',“MarkerSize”markerSize,“线宽”2);
文本(pcol2 prow1, str,“颜色”,“r”,“字形大小”10“FontWeight”,“大胆”);
%标签右下角。
(纬度、经度)= GetLatAndLon (prow2、pcol2 latCoefficients, lonCoefficients)
str = sprintf ('(纬度、经度)= \ n (%。1 f % .1f) '纬度,经度);
情节(pcol2 prow2,' r + ',“MarkerSize”markerSize,“线宽”2);
文本(pcol2 prow2, str,“颜色”,“r”,“字形大小”10“FontWeight”,“大胆”);
drawnow;
%打印出每一个点的纬度和经度在该地区的面具。
k = 1:长度(rp)
x = cp (k);
y = rp (k);
(纬度、经度)= GetLatAndLon (y, x, latCoefficients lonCoefficients);
流(“点(行,坳)= (% d % d)在(纬度、经度)= (% f % f)。\ n”,
y、x,纬度、经度);
结束
流(“做运行% s.m \ n”,mfilename);
对话框(的完成。检查命令窗口的坐标。);
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
函数[BW, maskedRGBImage] = createMask (RGB)
% createMask阈值从colorThresholder应用RGB图像使用自动生成的代码。
% (BW, MASKEDRGBIMAGE] = createMask (RGB)阈值图像RGB使用
%从colorThresholder应用。色彩和自动生成的代码
%范围内设置每个通道的色彩应用。
在BW %分割掩模返回,面具和复合
%在maskedRGBImage返回原始RGB图像。
%自动生成colorThresholder应用于05年- 7 - 2021
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%将RGB图像转换为选择的颜色空间
I = rgb2hsv (RGB);
%定义通道1基于直方图的阈值设置
channel1Min = 0.000;
channel1Max = 0.939;
%定义通道2基于直方图的阈值设置
channel2Min = 0.328;
channel2Max = 1.000;
%定义通道3基于直方图的阈值设置
channel3Min = 0.000;
channel3Max = 1.000;
%基于直方图阈值选择创建蒙版
sliderBW =(我(::1)> = channel1Min) &(我(:,:1)< = channel1Max) &
(我(::2)> = channel2Min) &(我(:,:2)< = channel2Max) &
(我(::3)> = channel3Min) &(我(:,:,3)< = channel3Max);
BW = sliderBW;
%初始化输出掩盖图像基于输入图像。
maskedRGBImage = RGB;
%设置背景像素,BW假为零。
maskedRGBImage (repmat (~ BW, [1 1 3])) = 0;
结束
%返回经度和纬度给定一个行和列(x和y)。
函数(纬度、经度)= GetLatAndLon (prow1、pcol1 latCoefficients, lonCoefficients)
x = pcol1;
y = prow1;
朗= polyval (lonCoefficients x);
lat = polyval (latCoefficients y);
结束
2的评论

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!