MATLABは、シェープファイルの読み取りと書き込みを行い、シェープファイルの範囲内のデータを抽出します

シェープファイルのダウンロード

世界的に

ダウンロードリンク1:http//www.naturalearthdata.com
ダウンロードリンク2:https//tapiquen-sig.jimdofree.com/english-version/free-downloads/world/
ここに画像の説明を挿入します

国の部門

ダウンロードリンク:https//www.diva-gis.org/gdata
ここに画像の説明を挿入します

MATLABはシャドウファイルを読み取り、領域内のデータを抽出します

ステップ1、シェープファイルを読む

まず、shaperead関数を使用して、シェープファイルを読み取り、shpファイルの緯度と経度の情報を識別します。読んだ後、
下の図のXとYは、shpの経度と緯度を表しています。

s = shaperead('IND_adm0.shp');

ここに画像の説明を挿入します

ステップ2:抽出するデータの緯度と経度に応じて、shpの範囲内にあるかどうかを判断します

inpolygon関数を使用して、抽出するデータの緯度と経度がshpの範囲内にあるかどうかを判別します。

%判断是否在shape范围内,其中s.X和s.Y为shp的经度、纬度,x和y分别是待提取数据的经纬度
%in为满足条件的数据,是一个逻辑数组
in = inpolygon(x,y,s.X,s.Y);

ダウンロードしたのはインドのシェープファイルです。データを傍受して描画すると、次のようになります。
ここに画像の説明を挿入します

シェープファイルの書き込み

shpを読み取る場合と比較して、shpファイルを出力する方が面倒です。自分で構造体を作成してから、シェープライト関数を使用して構造体をshpファイルに書き込む必要があります。

india = shaperead('IND_adm0.shp');

%必要字段
sites.Geometry = india.Geometry;                %元素类型,Point,Line,Polygon等
sites.BoundingBox = india.BoundingBox;          %[minx,miny; maxx,maxy];
sites.X = india.X;                              %坐标X,经度
sites.Y = india.Y;                              %坐标Y,纬度

%附加字段
%这部分属于自定义内容,不定义也不影响使用,只是不会生成dbf文件
sites.NAME = 'AERONET_SITES';

shapewrite(sites,'test_shape'); %生成shp,dbf,shx三个文件

ここに画像の説明を挿入します

複数の独立したポリゴンがある場合は、次の方法を使用してシェープファイルファイルを生成できます

for i=1:5
	Map(i).Geometry = 'Polygon';
	Map(i).BoundingBox = [100*i,100*i;100*i+100,100*i+100];
	Map(i).X = [100*i,100*i+100,100*i+100,100*i,NaN];
	Map(i).Y = [100*i,100*i,100*i+100,100*i+100,NaN];
	Map(i).Id = i;
end
shapewrite(Map,'Example');

ここに画像の説明を挿入します


https://www.mathworks.com/help/map/ref/shaperead.html?s_tid=srchtitle
https://www.mathworks.com/help/matlab/ref/inpolygon.html?s_tid=srchtitle https:を参照してください
。 / /blog.csdn.net/qq_37844142/article/details/83474760

おすすめ

転載: blog.csdn.net/wokaowokaowokao12345/article/details/108978732