泰森多边形的matlab实现

写在前面

泰森多边形求流域的均值。借助ARCGIS可以直接计算,但是目前算的程序都是MATLAB在跑,现在总结下MATLAB怎么利用泰森多边形计算流域平均值。

Arcgis计算泰森多边形
1.导入站点.shp和流域边界.shp
2.Analysis Tools—Proximity—Create Thiessen Polygons
3.设置Create Thiessen Polygons里的Environments…
输出范围和输出文件投影坐标——OK
4.Analysis Tools—Extract—Clip
5.属性列表条件field——几何计算——导出dbf。

MATLAB先上代码

x = gallery('uniformdata',[30 1],0); %生成一个30行的均匀随机数,0表示一组的代码
y = gallery('uniformdata',[30 1],1);
voronoi(x,y)

在这里插入图片描述
加上对应的标志符

voronoi(x,y)

% Assign labels to the points.
nump = length(x);
plabels = arrayfun(@(n) {sprintf('X%d', n)}, (1:nump)');
hold on
Hpl = text(x, y, plabels, 'FontWeight', ...
      'bold', 'HorizontalAlignment','center', ...
      'BackgroundColor', 'none');
hold off

在这里插入图片描述
对于 Voronoi 图的拓扑,即每个 Voronoi 元胞的顶点,请使用 voronoin。

[v,c] = voronoin([x(:) y(:)])

[v,c] = voronoin(X) 返回 Voronoi 图 X 的 Voronoi 顶点 v 和 Voronoi 元胞c。
——v 是由 n 维空间中的 numv Voronoi 顶点组成的 numv×n 数组,每行对应于一个 Voronoi 顶点。
v 中的第一个顶点是无限顶点。c 是向量元胞数组长度 length(x),表示与每个点相关联的 Voronoi 区域。因 此,与点 [x(i),y(i)]相关联的 Voronoi 区域是 c{i}。
——c 是一个向量元胞数组,其中每个元素包含指向对应 Voronoi 元胞的顶点的 V 的索引。
最后利用polyarea命令计算面积。在计算中忽略v的第一个顶点值(inf),具体校核涉及到了边界问题。

[v , c] = voronoin(x,y); %大致思路,点inf的问题未近一步处理。
for i = 1 : size(c ,1)
  ind = c{i}';
  tess_area(i,1) = polyarea( v(ind,1), v(ind,2))
end

限定边界的问题,有人给出了个插件,有时间再言。

参考文献

[1]voronoi函数说明
[2]gallery函数介绍
[3]delaunayTriangulation函数说明
[4]triplot函数说明
[5]MATLAB中计算平面多边形面积的polyarea和convhull
[6]自编彩色的泰勒多边性画法
[7]Voronoi 图 matlab mtp工具箱下载地址

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值