Main Content

seaSurface

Add sea surface to radar scenario

    Description

    example

    srf = seaSurface(scene) adds a SeaSurface object srf to the radarScenario object scene.

    srf = seaSurface(scene,Name=Value) adds a sea surface object with the specified property Name set to the specified Value. You can specify additional name-value pair arguments in any order as (Name1=Value1,...,NameN=ValueN).

    Examples

    collapse all

    Create a square sea surface area using the seaSurface object. Assume a moderate sea state with a wind speed of about 10 m/s, a fetch of 250 km and a length of 1.0 km. Add an Elfouhaily spectrum to the sea surface. Use the height function to determine the heights of 2 points on the map.

    Create a radar scenario.

    scene = radarScenario(IsEarthCentered = false);
    rng('default')

    Add a sea surface to the scene with an Elfouhaily spectrum.

    spec = seaSpectrum(Resolution = 20);
    srf = seaSurface(scene,Boundary = [-500 500; -500 500], ...
        WindSpeed = 10,Fetch = 250000,SpectralModel = spec);

    Find the height at two points.

    P1 = [0;0];
    P2 = [30;-70];
    H = height(srf,[P1 P2])
    H = 1×2
    
       -0.9394   -0.2682
    
    

    Display the sea surface properties in the surface manager.

    mgr = scene.SurfaceManager
    mgr = 
      SurfaceManager with properties:
    
        UseOcclusion: 1
            Surfaces: [1x1 radar.scenario.SeaSurface]
    
    
    mgr.Surfaces
    ans = 
      SeaSurface with properties:
    
                WindSpeed: 10
            WindDirection: 0
                    Fetch: 250000
            SpectralModel: [1x1 seaSpectrum]
        RadarReflectivity: [1x1 surfaceReflectivitySea]
          ReflectivityMap: 1
          ReferenceHeight: 0
                 Boundary: [2x2 double]
    
    

    Create a square sea surface assuming a moderate sea state with a wind speed of about 12 knots (6.17 m/s), a fetch of 120 nmi (222.24 km), and a length of 1.024 km. Add an Elfouhaily spectrum to the sea surface. Use the occlusion object function to determine if the path from point 1 to point 2 is occluded.

    Start by creating a radar scenario;

    scene = radarScenario;

    Add a sea surface with an Elfouhaily spectrum.

    rng('default');
    spec = seaSpectrum('Resolution',16);

    Create the sea surface.

    bnds = [0 1024; 0 1024];
    srf = seaSurface(scene,'Boundary',bnds, ...
        'WindSpeed',6.17,'Fetch',222.24e3, ...
        'SpectralModel',spec);

    Set two points for testing occlusion.

    p1 = [1016; 368; -0.082];
    p2 = [10; 100; 0.13];

    Determine if the path from p1 to p2 is occluded

    tf1 = occlusion(srf,p1,p2)
    tf1 = logical
       1
    
    

    Create a 1024-by-1024 m square sea surface. Assume an NRL reflectivity model for a high sea state 6 with a wind speed of about 20 m/s and a fetch of 250 km. Set UseOcclusion in the SurfaceManager to false.

    Create a radar scenario.

    scene = radarScenario;

    Model the reflectivity using the NRL model.

    refl = surfaceReflectivitySea(Model = 'NRL',SeaState = 6, ...
        Polarization = 'V')
    refl = 
      surfaceReflectivitySea with properties:
    
               Model: 'NRL'
            SeaState: 6
        Polarization: 'V'
             Speckle: 'None'
    
    
    rng(2033)
    spec = seaSpectrum(Resolution = 2);
    bnds = [0 1024; 0 1024];
    srf = seaSurface(scene,Boundary = bnds, ...
        WindSpeed = 20,Fetch = 250e3, ...
        SpectralModel = spec);
    mgr = scene.SurfaceManager;
    mgr.UseOcclusion = false
    mgr = 
      SurfaceManager with properties:
    
        UseOcclusion: 0
            Surfaces: [1x1 radar.scenario.SeaSurface]
    
    
    x = linspace(srf.Boundary(1,1),srf.Boundary(1,2),1000);
    y = linspace(srf.Boundary(2,1),srf.Boundary(2,2),1000);
    [X,Y] = meshgrid(x,y);
    X1 = X(:)';
    Y1 = Y(:)';
    hts = height(srf,[Y1;X1]);
    hts = reshape(hts,length(x),length(y));
    surf(x,y,hts)
    axis equal
    shading interp
    ylabel('X (m)')
    xlabel('Y (m)')
    zlabel('Height (m)')

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

    Input Arguments

    collapse all

    Radar scenario, specified as a radarScenario object.

    Name-Value Arguments

    Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

    Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

    Example: srf = seaSurface(scene,'Boundary',[-500 500; -500 500],'WindSpeed',10,'Fetch',250000,'SpectralModel',spec);

    Sea surface omnidirectional motion spectrum, specified as a seaSpectrum object. This object models surface heights over time.

    Dependencies

    To enable this property, set the radarScenario property IsEarthCentered to false.

    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, where MinX < MaxX, and MinY < MaxY.

    • true — Scenario coordinates are geodetic. Specify the bounding rectangle as [StartLat, EndLat, StartLon EndLon] where StartLat and EndLat are the minimum and maximum latitudes of the geodetic frames. StartLat and EndLat must lie in the interval [–90,90] where StartLat < EndLat.

      Specify StartLon and EndLon as the minimum and maximum longitudes of the geodetic frame. StartLon and EndLon must lie in the interval [–180,180]. If EndLon < StartLon, the object wraps EndLon to StartLon + 360°. Units are in degrees.

    Data Types: double

    Radar reflectivity object of surface, specified as a surfaceReflectivitySea or surfaceReflectivityCustom for the normalized radar cross section (NRCS) of the surface. Defaults to a surfaceReflectivitySea object using a Barton land model and flatland land type.

    This property contains a grid of reflectivity type values corresponding to vertices of the surface height data If terrain or 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. For surfaces with no height data, this is the assumed height of the entire surface. Units are in meters.

    Data Types: double

    Wind speed over sea surface, specified as a nonnegative scalar. Wind speed is defined at a height of 10 meters from the water surface. Wind speed is used as a parameter for the associated spectral model. Units are m/s.

    Data Types: double

    Wind direction over the sea surface, specified as a scalar in the range 0° to 180°. A standard right-handed Cartesian coordinate system is used. When the IsEarthCentered property of radarScenario is true, wind direction is a positive angle defined counterclockwise from the positive x-axis. Otherwise, wind direction is defined as clockwise from the North direction. This property is used to determine surface reflectivity and is used as a parameter for the associated spectral model. Units are in degrees.

    Data Types: double

    Fetch, specified as a positive scalar. Fetch is the distance over a sea surface in which the wind blows in a single direction without obstruction. The fetch is used as a parameter for the associated spectral model. Units are in meters.

    Data Types: double

    Output Arguments

    collapse all

    Sea surface, returned as a SeaSurface object.

    Version History

    Introduced in R2022a