Note: This page has been translated by MathWorks. Please click here

To view all translated materials including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materials including this page, select Japan from the country navigator on the bottom of this page.

Convert latitude-longitude vectors to regular data grid

`[Z, R] = vec2mtx(lat, lon, density)`

[Z, R] = vec2mtx(lat, lon, density,
latlim, lonlim)

[Z, R] = vec2mtx(lat, lon, Z1, R1)

[Z, R] = vec2mtx(..., 'filled')

`[Z, R] = vec2mtx(lat, lon, density)`

creates
a regular data grid `Z`

from vector data, placing
ones in grid cells intersected by a vector and zeroes elsewhere. `R`

is
the referencing vector for the computed grid. `lat`

and `lon`

are
vectors of equal length containing geographic locations in units of
degrees. `density`

indicates the number of grid cells
per unit of latitude and longitude (a value of 10 indicates 10 cells
per degree, for example), and must be scalar-valued. Whenever there
is space, a buffer of two grid cells is included on each of the four
sides of the grid. The buffer is reduced as needed to keep the latitudinal
limits within [-90 90] and to keep the difference in longitude limits
from exceeding 360 degrees.

```
[Z, R] = vec2mtx(lat, lon, density,
latlim, lonlim)
```

uses the two-element vectors `latlim`

and `lonlim`

to
define the latitude and longitude limits of the grid.

`[Z, R] = vec2mtx(lat, lon, Z1, R1)`

uses
a pre-existing data grid `Z1`

, georeferenced by `R1`

,
to define the limits and density of the output grid. `R1`

can
be a referencing vector, a referencing matrix, or a geographic raster
reference object.

If `R1`

is a geographic raster reference object,
its `RasterSize`

property must be consistent with `size(Z1)`

and
its `RasterInterpretation`

must be `'cells'`

.

If `R1`

is a referencing vector, it must be
a 1-by-3 vector containing elements:

[cells/degree northern_latitude_limit western_longitude_limit]

[lon lat] = [row col 1] * R1

`R1`

is
a referencing matrix, it must define a (non-rotational, non-skewed)
relationship in which each column of the data grid falls along a meridian
and each row falls along a parallel. With this syntax, output `R`

is
equal to `R1`

, and may be a referencing object, vector,
or matrix.`[Z, R] = vec2mtx(..., 'filled')`

,
where `lat`

and `lon`

form one or
more closed polygons (with `NaN`

-separators), fills
the area outside the polygons with the value two instead of the value
zero.

Empty `lat,lon`

vertex arrays will result in
an error unless the grid limits are explicitly provided (via `latlim,lonlim`

or `Z1,R1`

).
In the case of explicit limits, `Z`

will be filled
entirely with 0s if the `'filled'`

parameter is omitted,
and 2s if it is included.

It's possible to apply `vec2mtx`

to sets of
polygons that tile without overlap to cover an area, as in Example
1 below, but using `'filled'`

with polygons that
actually overlap may lead to confusion as to which areas are inside
and which are outside.

Convert latitude-longitude polygons to a regular data grid and display as a map.

states = shaperead('usastatelo', 'UseGeoCoords', true); lat = [states.Lat]; lon = [states.Lon]; [Z, R] = vec2mtx(lat, lon, 5, 'filled'); figure; worldmap(Z, R); geoshow(Z, R, 'DisplayType', 'texturemap') colormap(flag(3))

Combine two separate calls to `vec2mtx`

to
create a 4-color raster map showing interior land areas, coastlines,
oceans, and world rivers.

load coastlines [Z, R] = vec2mtx(coastlat, coastlon, ... 1, [-90 90], [-90 270], 'filled'); rivers = shaperead('worldrivers.shp','UseGeoCoords',true); A = vec2mtx([rivers.Lat], [rivers.Lon], Z, R); Z(A == 1) = 3; figure; worldmap(Z, R) geoshow(Z, R, 'DisplayType', 'texturemap') colormap([.45 .60 .30; 0 0 0; 0 0.5 1; 0 0 1])

Import US state outlines.

states = shaperead('usastatelo', 'UseGeoCoords', true); lat = [states.Lat]; lon = [states.Lon];

Choose geographic limits.

latlim = [ 15 75]; lonlim = [-190 -65];

Specify a grid with 5 cells per degree.

density = 5;

Compute raster size. (M and N both work out to be integers.)

M = density * diff(latlim); N = density * diff(lonlim);

Construct a Geographic Raster Reference object.

R = georasterref('RasterSize', [M N], ... 'ColumnsStartFrom', 'north', 'Latlim', latlim, ... 'Lonlim', lonlim);

Create a blank grid that is consistent with `R`

in size. `vec2mtx`

requires a data grid as input.

Z = zeros(R.RasterSize);

Overwrite `Z`

with a new grid including state outlines and interiors.

`Z = vec2mtx(lat, lon, Z, R, 'filled');`

Plot the georeferenced grid.

figure; worldmap(Z, R); geoshow(Z, R, 'DisplayType', 'texturemap') colormap(flag(3))

Was this topic helpful?