在matlab中将处理结果输出为shp文件
2015-07-28 00:16
639 查看
在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的三个文件
相关文章推荐
- Matlab--字符串
- 【Matlab学习笔记】【函数学习】size参数
- 【Matlab学习笔记】【函数学习】max()和max(max())的区别
- 【Matlab学习笔记】【数据类型】介绍
- 【Matlab学习笔记】【函数学习】nargin 参数
- 批量处理_cmd_matlab
- MATLAB二维图像绘制
- Ubuntu15.04 + Matlab2014a + MatConvNet install and compile
- Ubuntu15.04 + Matlab2014a + MatConvNet install and compile
- 如何利用MATLAB求矩阵的逆阵?
- 在matlab中对hsv进行均匀量化和非均匀量化
- matlab如何化简表达式/多项式?
- Matlab--矩阵和数组
- Matlab 符号运算的因式分解、展开与合并、简化
- Matlab--二维绘图
- libsvm在matlab中使用
- matlab如何求矩阵行列式
- Matlab--函数
- matlab 图片批量读取
- 在matlab中进行遥感影像地理坐标的相互转换