メインコンテンツ

このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。

shaperead

シェープファイルからベクトルフィーチャと属性を読み取る

説明

S = shaperead(filename) は、filename によって指定されたシェープファイルを読み取り、投影されたマップ座標 (mapstruct) で地理データ構造配列を返します。地理データ構造は、幾何学的情報とフィーチャ属性情報を組み合わせます。shaperead は、通常の 2D シェイプ タイプ ('Point''Multipoint''PolyLine'、および 'Polygon') をサポートします。

S = shaperead(filename,Name,Value) は、名前と値のペアの引数によって決定された、S 内のシェープファイルの内容のサブセットを返します。RecordNumbersBoundingBoxSelector を使用して、読み取るフィーチャを選択します。同じ呼び出しでこれらのパラメーターを複数使用した場合、個々の仕様に一致するレコードの交差が返されます。たとえば、RecordNumbersBoundingBox の両方の値を指定すると、リストに表示されるレコード番号を持ち、指定された境界ボックスと交差する境界ボックスを持つフィーチャのみがインポートされます。

パラメーターを指定しない場合、shaperead は null 以外のすべてのフィーチャのエントリを返し、すべての属性のフィールドを作成します。

[S,A] = shaperead(___) は、幾何学的な情報を含む N 行 1 列の地理データ構造配列 S と、フィーチャの属性情報を含む並列の N 行 1 列の属性構造配列 A を返します。

すべて折りたたむ

concord_hydro_line.dbf の属性を含む、concord_hydro_line.shp と呼ばれるシェープファイル全体を読み取ります。shaperead 関数は、xy 座標ベクトルを持つ mapstruct を返します。

S = shaperead('concord_hydro_line.shp')
S=237×1 struct array with fields:
    Geometry
    BoundingBox
    X
    Y
    LENGTH

shaperead によって返されるデータを制限するための境界ボックスを指定します。さらに、読み取りたい属性の名前を指定します。

bbox = [2.08 9.11; 2.09 9.12] * 1e5;
S = shaperead('concord_roads.shp','BoundingBox',bbox,...
              'Attributes',{'STREETNAME','CLASS'})
S=87×1 struct array with fields:
    Geometry
    BoundingBox
    X
    Y
    STREETNAME
    CLASS

長さが 200 メートル以上のクラス 4 以上の道路セグメントの道路データのみを読み取ります。セレクターで匿名関数が使用されていることに注意してください。

S = shaperead('concord_roads.shp','Selector',...
           {@(v1,v2) (v1 >= 4) && (v2 >= 200),'CLASS','LENGTH'})
S=115×1 struct array with fields:
    Geometry
    BoundingBox
    X
    Y
    STREETNAME
    RT_NUMBER
    CLASS
    ADMIN_TYPE
    LENGTH

各クラスの道路の数を決定します。

n = histcounts([S.CLASS],'BinLimits',[1 7],'BinMethod','integer')
n = 1×7

     0     0     0     7    93    15     0

各長さのカテゴリに該当する道路の数のヒストグラムを表示します。

figure
histogram([S.LENGTH])

Figure contains an axes object. The axes object contains an object of type histogram.

'UseGeoCoords' の名前と値のペアを使用して、シェープファイルが緯度と経度の座標を使用することを指定します。

たとえば、シェープファイルに関する情報を構造として返します。CoordinateReferenceSystem フィールドをクエリして、シェープファイルが緯度と経度の座標を使用していることを確認します。フィールドに geocrs オブジェクトが含まれている場合、シェープファイルは緯度と経度の座標を使用します。

info = shapeinfo('landareas.shp');
crs = info.CoordinateReferenceSystem
crs = 
  geocrs with properties:

             Name: "WGS 84"
            Datum: "World Geodetic System 1984"
         Spheroid: [1×1 referenceEllipsoid]
    PrimeMeridian: 0
        AngleUnit: "degree"

shaperead 関数を使用してシェープファイルを読み取ります。'UseGeoCoords' の名前と値のペアを使用して、シェープファイルが緯度と経度の座標を使用していることを示します。

S = shaperead('landareas.shp','UseGeoCoords',true)
S=537×1 struct array with fields:
    Geometry
    BoundingBox
    Lon
    Lat
    Name

shaperead 関数は、緯度と経度のフィールドを持つ地理データ構造(geostruct) を返すことに注意してください。

入力引数

すべて折りたたむ

ファイル名。文字列スカラーまたは文字ベクトルとして指定されます。filename は、シェープファイル内のコンポーネント ファイルの 1 つの基本名または完全な名前を参照します。メイン ファイル (拡張子 .shp) がない場合、shaperead はエラーをスローします。他のファイルのいずれかが欠落している場合、shaperead は警告を発します。

お使いのマシンが、インポートするデータと同じ文字エンコード スキームに設定されていることを確認してください。たとえば、日本語の文字を含むシェープファイルをインポートする場合は、Shift-JIS エンコード スキームをサポートするようにマシンを構成します。

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: 'Attributes',{'STREETNAME','LENGTH'}

レコード番号。'RecordNumbers' と整数のベクトルで構成されるコンマ区切りのペアとして指定されます。リストされたレコード番号を持つフィーチャのみをインポートするには、パラメーターRecordNumbers を使用します。

