利用matlab提取中心线

先看看代码运行结果(红色部分表示河流中心线,黑色表示河流两岸!):

注:

1. 由于河流两岸的坐标不是等距采样,所以无法保证100%准确,只要按着要求处理河岸坐标数据Shape文件,能保证95%以上能和真正的中心线重合;

2. 一条河流计算一次,支流另行计算;

3.计算中心线同样适合公路,且效果更好。

本程序主要有两个难点:

        1. 提取中心线

        2. 两侧目标点对应匹配

解决方法:

        1. 利用三角网格方法计算中心线(提示:三角形侧边中点连线平行于底边,因此只需要计算侧边中点);

        2. 可以通过重采样的方式来实现;

部分matlab代码:

%==================================说明====================================
%   根据河流两岸的一些列点坐标(2D),计算中心线,计算河流蜿蜒度;
%   作用:根据河流两岸的一些列点坐标(2D),计算中心线,计算河流蜿蜒度;
%   作者:胡礼珍
%   单位:厦门大学联合遥感接收站
%   邮件:hulizhen@xmu.edu.cn
%   Q  Q:249***701
clear;close all;clc;
[FileName,PathName,index] = uigetfile({'*.shp'},'shp文件读取','MultiSelect','off');
if index == 0errordlg('Shape输入错误,请重新输入','输入错误');return;                         %终止运行程序
end
% 由于数据的原因,不建议批量处理
S = shaperead([PathName,FileName]);             % 读取Shape文件
if length(S) ==2                                % 若线段个数等于2%%  Result_Data= River_Shoreline(S)./1000;      % 计算首尾位移和路程line1 = [S(1).X',S(1).Y';];                 % 第一条岸线line2 = [S(2).X',S(2).Y';];                 % 第二条岸线% line1和line2必须首尾一直line2 = line2(end:-1:1,:);                  % line 翻转,根据实际而定% Centerline = Center_Line(line1,line2);    % 计算中心线[Centerline,line1,line2] = Center_Line(line1,line2);      % 计算中心线%% 计算路程和路径% 第一行表示位移长度,剩下的每行表示一条线段的长度Result_Data = sqrt(sum((Centerline-[Centerline(end,:);Centerline(1:end-1,:)]).^2,2));Result_Data = [Result_Data(1,:),sum(Result_Data(2:end,:))]./1000;  % [位移,路程]Meanderness = Result_Data(1,2)/Result_Data(1,1);         % 蜿蜒度
else                                            % 若线段个数不等于2errordlg('Shape输入错误,请重新处理Shape文件','输入错误');return;                                     % 终止运行程序
end%% 显示
figure('Name','位置')
plot(line1(:,1),line1(:,2),'k')
hold on
plot(line2(:,1),line2(:,2),'k')
plot(Centerline(:,1),Centerline(:,2),'r')
hold off

注:核心部分代码就不公布了,自行下载。

完整代码地址:matlab-计算河流蜿蜒度和提取中心线-其它文档类资源-CSDN下载

完整代码中有Word讲解,完整的程序,以及测试的代码!

也可以根据我的提示,自己编写代码,这样更能提高写代码能力。

路漫漫其修远兮,吾将上下而求索!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

b类 蚂蚁金服_股权设计与合伙制,解析蚂蚁金服与华为的顶层结构

股权设计与合伙制商道君这篇文章讲一讲股权设计与合伙制。股权设计和合伙制两者都是企业的顶层设计,股权的设计和合伙人制度有不同之处,但核心点都只有一个那就是——争夺企业的控制权。举例:马云与阿里巴巴马云说,如果阿里巴巴不…

SARScape二次开发-IDL编程心得

最近由于项目需要,需要使用IDL编程。此前从接触过编程,但好在有matlab、C编程的一些底子,所以自学编程,进行SARScape二次开发。相比MATLAB而言,IDL资料少,而且只有英文版的官方帮助,学起来非常费…

地址池命令 思科理由_论CCNA基础之常用命令

Cisco常用查看命令:Show VLAN brief //查看端口所属VLANShow ip int brief //查看端口的启用状态特权模式下Show running-config //查看设备当前运行配置特权模式下Show clock //查看当前系统时钟特权模式下 show log //查看log 日志特权模式下show interface //查看…

SARscape 二次开发讲解

官方给了一些讲解(地址:SARscape/SARscape IDL Scripting/SARscape batch object),以及一些参考例子(地址:SARscape/SARscape IDL Scripting/Example)都可以用来学习参考。 SARscape 二次开发可以分为10个详细的步骤&a…

applicationproperties不是小叶子_三角梅整株叶子发黄从这里找原因,早解决早生长!...

家里的花草长得好不好,看叶子就行,长势好的叶子翠绿,油亮有光泽,长势不好的叶子发黄,暗淡无生机。所以如果花草的叶子不健康,那么就是哪里出了问题,需要及时找出原因解决。为什么家里盆栽的三角…

利用Matlab替换图片部分颜色

目录 1. 需求分析 2. 技术分析 3. 程序代码 1. 需求分析 日常工作、研究、学习当中,往往需要对图片进行处理。其中图片重新着色、渲染是非常常见的。比如说去掉或则更换证件照底色;去掉遥感图像中黑边……为解决此类问题,而编写此代码。 …

十万个为什么儿童版_把中国科技传播至阿语地区,少儿社《十万个为什么》阿拉伯文版亮相童书展...

