/dsarsim

Dummy Synthetic Aperture Radar Simulator, free and open-source

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

dSARsim - Dummy Synthetic Aperture Radar Simulator

dSARsim is a free and open-source dummy Synthetic Aperture Radar (SAR) simulator written in python v3 which is suited for didactic purposes.

The pseudo-simulation is carried out taking in account only the scene geometry and following simple rules. Radiometry is NOT simulated. The result is a grayscale scene where it is possible to visually discriminate the typical geometrical effects seen in SAR images, e.g. layover, shadowing and foreshortening, and the number of main scatterers for each pixel of the output image.

The software takes as input a Digital Terrain Model (DTM) or a Digital Surface Model (DSM) and returns as output a pseudo-SAR scene in slant range geometry. The main parameters that can be varied are:

  • Incidence angle;
  • Aspect angle;
  • Viewing direction;
  • Azimuth pixel spacing;
  • Slant range pixel spacing.

For further details on the pseudo-simulation principles please have a look at the related documentation, when it will be available... until then try to understand the comments within the code! :)

Want to host dSARsim?

If you wish to host dSARsim on your web server to provide an online "dummy" simulation didactic tool, contact me on www.af-projects.it and we may collaborate!

Usage

-h, --help
       show help message and exit.

-i INPUT, --input INPUT
       input DTM/DSM image (32 bit floating-point GeoTIFF image in UTM coordinates). If the image does not contain pixel size information, dSARsim assumes the pixel spacing is equal to 1 m.

-o OUTPUT, --output OUTPUT
       output image (same format as input).

-ai INCIDENCEANGLE, --incidenceAngle INCIDENCEANGLE
       SAR incidence angle in degrees. Default is 30.

-aa ASPECTANGLE, --aspectAngle ASPECTANGLE
       angle wrt the North-South axis. aspect angle > 0 = clockwise. Default is 0.

-pa AZIMUTHPIXELSPACING, --azimuthPixelSpacing AZIMUTHPIXELSPACING
       spacing between azimuth pixels in the output image in meters, or 0 if automatically set as the same spacing of the input DTM/DSM. Default is 0.

-pr SLANTRANGEPIXELSPACING, --slantRangePixelSpacing SLANTRANGEPIXELSPACING
       spacing between slant range pixels in the output image in meters, or 0 if automatically calculated in order to obtain a flat-terrain-'ground range' simulation. Default is 0.

-d {w,e}, --direction {w,e}
       direction of view of the sensor. 'w' = West to East, 'e' = East to West (assuming the sensor going from North to South with aspect angle = 0). Default is 'w'.

-n NODATAVALUE, --noDataValue NODATAVALUE
       no data value used in the DTM/DSM image, if any. Default is -9999.

-r, --rotateBack
       if aspect angle != 0, rotate back output image by -aspect angle degrees. Use only if azimuthPixelSpacing and slantRangePixelSpacing are not set by user in order to get simulations directly comparable to input DTM/DSM. Default is not set.

-s SUBPROCESSES, --subprocesses SUBPROCESSES
       number of concurrent threads to be run (works only if the module multiprocessing is installed). Default is 1.

--debug
       debug mode. Default is not set.

-v, --version
       show program's version number and exit.

Dependencies

dSARsim is written in python v3.x. Thus, in order to execute it you need a python v3.x environment. The following libraries are needed:

  • sys
  • math
  • copy
  • argparse
  • numpy
  • scipy.ndimage
  • osgeo.gdal
  • multiprocessing.Pool (not necessary but needed for parallel computation)

Current version

0.5

Disclaimer

The author does not guarantee that this software will always provide correct results nor that it will not crash your hardware. As mentioned above, dSARsim is intended for didactic purposes. Any use outside this scope is discouraged. In any case, any use of dSARsim is ONLY user responsibility.