检查是否纬度,经度坐标polyshape多边形内下降
36 Ansichten(30天)的
Altere Kommentare anzeigen
我试图创建一个for循环,经过一个工作簿和情节工作簿中的每个电子表格的多边形。每个多边形的极限值。我的目标是创建另一个情节,只有点值小于多边形的限制,也在同样的多边形。这一过程完成对每个多边形在每个电子表格。
我的问题是,当我检查点是否在多边形内,逻辑回归为每个多边形内点是零。我肯定那不是真的。多边形是由纬度和经度坐标点也是这样。我试着用“isinterior”和“inpolygon“我得到相同的结果。我想知道我失踪。我什么都不能帮助在论坛上帮助我克服这个驼峰。
这是代码的一部分,检查:
为我= 1:nSheet% nSheet是表的数量。它定义了多边形的数量吗
Polyin = polyshape (boundlon{我}(:1),boundlat{我}(:1));
为j = 1:尺寸(Pfd_value, 1)% Pfd_value x1双是356
% TFin = inpolygon (Pfd_lon (j), Pfd_lat (j), finalplot.Longitude, finalplot.Latitude);
TFin = isinterior (Polyin Pfd_lon (j), Pfd_lat (j));
如果Pfd_value (j) < = Limit_range (i) & & TFin = = 1% Limit_range constantlimit每个多边形
colormap (hsv(大小(Pfd_value, 1)));
geoscatter (Pfd_lat (j), Pfd_lon (j), [], Pfd_value (j),“o”,“填充”);
结束
结束
结束
1 Kommentar
wenqing钟
3月14日。2022年
你应该将经度和纬度转换为XY,使用极坐标转换为XY坐标系。然后使用“inpolygon”或isinterior。因为你polyshape多边形折叠或不连续由于在极地地区。
Akzeptierte Antwort
克里斯·拉皮埃尔
我2021年2月22日
我认为你的输入
inpolygon
需要的点。尝试使用的输入
polyshape
。inpolygon可以测试查询点的向量。下面是一个示例(未测试)。
TFin = inpolygon (Pfd_lon、Pfd_lat boundlon{我}(:1),boundlat{我}(:1));
7 Kommentare
克里斯·拉皮埃尔
3月14日。2022年
这听起来像一个工作流
groupsummary
。只是一个注意,我不认为你可以使用
Polyin
。你必须使用单独的
boundlon{我}(:1)
和
boundlat{我}(:1)
。集团由纬度然后经度和设置方法的总和。
Weitere Antworten (1)
史蒂文的主
我2021年2月22日
我会vectorize计算。让我们做一个简单的
polyshape
:
P = polyshape ([0.75 0.3 -0.4 -0.1 -0.6 -0.3 0.5], [0.1 0.6 0.8 -0.25 0.1 -0.8 0.2]);
情节(P)
轴([1 1 1 1])
持有在
现在让我们产生一些采样点。
xy兰德(10,2)= 2 * 1;% - 1和+ 1之间的随机数
他们在polyshape P ?测试在一个调用所有的点,而不是测试每个单独的点。
isin = isinterior (P, xy (: 1), xy (:, 2));
现在把它们。
情节(xy(型号,1),xy(型号,2),“去”,“MarkerSize”12“MarkerFaceColor”,‘g’)
情节(xy(~型号,1),xy(~型号,2),“处方”,“MarkerSize”,12)
这样做的好处只创建三个轴的图形对象:
多边形
由策划
polyshape
红色的X标记的线,线与绿色圆圈标记。代码创建了大量的图形对象为个人观点。你可能适应这个使用
散射
而不是
情节
。