在11月13日至15日举行的第八届上海国际童书展上,少年儿童出版社的《十万个为什么》阿拉伯文版亮相。该书于2020年正式出版,中国的科技成果将沿着“一带一路”,传播至2.9亿人口所在的阿语地区。《绘心寓意中国古代寓言典藏图画书 曾子不撒谎》…

利用Matlab判断某些点是否在多边形区域内

目录 1. 代码作用及实现效果 2. 技术分析: 3. 程序 1. 代码作用及实现效果 先给各位看看具体效果,如下所示,其中红色的点表示需要判断的点,是否在蓝色区域内,从图中可知,有两个点在蓝色区域内&…

spark1.0和2.0的区别_【系统】华为正式发布鸿蒙OS 2.0手机Beta版:UI界面、交互无区别...

今天上午,华为正式发布了鸿蒙OS 2.0手机开发者Beta版本,HarmonyOS 是面向万物互联时代的全场景分布式操作系统,华为希望和合作伙伴、开发者一起打造面向万物互联时代的超级终端体验。目前也已经开启了公测招募活动,不过报名还是有…

Matlab 纯代码进行GUI界面编程

Matlab界面编程传统的有guide,现在matlab朝着appdesigner方向发展。这两种方法都是非常简单适合新手的,如果是一个未接触这方面的,我建议直接学APPdesigner,如果想了解更深入,可以尝试利用纯代码进行编程。 编程要点…

深入到系统组件是否白盒测试_2019年系统集成项目管理工程师:第一章 信息化知识(三)要点?...

今天幸福哥助理继续为大家分享第一章 第三节 信息化知识(二) 信息系统设计、软件工程及面向对象系统分析与设计等复习知识要点,备考笔记知识点的分享会不定期整理,如果你正好参加这个考试,可以关注我,收藏,或者转发。一…

IDL 文本编码、代码补全快捷方式、IDL doc、格式器、行号显示设置

目录 1. 文本文件编码设置 2. 自动补全设置 3. IDL doc设置 4. 格式器设置 5. 显示行号 每种编程语言的某些设置(快捷键、显示风格)都大相径庭,因此需要需要对一些显示,使得更符合自己的编程习惯,方便用起来得心…

IDL学习(对象):IDLffShape

目录 一、描述 二、创建 三、属性 3.1 ATTRIBUTE_INFO 3.2 ATTRIBUTE_NAMES 3.3 DBF_ONLY 3.4 ENTITY_TYPE 3.5 FILENAME 3.6 IS_OPEN 3.7 N_ATTRIBUTES 3.8 N_ENTITIES 3.9 N_RECORDS 3.10 UPDATE 四、方法: 4.1 IDLffShape::AddAttribute 4.2 IDLff…

tablueau地图标记圆形_30天30张中国风地图,从青绿山水到秦砖汉瓦

本文来自#30天制图挑战#的GISer November_阿瑜瑜瑜瑜,完成了30幅中国风专辑地图,唯美又有韵味,十分赏心悦目,简直把中国风玩出了花~接下来,快来跟着小编一起细品30幅中国风地图吧~~~ 01day 1千里江山图《千里江山图》是…

IDL学习:语法基础-变量

目录 1. 变量命名规则 2. 数据类型 3. 基本操作 3.1 数据类型选择 3.2 改变数据类型 3.3 科学计数法 1. 变量命名规则 与其他编程语言一样,IDL也有自己的变量命名规则: 字符规则:首字母必须是26个英文字母,且只能由字母、数…

语言省考安徽考区_安徽省中小学新任教师公开招聘统一笔试 中学信息技术学科考试大纲...

一、考试性质安徽省中小学新任教师公开招聘考试为全省统一组织的公开性选拔考试,是落实“省考、县管、校用”教师管理体制的基础工作。其目的是吸引有志于从事基础教育事业的优秀人才到中小学任教,进一步规范中小学新任教师公开招聘工作,把好…

IDL学习:语法基础-数组

目录 1. 创建数组 1.1 直接创建 1. 2 利用函数创建 2. 数组索引 3. 数组操作 3.1 数组的信息 3.2 数组维度变化 3.3 数组的最大值和最小值 3.4 数组方差、均值、标准差、总和运算 3.5 数组元素筛选及重新赋值 3.6 数组元素的排序 3.7 数组间比较 4. 数组运算 4.…

amd为什么还用针脚_为什么AMD不取消cpu上的针脚?

在过去,AMD的速龙系列处理器也使用了LGA触点式接口。包括AMD的皓龙在内的一系列服务器处理器也使用类似于英特尔的LGA接口,但AMD多年来一直在消费级CPU上使用针脚式接口。这样做很好?为什么?这是因为在Intel切换到触点式接口之后&…

IDL学习:语法基础-字符串

1. 创建字符串 IDL中可以用单引号‘’或双引号""来创建字符转 >>a hlz >>b "hlz" >>a eq b1 创建字符串数组,可以利用中括号[]和逗号,相组合的方式进行创建 >>a [Hlz,XMU,厦门] >>a Hlz XMU 厦门 &g…

epoll监听文件_epoll使用详解

epoll介绍epoll的行为与poll(2)相似,监视多个有IO事件的文件描述符。epoll除了提供select/poll那种IO事件的水平触发(Level Triggered)外,还提供了边缘触发(Edge Triggered),这就使得用户空间程序有可能缓存IO状态,减少epoll_wait…