在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中的矩阵输出到txt文件

将矩阵输出到txt文件中的方法,遍寻网络,始见真经!!! fid=fopen('C:Documents and Settingscleantotal.ped','wt');%写入文件路径 matrix ...

在matlab中实现遥感影像和shp文件的结合显示

clc;close all;clear; road=shaperead('boston_roads.shp'); %读取shape文件 figure, mapshow('boston.tif'); % ...

Python中将一个对象倒序输出的4种方法

Python中将一个对象倒序输出的4种方法就用列表来举例说明吧: >>> lst = [1,2,3,4,5,6] #创建测试列表 #方法1: >>> lst.rev ...

微软BI 之SSIS 系列 - 在 SSIS 中将指定目录下的所有文件分类输出到不同文件夹

开篇介绍 比如有这样的一个需求,旧的一个业务系统通常将产出的文件输出到同一个指定的目录下的不同子目录,输出的文件类型有 XML,EXCEL, TXT 这些不同后缀的文件.现在需要在 SSIS 中将它们 ...

将filenames里的每个字符串输出到out文件对象中注意行首的缩进

在Linux上用强大的shell脚本应该也可以完成,可是使用Windows的朋友呢?其实象这样一个简单任务用Python这个强大脚本语言只要几条语句就可以搞定了.个大家知道,要完成这样一个任务根本不用 ...

结合C++和GDAL实现shapefile(shp)文件的读取

工具:vs2012+GDAL 2.0 数据:中国省界SHP文件bou2_4p.shp   可点击下载 包含头文件: #include "ogrsf_frmts.h" 代码: int ...

ArcGIS学习记录—KMZ KML与SHP文件互相转换

1.在google earth中绘制边界  工具栏中选择"Add Polygon".随意绘制一个多边形.  右击添加的图层名(左侧)保存位置为,选择保存为kmz或kml文件.  ...

arcmap从excel坐标数据生成点shp文件

概述 今天试图在ArcMap中将excel数据转成点文件,在"Display XY Data"的时候,无法选择X,Y字段,很是纳闷,原来Excel中列的格式是文本,导致无法选择.有 ...

GDAL1.11版本号对SHP文件索引加速測试

GDAL库中对于矢量数据的读取中能够设置一些过滤器来对矢量图形进行筛选.对于Shapefile格式来说.假设数据量太大,设置这个过滤器时间慢的简直无法忍受.好在GDAL1.10版本号開始支持读取Sha ...

随机推荐

SAP HR宏 rp-provide-from-last

运行se11 Database table: 输入 TRMAC 点击display 查看其内容:第14个按钮(ctrl + shift +F10) 再Name 输入:rp-provide-from-l ...

JSON转换类(一)--过滤特殊字符,格式化字符型、日期型、布尔型

/// /// 过滤特殊字符 /// private static string String2Json(String s) { St ...

VB调用自持字体

VB调用自制字体我这里有一个C#的例子,请问如何在VB中实现啊. 我们写exe程序时,默认字体是宋体,比较难看,指定了其他字体,但是其他用户上没有你指定的这个字体的话,也会变成默认的宋体.解决的办法有 ...

POJ 3522 Slim Span 最小差值生成树

Slim Span Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=3522 Description Gi ...

如何在webstrom中配置eslint和less

webstrom 帮助文档(英文版) 1.在webstrom中使用ESLint规范代码格式: JSHint 可以帮助检测你的 JavaScript 代码中的错误和潜在的问题,而 eslint是一个 J ...

Travel

Travel Time Limit: 10000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

java基础(十三)-----详解内部类——Java高级开发必须懂的

可以将一个类的定义放在另一个类的定义内部,这就是内部类. 为什么要使用内部类 为什么要使用内部类?在中有这样一句话:使用内部类最吸引人的原因是:每个内部类都能 ...

C++注入记事本

#include ; using namespace std; #include ; #include

【转】vue+axios 前端实现登录拦截(路由拦截、http拦截)

一.路由拦截 登录拦截逻辑 第一步:路由拦截 首先在定义路由的时候就需要多添加一个自定义字段requireAuth,用于判断该路由的访问是否需要登录.如果用户已经登录,则顺利进入路由, 否则就进入登录 ...

远程服务器安装mysql数据库

https://www.cnblogs.com/renjidong/p/7047396.html 1.新开的云服务器,需要检测系统是否自带安装mysql # yum list installed | ...

更多推荐