zoukankan      html  css  js  c++  java
  • 在matlab中将处理结果输出为shp文件

    在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的三个文件
  • 相关阅读:
    go里面redis缓存池
    go语言操作redis
    goredis的操作
    go安装redis扩展
    go协程聊天室
    go里面os包的使用案例
    用php入门网络编程
    使用go里面实现了一个并发的时钟服务器
    案例一:协程创建和使用
    系统工程笔记
  • 原文地址:https://www.cnblogs.com/denny402/p/4681651.html
Copyright © 2011-2022 走看看