matlab存取面shp

Matlab提供了关于shp读取以及shp存储的函数。

S = shaperead(filename)
shapewrite(S,filename)

常见的三种shp类型:Point,Line,Polygon。

首先先读取了一个面状的shp看看。

读取完是多个struct(这里每个struct代表一个省),每个struct都有几个共同的字段。

如果是Point类型,X字段(经度)和Y字段(纬度)只需要一个数字。

如果是Polygon类型,则多需要多个数字形成闭合,需要注意的是,第一个数字和倒数第二个数字需要相同,最后一个数字需要是NaN,具体的见代码。

clc;clear;
S(1).Geometry = 'Polygon';
S(1).BoundingBox=[116,29; 117,28];
S(1).X = [116,116,117,117,116, NaN]; % 经度 lon
S(1).Y = [29,28,28,29,29, NaN]; % 纬度 lat
S(1).Id = 1; %除了以上的几个关键字段,还得有至少一个额外的字段,不然不能生成dbf文件

S(2).Geometry = 'Polygon';
S(2).BoundingBox=[114,25; 115,24];
S(2).X = [114,114,115,115,114, NaN]; % 经度 lon
S(2).Y = [25,24,24,25,25, NaN]; % 纬度 lat
S(2).Id = 2;

shapewrite(S,'test.shp'); %生成shp,dbf,shx三个文件

生成的shp效果如图:

了解了以上的步骤和原理之后,下面批量生成shp

% Satellite-based survey of extreme methane emissions in the Permian basin
PermianBasin = [-104.5,31;-103,31;-103,32.5;-104.5,32.5;-104.5,31;NaN,NaN];
% Monitoring large methane point sources with Sentinel-2 satellite observations
Algeria = [5.6,31.2;6.2,31.2;6.2,32;5.6,32;5.6,31.2;NaN,NaN];
% Airborne methane remote measurements reveal heavytail flux distribution in Four Corners region
SanJuanBasin = [-108.25,36.75;-107.75,36.75;-107.75,37;-108.25,37;-108.25,36.75;NaN,NaN];
% Satellites Detect Abatable Super-Emissions in One of the World’s Largest Methane Hotspot Regions
Turkmenistan = [53.4,37.8;54.5,37.8;54.5,39.6;53.4,39.6;53.4,37.8;NaN,NaN];

Hotspots = {'PermianBasin','Algeria','SanJuanBasin','Turkmenistan'};
for i = 1:4
    basin = eval(Hotspots{1,i});
    P.Geometry = 'Polygon';
    P.BoundingBox=[min(basin(:,1)),max(basin(:,2)); max(basin(:,1)),min(basin(:,2))];
    P.X = basin(:,1); % 经度 lon
    P.Y = basin(:,2); % 纬度 lat
    P.Id = 1;
    shapewrite(P,[Hotspots{1,i},'.shp']); %生成shp,dbf,shx三个文件
end

PermianBasin变量如下

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Matlab中使用shp文件,可以使用shaperead函数来读取shp文件。例如,使用shaperead函数读取shp文件的代码如下: ```matlab buffer_shp = shaperead(bufferpath); ``` 其中,bufferpath是shp文件的路径。这样就可以将shp文件中的数据读取到一个结构体数组中,每个结构体代表一个要素。 另外,如果你想生成shp文件,可以使用shapewrite函数。下是一个示例代码: ```matlab S(1).Geometry = 'Polygon'; S(1).BoundingBox = \[116,29; 117,28\]; S(1).X = \[116,116,117,117,116, NaN\]; % 经度 lon S(1).Y = \[29,28,28,29,29, NaN\]; % 纬度 lat S(1).Id = 1; S(2).Geometry = 'Polygon'; S(2).BoundingBox = \[114,25; 115,24\]; S(2).X = \[114,114,115,115,114, NaN\]; % 经度 lon S(2).Y = \[25,24,24,25,25, NaN\]; % 纬度 lat S(2).Id = 2; shapewrite(S,'test.shp'); ``` 这段代码会生成一个名为test.shpshp文件,其中包含两个多边形要素。每个要素都有自己的经纬度坐标和其他属性。 希望这些代码能帮助到你使用Matlab处理shp文件。 #### 引用[.reference_title] - *1* [Matlab读取shp文件及存储形式](https://blog.csdn.net/qq_46546227/article/details/128881761)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [matlab存取shp](https://blog.csdn.net/peisipand/article/details/128635955)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值