データ型: double

境界ボックスは、'BoundingBox' と 2 行 2 列のマトリックスで構成されるコンマ区切りのペアとして指定されます。BoundingBox は、マップ座標の場合は [xmin,ymin;xmax,ymax] の形式、地理座標の場合は [lonmin,latmin;lonmax,latmax] の形式になります。境界ボックスが指定されたボックスと交差するフィーチャのみをインポートするには、パラメーターBoundingBox を使用します。shaperead 関数は、ボックスと部分的に交差するフィーチャをトリムしません。

データ型: double

セレクター。'Selector' と、関数ハンドルおよび 1 つ以上の属性名を含むセル配列で構成されるコンマ区切りのペアとして指定されます。関数は logical スカラーを返す必要があります。Selectorパラメーターを使用して、関数を対応する属性値に適用したときに true を返すフィーチャのみをインポートします。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

属性名。'Attributes' と属性名のセル配列で構成されるコンマ区切りのペアとして指定されます。リストされた属性を含め、構造体配列内の属性の順序を設定するには、パラメーターAttributes を使用します。すべての属性を省略するには、{} を使用します。

ジオストラクチャ内のシェープファイルの内容を返すフラグ。'UseGeoCoords'false または true で構成されるコンマ区切りのペアとして指定されます。

UseGeoCoordstrue に設定されている場合、シェープファイルの内容は geostruct で返されます。シェープファイル内の x- 座標と y- 座標が実際には経度と緯度のデータを表していることが分かっている場合は、このパラメーターを使用します。

シェープファイルが緯度と経度のデータを使用しているかどうかを判断するには、まず shapeinfo 関数を使用して、シェープファイルに関する情報を構造として返します。次に、構造の CoordinateReferenceSystem フィールドを照会します。CoordinateReferenceSystemgeocrs オブジェクトの場合、シェープファイルは地理座標を使用します。

このコードは、シェープファイルlandareas.shp に関連付けられた構造の CoordinateReferenceSystem フィールドを照会する方法を示しています。

info = shapeinfo('landareas.shp');
info.CoordinateReferenceSystem

出力引数

すべて折りたたむ

ベクトル地理フィーチャ。シェープファイル内の null 以外の空間フィーチャごとに 1 つの要素を含む N 行 1 列の地理データ構造配列として返されます。構造体配列には次のフィールドがあります。

フィールド説明
Geometry

図形の種類。'Point''Multipoint''Line'、または 'Polygon' として返されます。

個々のポイント、ライン、ポリゴンは複数の部分を持つことができます。たとえば、ラインには切断されたライン セグメントを含めることができ、ポリゴンにはリングを含めることができます。個々の図形のすべての部分は、対応する属性フィールドによってその図形に指定された属性を共有します。

PolyLine 図形を読み取る場合、shaperead 関数はこのフィールドの値を 'Line' として返します。

この関数は、3D または測定シェイプ タイプ (PointZ、PointM、MultipointZ、MultipointM、PolyLineZ、PolyLineM、PolygonZ、PolylineM、および Multipatch) をサポートしていません。この関数はヌル ポイント シェイプも無視します。

BoundingBox

図形の最小および最大の座標値。[min(X) min(Y); max(X) max(Y)] 形式の 2 行 2 列の数値行列として返されます。Geometry'Point' の場合、このフィールドは適用されません。

X

x 座標。データ型 double の行ベクトルとして返されます。このフィールドは mapstruct 配列にのみ適用されます。

Y

y 座標。データ型 double の行ベクトルとして返されます。このフィールドは mapstruct 配列にのみ適用されます。

Lon

経度座標。データ型 double の行ベクトルとして返されます。このフィールドは geostruct 配列にのみ適用されます。

Lat

緯度座標。データ型 double の行ベクトルとして返されます。このフィールドは geostruct 配列にのみ適用されます。

属性フィールド

属性フィールド。文字ベクトルまたは数値スカラーとして返されます。

shaperead 関数は、属性ファイル (.dbf) から属性フィールドの名前を決定します。シェープファイルには通常、複数の属性が含まれます。属性名が有効なフィールド名でない場合、関数は通常、スペースをアンダースコアに置き換えて、フィールドに別の名前を割り当てます。

デフォルトでは、shaperead 関数はシェープファイルにマップ座標が含まれていると想定し、データを mapstruct 配列に読み込みます。シェープファイルに地理座標が含まれている場合は、UseGeoCoords 名前値引数を true として指定することで、データを geostruct 配列に読み込むことができます。

地理データ構造、mapstruct 配列、および geostruct 配列の詳細については、Geographic Data Structures を参照してください。

フィーチャ属性情報。配列 S に対応する N 行 1 列の属性構造配列として返されます。

出力構造配列 S および A 内のフィールドは、ファイルに含まれるシェイプのタイプと、ファイルに含まれる属性の名前とタイプによって異なります。shaperead 関数は、次の 4 つの属性タイプをサポートしています: numericfloating (MATLAB®double タイプとして格納)、および characterdate (char array として格納)。

詳細

すべて折りたたむ

ヒント

シェープファイルに関連付けられた座標参照系 (CRS) に関する情報を取得するには、shapeinfo 関数を使用します。

バージョン履歴

R2006a より前に導入