在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的三个文件
时间: 2024-10-05 03:53:18

在matlab中将处理结果输出为shp文件的相关文章

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

clc;close all;clear; road=shaperead('boston_roads.shp'); %读取shape文件 figure, mapshow('boston.tif'); %读取tif遥感影像并显示 axis image manual off; %关闭本地坐标系统 surveyFeetPerMeter = unitsratio('sf','meter'); %将米级单位转换成surveyFeet单位 colorTab='rgbcymkw'; %颜色代码表,不同等级的公路

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

Python中将一个对象倒序输出的3种方法就用列表来举例说明吧: >>> lst = [1,2,3,4,5,6] #创建一个表 #方法1: >>> lst1 = [i for i in reversed(lst)] #reversed只适用于与序列(列表.元组.字符串) >>> lst1 [6, 5, 4, 3, 2, 1] #方法2: >>> lst2 = sorted(lst,reverse=True) #sorted+rever

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

GDAL库中对于矢量数据的读取中可以设置一些过滤器来对矢量图形进行筛选,对于Shapefile格式来说,如果数据量太大,设置这个过滤器时间慢的简直无法忍受.好在GDAL1.10版本开始支持读取Shapefile文件的空间索引文件(.sbn / .sbx)来进行加速.下面就同样的数据同样的代码来对GDAL1.9.0和GDAL1.11.0两个版本进行测试时间,比较下速度(看到结果你肯定会张大嘴巴的--). 首先是测试代码,功能很简单,两个shp文件,一个点文件,一个面文件.面文件很大,需要根据点文件

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

工具:vs2012+GDAL 2.0 数据:中国省界SHP文件bou2_4p.shp 包含头文件: #include "ogrsf_frmts.h" 代码: int main(){ GDALAllRegister(); GDALDataset *poDS; CPLSetConfigOption("SHAPE_ENCODING",""); //解决中文乱码问题 //读取shp文件 poDS = (GDALDataset*) GDALOpenEx(&

java中将list、map对象写入文件

链接地址:http://blog.sina.com.cn/s/blog_4a4f9fb50101p6jv.html 推荐:凤爪女瓜子男怪象该谁反思伦敦房价为什么持续暴涨 × wvqusrtg个人中心发博文消息 doudouhe的博客 http://blog.sina.com.cn/dechuan608hewei [订阅][手机订阅] 首页博文目录图片关于我 个人资料 doudouhe 微博 加好友发纸条 写留言加关注 博客等级: 博客积分:842 博客访问:222,144 关注人气:34 获赠金

DataFrame与shp文件相互转换

因为习惯了使用pandas的DataFrame数据结构,同时pandas作为一个方便计算和表操作的数据结构具有十分显著的优势,甚至很多时候dataFrame可以作为excel在使用,而在用python操作gis的shp文件时很不顺畅,不太符合使用习惯,故写了一个DataFrame与arcgis地理文件相互转换的函数,这个处理起来可以节约大量的思考时间. Shp转DataFrame: import arcpy import pandas as pd def Shp2dataframe(path):

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

  1.在google earth中绘制边界  工具栏中选择"Add Polygon".随意绘制一个多边形.  右击添加的图层名(左侧)保存位置为,选择保存为kmz或kml文件.  kml文件往往只是一条路线,而kmz可以用winrar打开,选择其中的kml文件,输出即可.   2.kml文件转为shp  选择ArcToolBox中的Conversion Tools --From KML,选择KML To Layer,填写参数. 注意:文件输出为FGDB格式.  在Catalog中右键

如何使用ob函数输出静态html文件

如何使用ob函数输出静态html文件 1.ob函数介绍 1.1.ob_start - 打开输出控制缓冲 bool ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]] )  此函数将打开输出缓冲.当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中.详情参考:http://php.net/manual/zh/function.ob-start.php 1.

将控制台输入的每一行字符串,输出至txt文件当中

/** *    需求:将控制台输入的每一行字符串,输出至txt文件当中. /** * 需求:将控制台输入的每一行字符串,输出至txt文件当中. * 思路: * 1.首先想到BufferReader高级流读取一行字符串readLine方法. * 2.但是前提依赖于字符转换流ISR和低级节点流,这里是从控制台输入,节点流自然是System.in.如果是从文件输入,则节点流换成FIS即可 * 3.这样就能建立一条输入流了.BufferedReader(new InputStreamReader(Sy