在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=