LandSurface
Description
LandSurface
defines a land surface object belonging to a radarScenario
object. You can use the LandSurface
object to determine land heights in a
scenario and surface reflectivity, test for occlusion along the line-of-sight between two
points in the scenario, and give surface height at a point.
Creation
Create LandSurface
objects using the landSurface
object
function of the radarScenario
object.
Properties
RadarReflectivity
— Radar reflectivity object of surface
surfaceReflectivityLand
object (default) | surfaceReflectivityCustom
object
Radar reflectivity object of surface, specified as a surfaceReflectivityLand
or surfaceReflectivityCustom
System object™ for the normalized radar cross section (NRCS) of the surface. Defaults to a surfaceReflectivityLand
object using a Barton land model and flatland land type.
Example: surfaceReflectivityLand(Model="GIT",LandType="Soil",SurfaceHeightStandardDeviation=1)
ReflectionCoefficient
— Surface reflection coefficient model or value
SurfaceReflectionCoefficient
object (default) | finite scalar
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. Note, by default, the reflectionCoefficient
object function is 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
ReflectivityMap
— Map of reflectivity type indices over the surface
1 (default) | scalar | real-valued matrix
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
ReferenceHeight
— Surface reference height (m)
0 (default) | scalar
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
Boundary
— Bounding rectangle of surface
[-Inf Inf; -Inf Inf]
(default) | 2-by-2 matrix of real values
Bounding rectangle of the surface, specified as a 2-by-2 matrix of real values. The bounding rectangle is defined by two two-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 [MinX
,MaxX
,MinY
MaxY
], as Cartesian coordinates in the reference frame of the scenario, whereMinX
<MaxX
, andMinY
<MaxY
.true
— Scenario coordinates are geodetic. Specify the bounding rectangle as [StartLat
,EndLat
,StartLon
EndLon
] whereStartLat
andEndLat
are the minimum and maximum latitudes of the geodetic frames.StartLat
andEndLat
must lie in the interval [–90,90] whereStartLat
<EndLat
.Specify
StartLon
andEndLon
as the minimum and maximum longitudes of the geodetic frame.StartLon
andEndLon
must lie in the interval [–180,180]. IfEndLon
<StartLon
, the object wrapsEndLon
toStartLon
+360°
. Units are in degrees.
Data Types: double
Terrain
— Terrain data for surface
[] (default) | M-by-N real-valued matrix | string | char array
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.DTED file name — To use this option, you must specify the
IsEarthCentered
property of the radar scenario astrue
. In this case, the function uses the DTED file to specify the terrain heights for an area defined by theBoundary
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
height | Height of point on surface |
occlusion | Test for occlusion of point by a surface |
plotReflectivityMap | Plots reflectivity map |
Examples
Create Land Surface in Radar Scenario
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: [1x1 radar.scenario.LandSurface]
scene.SurfaceManager.Surfaces
ans = LandSurface with properties: RadarReflectivity: [1x1 surfaceReflectivityLand] ReflectionCoefficient: [1x1 radar.scenario.SurfaceReflectionCoefficient] ReflectivityMap: 1 ReferenceHeight: 0 Boundary: [2x2 double] Terrain: [201x201 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
Create Land Surface from DTED File
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: [1x1 surfaceReflectivityLand] ReflectionCoefficient: [1x1 radar.scenario.SurfaceReflectionCoefficient] ReflectivityMap: 1 ReferenceHeight: 0 Boundary: [2x2 double] Terrain: 'n39_w106_3arc_v2.dt1'
mgr = scene.SurfaceManager
mgr = SurfaceManager with properties: EnableMultipath: 0 UseOcclusion: 1 Surfaces: [1x1 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)')
Test for Occlusion Between Two Points on Land 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: [1x1 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)
Version History
Introduced in R2022a
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)