主要内容

landSurface

Land surface belonging to radar scenario

Since R2022a

Description

LandSurface defines a land surface object belonging to a radarScenario. Manage surfaces in a radar scenario using SurfaceManager. Surface reflectivity, or normalized radar cross section, is defined as a surfaceReflectivityLand or surfaceReflectivityCustom System object™.

You can use landSurface function to specify surface extent, reflectivity, reference height, and digital elevation terrain data. Use the occlusion object function to test for occlusion along the line-of-sight between two points in the scenario and use height to provide surface height at a point.

Creation

Description

srf = landSurface(scenario) adds a LandSurface object, srf, to the radar scenario radarScenario object scenario.

example

srf = landSurface(scenario,PropertyName=Value) adds a LandSurface object, srf, with each specified PropertyName set to the corresponding Value. You can specify additional pairs of arguments in any order as PropertyName1=Value1,...,PropertyNameN=ValueN.

example

Properties

expand all

Radar reflectivity, or normalized radar cross section, specified as a surfaceReflectivityLand or surfaceReflectivityCustom System object. Defaults to a surfaceReflectivityLand object with a "Barton" land model and "FlatLand" land type.

Example: surfaceReflectivityLand(Model="GIT",LandType="Soil")

Surface reflection coefficient for use in multipath calculations, specified either as a SurfaceReflectionCoefficient object that defines the reflectivity model or as scalar with a value between -1 and 1. The default value is a SurfaceReflectionCoefficient object containing the earthSurfacePermittivity model of a dry sandy loam for a flat, non-vegetated surface. By default, the reflectionCoefficient object function is automatically called internally on the SurfaceReflectionCoefficient object to calculate the cumulative reflection coefficient value during multipath modeling if the EnableMultipath property is set to true in SurfaceManager.

Complex Number Support: Yes

This property contains a grid of reflectivity type values corresponding to vertices of the surface height data. If any terrain or a spectral model is present, ReflectivityMap must be a matrix of the same size as the domain of that data. Otherwise it must be scalar. Each element is an index into the third dimension of the Reflectivity property of the surfaceReflectivityCustom object.

Dependencies

To enable this property, set the RadarReflectivity property to a surfaceReflectivityCustom object.

Data Types: double

Reference height of surface height data, specified as a scalar. Surface heights are relative to the reference height. Units are in meters.

Data Types: double

Extent of the rectangular surface, specified as a 2-by-2 matrix of real values. The bounding rectangle is defined by two 2-dimensional points in either Cartesian or geodetic scenario coordinates. When the IsEarthCentered property of the radarScenario object is specified as:

  • false — Scenario coordinates are Cartesian. Specify the bounding rectangle as [minX, maxX, minY maxY]. minX and maxX are the minimum and maximum values in the x-direction of the reference frame, where minX < maxX. minY and maxY are the minimum and maximum values in the y-direction of the reference frame, where minY < maxY.

  • true — Scenario coordinates are geodetic. Specify the bounding rectangle as [startLat, endLat, startLon endLon]. startLat and endLat are the minimum and maximum latitudes of the geodetic frames, where startLat and endLat must lie in the interval [–90,90] and startLat < endLat. startLon and endLon are the minimum and maximum longitudes of the geodetic frame and must lie in the interval [–180,180]. If endLon < startLon, the object wraps endLon to startLon + 360°. Units are in degrees.

Data Types: double

Terrain data of the surface, specified as an M-by-N real-valued matrix or a string containing a Digital Terrain Elevation Data (DTED) file name. Terrain data consists of land height as a function of geo-position and is assumed to be referenced to the WGS84 ellipsoidal model. When a DTED filename is provided, it is expected that the data in the DTED file is referenced to the EGM96 geoid model.

  • M-by-N real-valued matrix — The matrix values represent the height data of an area defined by the Boundary property of the surface object. The domain can be a global Cartesian frame in meters or a geodetic grid with units of degrees. The object extends the height data in the matrix to the area. The object automatically fills heights of unspecified points using linear interpolation. M or N must be greater than or equal to 3.

    • You may use wmsfind (Mapping Toolbox) to find a digital elevation layer.

  • DTED file name — To use this option, you must specify the IsEarthCentered property of the radar scenario as true. In this case, the function uses the DTED file to specify the terrain heights for an area defined by the Boundary property of the ground surface object. Also, the object automatically fills unspecified data in the DTED file using linear interpolation.

Height values here are relative to the ReferenceHeight property.

Data Types: double | string | char

Object Functions

heightHeight of point on surface
occlusionTest for occlusion of point by a surface
plotReflectivityMapPlots reflectivity map

Examples

collapse all

Create a surface with two hills. Plot the surface on a 200-by-200 meter grid with grid points one meter apart. Add the surface to a radar scenario. Assume the surface has a radar reflectivity defined by a constant gamma model.

[x,y] = meshgrid(linspace(-100,100,201));
ht1 = 40*exp(-(x.^2 + y.^2)/30^2);
ht2 = 100*exp(-((x-60).^2 + y.^2)/25^2);
ht = ht1 + ht2;
p = surfc(x(1,:),y(:,1),ht);
axis equal
axis tight
shading interp
simTime = 3;
scene = radarScenario(UpdateRate = 1, ...
    IsEarthCentered = false,StopTime = simTime);
gammaDB = surfacegamma('Flatland');
refl = surfaceReflectivityLand(Model = 'ConstantGamma',Gamma = gammaDB);
srf = landSurface(scene,RadarReflectivity = refl, ...
    Terrain = ht,Boundary = [-100,100;-100,100]);

Use surface manager to identify the surface.

scene.SurfaceManager
ans = 
  SurfaceManager with properties:

    EnableMultipath: 0
       UseOcclusion: 1
           Surfaces: [1×1 radar.scenario.LandSurface]

scene.SurfaceManager.Surfaces
ans = 
  LandSurface with properties:

        RadarReflectivity: [1×1 surfaceReflectivityLand]
    ReflectionCoefficient: [1×1 radar.scenario.SurfaceReflectionCoefficient]
          ReflectivityMap: 1
          ReferenceHeight: 0
                 Boundary: [2×2 double]
                  Terrain: [201×201 double]

Obtain and plot the height of the surface at the point (50,-30).

xt = 50;
yt = -30;
htx = height(srf,[xt,yt])
htx = 
21.1046
hold on
plot3(xt,yt,htx+5,'ow','MarkerFaceColor','r')
xlabel('x')
ylabel('y')
hold off

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 3 objects of type surface, contour, line. One or more of the lines displays its values using only markers

Create a radar scenario and specify its IsEarthCentered property as true to use DTED file.

scene = radarScenario(IsEarthCentered = true);

Model the reflectivity as a constant gamma surface.

refl = surfaceReflectivityLand(Model = 'ConstantGamma',Gamma = -20);

Add a 0.1-by-0.1 degree land surface derived from a DTED file.

bdry = [39.5 39.6;-105.51 -105.41];
srf = landSurface(scene,Terrain = 'n39_w106_3arc_v2.dt1', ...
    Boundary = bdry,RadarReflectivity = refl)
srf = 
  LandSurface with properties:

        RadarReflectivity: [1×1 surfaceReflectivityLand]
    ReflectionCoefficient: [1×1 radar.scenario.SurfaceReflectionCoefficient]
          ReflectivityMap: 1
          ReferenceHeight: 0
                 Boundary: [2×2 double]
                  Terrain: 'n39_w106_3arc_v2.dt1'

mgr = scene.SurfaceManager
mgr = 
  SurfaceManager with properties:

    EnableMultipath: 0
       UseOcclusion: 1
           Surfaces: [1×1 radar.scenario.LandSurface]

Plot the surface height.

x = linspace(srf.Boundary(2,1),srf.Boundary(2,2),201);
y = linspace(srf.Boundary(1,1),srf.Boundary(1,2),201);
[X,Y] = meshgrid(x,y);
X1 = X(:)';
Y1 = Y(:)';
H = height(srf,[Y1;X1]);
H = reshape(H,length(x),length(y));
surf(x,y,H)
shading interp
ylabel('Latitude (deg)')
xlabel('Longitude (deg)')
zlabel('Height (m)')

Figure contains an axes object. The axes object with xlabel Longitude (deg), ylabel Latitude (deg) contains an object of type surface.

Create a radar scenario and specify set the IsEarthCentered property as true to obtain the terrain from a DTED file.

scene = radarScenario(IsEarthCentered = true);

Model the reflectivity as a constant gamma surface.

refl = surfaceReflectivityLand(Model = 'ConstantGamma',Gamma = -20);

Add a 0.1-by-0.1 degree land surface derived from a DTED file.

bdry = [39.5 39.6;-105.51 -105.41];
srf = landSurface(scene,Terrain = 'n39_w106_3arc_v2.dt1', ...
    Boundary = bdry,RadarReflectivity = refl);

Verify that occlusion is turned on.

mgr = scene.SurfaceManager
mgr = 
  SurfaceManager with properties:

    EnableMultipath: 0
       UseOcclusion: 1
           Surfaces: [1×1 radar.scenario.LandSurface]

Plot the surface height.

x = linspace(srf.Boundary(2,1),srf.Boundary(2,2),201);
y = linspace(srf.Boundary(1,1),srf.Boundary(1,2),201);
[X,Y] = meshgrid(x,y);
X1 = X(:)';
Y1 = Y(:)';
H = height(srf,[Y1;X1]);
H = reshape(H,length(x),length(y));
surf(x,y,H)
shading interp
ylabel('Latitude (deg)')
xlabel('Longitude (deg)')
zlabel('Height (m)')
hold on

Test for occlusion.

ht1 = height(srf,[39.59 -105.5])
ht1 = 
2.7962e+03
ht2 = height(srf,[39.51 -105.41])
ht2 = 
2.7718e+03
occlusion(srf,[39.59 -105.5 ht1],[39.51 -105.41 ht2])
ans = logical
   1

The points are occluded. The line between the two points passes through the surface as shown.

plot3([-105.5 -105.41],[39.59 39.51], [ht1 ht2],'r','LineWidth',3)

Figure contains an axes object. The axes object with xlabel Longitude (deg), ylabel Latitude (deg) contains 2 objects of type surface, line.

Version History

Introduced in R2022a