• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

在matlab中将处理结果输出为shp文件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在matlab中读入shp文件很简单,一个函数shaperead就可以了,但输出为shp文件就稍微麻烦一些了。shp文件实际上就是一个struct,因此得到处理结果后,要先将数据变成struct结构,然后调用shapewrite函数就可以了。

clc;clear;close all;
[pic, R] = geotiffread(\'boston.tif\'); %读取tif图像
gray=rgb2gray(pic);
bw=im2bw(gray,0.1); %阈值分割
bw=1-bw;
bw1 = bwareaopen(bw,30000); %删除面积小于500000的区域
bw2=imfill(bw1,\'holes\');  %填充孔洞
figure(1),imshow(bw2);
bw3=bwboundaries(bw2);  %得到边缘轮廓,一个轮廓为一个Line
num=size(bw3,1); %行数
STR = \'struct(\'\'Geometry\'\',values ,\'\'X\'\', values,\'\'Y\'\', values,\'\'ID\'\',values)\';
values = cell(num, 1);  %为结构体赋初值
S = eval(STR);
clear values;  
for i=1:num
    data=bw3{i,1};   %得到轮廓线的坐标,一个N*2的矩阵,此坐标为本地图像坐标
    S(i).Geometry=\'Line\';
    S(i).ID=i;
    [x,y]=pix2map(R,data(:,1),data(:,2)); %将本地图像坐标转换为地理坐标
    S(i).X=[x;NaN]\';
    S(i).Y=[y;NaN]\';
end
figure(2),axis off;
mapshow(\'boston.tif\');   %绘制遥感影像
mapshow([S.X], [S.Y],\'Color\',\'r\');  %绘制轮廓线
shapewrite(S,\'water.shp\');  %输出shp文件,会生成后缀名为shp,shx和dbf的三个文件

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[转载]Delphi常见属性发布时间:2022-07-18
下一篇:
指纹算法中控 X638考勤机编程(delphi)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap