GeoEco.DataProducts.NASA.PODAAC.GHRSSTLevel4.CannyEdgesAsArcGISRasters

classmethod GHRSSTLevel4.CannyEdgesAsArcGISRasters(username, password, shortName, outputWorkspace, mode='add', highThreshold=None, lowThreshold=None, sigma=1.4, minSize=4, rotationOffset=None, spatialExtent=None, startDate=None, endDate=None, datasetType='netcdf', timeout=60, maxRetryTime=300, cacheDirectory=None, metadataCacheLifetime=86400.0, rasterExtension='.img', rasterNameExpressions=None, calculateStatistics=True, buildRAT=False, buildPyramids=False)

Creates rasters indicating the positions of fronts in GHRSST Level 4 images published by NASA JPL PO.DAAC, using the Canny edge detection algorithm.

To run this tool, you either must have MATLAB R2026a or MATLAB Runtime R2026a installed. The MATLAB Runtime is free and may be downloaded from https://www.mathworks.com/help/compiler/install-the-matlab-runtime.html. Please follow the installation instructions carefully. Version R2026a must be used; other versions will not work. MATLAB Runtime allows multiple versions can be installed at the same time.

The Canny edge detection algorithm is a generic, widely-used algorithm for delineating edges between objects in digital images. The algorithm may be successfully applied to a wide variety of problems, including the problem of detecting fronts between water masses. Canny (1986) describes the algorithm in full detail, including its mathematical derivation. Some readers may find the paper difficult due to its length and technical detail. Shorter, more approachable descriptions may be found by searching the Internet for “Canny algorithm”.

The Group for High-Resolution Sea Surface Temperature (GHRSST) provides a new generation of global high-resolution (<10km) SST products to the operational oceanographic, meteorological, climate and general scientific community. The overall aim of the GHRSST is to provide the best quality sea surface temperature data for applications in short, medium and decadal/climate time scales in the most cost effective and efficient manner through international collaboration and scientific innovation.

This tool accesses Level 4 (L4) gap-free gridded SST products published in near real-time by the GHRSST Global Data Assembly Center (GDAC) at the NASA JPL Physical Oceanography Distributed Active Archive Center (PO.DAAC) and subsequently hosted and distributed by NASA Earthdata. These products provide regional and global daily cloud-free estimates of SST at spatial resolutions ranging from 0.25 degrees to down 1 km. To fill in cloudy areas, data from multiple satellite and in-situ sensors are combined and regions without any data are filled in various interpolation and modeling techniques.

All products accessed by this tool are published at a daily timestep. Some products are updated on a continual basis and available in near real time; others are updated infrequently and are intended mainly for historical analysis. The temporal extent, spatial resolution and extent, and sensors and interpolation technique used vary by product. All products use the WGS 1984 geographic coordinate system. GHRSST temperatures are published in kelvin. By default, this tool converts them to degrees Celsius but provides an option to obtain the original kelvin values.

This tool supports many but not all of the GHRSST L4 published by PO.DAAC. If you see a GHRSST L4 product on PO.DAAC that is not available with this tool, please contact the MGET development team for assistance.

Please see these instructions on how to acknowledge your use of PO.DAAC products.

Requires: ArcGIS Pro 3.6.0 or later or ArcGIS Server equivalent to ArcGIS Pro 3.6.0 or later, MATLAB Runtime R2026a (which can be freely downloaded from https://www.mathworks.com/products/compiler/matlab-runtime.html) or the full version of MATLAB R2026a, Python numpy module, Python requests module, Python netCDF4 module.

Parameters:
  • username (str) – NASA Earthdata account user name. Minimum length꞉ 1.

  • password (str) – NASA Earthdata account password. Minimum length꞉ 1.

  • shortName (str) –

    PO.DAAC Short Name of the GHRSST L4 product to access. Currently, the following products are supported:

    All products use the WGS 1984 geographic coordinate system and are published at a daily time-step. Some products are updated on a continual basis and available in near real time; others are updated infrequently and are intended mainly for historical analysis. The temporal extent, spatial resolution and extent, sensors and, interpolation technique used vary by product. Please see the products’ documentation for details.

    This tool supports many but not all of the GHRSST L4 products published by PO.DAAC. If you see a product on PO.DAAC that is not available with this tool, please contact the MGET development team for assistance.

    Allowed values꞉ 'AVHRR_OI-NCEI-L4-GLOB-v2.0', 'AVHRR_OI-NCEI-L4-GLOB-v2.1', 'CMC0.1deg-CMC-L4-GLOB-v3.0', 'CMC0.2deg-CMC-L4-GLOB-v2.0', 'DMI_OI-DMI-L4-GLOB-v1.0', 'GAMSSA_28km-ABOM-L4-GLOB-v01', 'Geo_Polar_Blended-OSPO-L4-GLOB-v1.0', 'Geo_Polar_Blended_Night-OSPO-L4-GLOB-v1.0', 'K10_SST-NAVO-L4-GLOB-v01', 'MUR-JPL-L4-GLOB-v4.1', 'MUR25-JPL-L4-GLOB-v04.2', 'MW_IR_OI-REMSS-L4-GLOB-v5.0', 'MW_IR_OI-REMSS-L4-GLOB-v5.1', 'MW_OI-REMSS-L4-GLOB-v5.0', 'MW_OI-REMSS-L4-GLOB-v5.1', 'OISST_HR_NRT-GOS-L4-BLK-v2.0', 'OISST_HR_NRT-GOS-L4-MED-v2.0', 'OISST_UHR_NRT-GOS-L4-BLK-v2.0', 'OISST_UHR_NRT-GOS-L4-MED-v2.0', 'OSTIA-UKMO-L4-GLOB-REP-v2.0', 'OSTIA-UKMO-L4-GLOB-v2.0', 'RAMSSA_09km-ABOM-L4-AUS-v01'. Case sensitive.

  • outputWorkspace (str) – Directory or geodatabase to receive the rasters. Unless you have a specific reason to store the rasters in a geodatabase, we recommend you store them in a directory because it will be faster and allow the rasters to be organized in a tree. The tree structure and raster names will be generated automatically unless you provide a value for the Raster Name Expressions parameter. Minimum length꞉ 1.

  • mode (str, optional) –

    Overwrite mode, one of:

    • Add - create rasters that do not exist and skip those that already exist. This is the default.

    • Replace - create rasters that do not exist and overwrite those that already exist.

    The ArcGIS Overwrite Output environment setting has no effect on this tool. If ‘Replace’ is selected the rasters will be overwritten, regardless of the ArcGIS Overwrite Output setting.

    Allowed values꞉ 'Add', 'Replace'.

  • highThreshold (float, optional) –

    High threshold for the Canny edge detection algorithm. The Canny algorithm uses the high threshold to find “strong edges”, which are pixels that have such a high gradient magnitude that they may confidently be classified as edges. These are pixels where those that surround them show a strong increase or decrease in value as you move across the image in some direction. The units of the Canny thresholds are the change in the units of the image per pixel traveled. For example, if the image represents sea surface temperature in degrees C, the units are change in degrees C per pixel.

    If you do not provide a value, one will be chosen automatically based on the data within the image. If you are detecting edges in multiple images, a value will be selected for each image separately.

    If you do not know what value to use, try the automatic selection and check the results carefully to see if they are acceptable for your problem. If not, you may select a value by trial and error. To see the values selected automatically, you enable verbose logging. (Please consult the MGET team for help with this, if necessary.)

    Increasing the high threshold will reduce the number of edges detected; reducing it will increase the number of edges detected.

    Must be greater than 0.0. Must be less than 1.0.

  • lowThreshold (float, optional) –

    Low threshold for the Canny edge detection algorithm. If you supply a low threshold, you must also supply a high threshold. The low threshold must be less than the high threshold.

    After using the high threshold to find “strong edges”, the Canny algorithm uses the low threshold to find “weak edges”, which are those that have a gradient magnitude that is high enough that they might be edges, but not so high that they may be confidently classified as edges on the basis of their gradient magnitude alone. After identifying the weak edge pixels, the algorithm checks whether 8-connected groups of weak pixels are connected to strong ones (i.e. whether they touch them horizontally, vertically, or diagonally). Groups of weak pixels that do not touch a strong pixel are discarded. This approach essentially allows the strong edges to be “extended” by the weak ones.

    The units of the Canny thresholds are the change in the units of the image per pixel traveled. For example, if the image represents sea surface temperature in degrees C, the units are change in degrees C per pixel.

    If you do not provide a value, one will be chosen automatically based on the data within the image. If you are detecting edges in multiple images, a value will be selected for each image separately. The value selected will be the high threshold multiplied by 0.4.

    If you do not know what value to use, try the automatic selection and check the results carefully to see if they are acceptable for your problem. If not, you may select a value by trial and error. To see the values selected automatically, you enable verbose logging. (Please consult the MGET team for help with this, if necessary.)

    Increasing the low threshold will reduce the number of edges detected; reducing it will increase the number of edges detected.

    Must be greater than 0.0. Must be less than 1.0.

  • sigma (float, optional) –

    Sigma parameter for the Gaussian filter applied by the Canny edge detection algorithm. As its first step, before performing edge detection, the Canny algorithm applies a Gaussian filter to the image to smooth out noise. The sigma parameter controls the degree of smoothing. Higher values producing more smoothing, resulting in fewer detected edges. Lower values yield less smoothing and more detected edges.

    If you do not provide a value, the square root of 2 will be used by default. This is a good value for many problems. If your image is very noisy, you might need a higher value. Try increasing it a little bit at a time (e.g. by 0.1 or 0.2). Be careful not to increase it too much; otherwise it may smooth out the edges that you are trying to detect. If your image is not very noisy–e.g. it is from an ocean model that produces theoretical results that do not contain noise–consider reducing the value to 1 or less (it must be greater than zero, however).

    It is not necessary to specify the window size of the Gaussian filter; the algorithm automatically selects the optimal window size based on the value of the sigma parameter.

    Must be greater than 0.0.

  • minSize (int, optional) –

    Minimum number of pixels an individual edge must occupy for it to be retained. Edges with fewer number of pixels will be discarded. For this option, an “edge” is defined as the chain of pixels that are 8-connected (i.e. they are connected horizontally, vertically, or diagonally). The edge may be any shape, such as long and thin and branching or short and blob-like.

    This option is applied after the Canny algorithm is complete. If a value is not provided, all edges will be retained.

    Must be greater than 0.

  • rotationOffset (float, optional) – Degrees to rotate the outputs about the polar axis. This parameter may only be used for global products. The outputs can only be rotated in whole cells. The value you provide will be rounded off to the closest cell. The value may be positive or negative.

  • spatialExtent (str, optional) – Spatial extent of the outputs, in degrees. This parameter is applied after the rotation parameter and uses coordinates that result after rotation. The outputs can only be clipped in whole grid cells. The values you provide will be rounded off to the closest cell. Minimum length꞉ 1. Must match regular expression꞉ ([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)\s+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)\s+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)\s+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?).

  • startDate (datetime, optional) – Start date for the outputs to create. Outputs will be created for images that occur on or after the start date and on or before the end date. If you do not provide a start date, the date of the first available time slice will be used.

  • endDate (datetime, optional) – End date for the outputs to create. Outputs will be created for images that occur on or after the start date and on or before the end date. If you do not specify an end date, the date of the most recent time slice will be used.

  • datasetType (str, optional) –

    Dataset type to access. Currently only netCDF is supported. netCDF files will be downloaded and cached locally. If you specify a Cache Directory, they will be stored there and not deleted. Otherwise a temporary directory will be created to hold the files while the download is in progress and deleted when the relevent data are extracted and execution is complete.

    The disadvantage with this approach is that when your study area is small and you’re accessing a global product, a lot of bandwidth and disk space is wasted. This problem can become acute if you’re accessing a global product with very high resolution, such as one of the 1 km resolution datasets. If this proves too problematic, contact the MGET development team for assistance. We may be able to implement an alternative access method that allows downloads to be limited to a geographic bounding box.

    Allowed values꞉ 'netCDF'.

  • timeout (int, optional) –

    Number of seconds to wait for the server to respond before failing with a timeout error.

    If you also provide a Maximum Retry Time and it is larger than the timeout value, the failed request will be retried automatically (with the same timeout value) until it succeeds or the Maximum Retry Time has elapsed.

    If you receive a timeout error you should investigate the server to determine if it is malfunctioning or just slow. Check the Earthdata website to see if NASA has posted a notice about the problem, or contact the NASA directly. If the server just slow, increase the timeout value to a larger number, to give the server more time to respond.

    Minimum value꞉ 1.

  • maxRetryTime (int, optional) –

    Number of seconds to retry requests to the server before giving up.

    Use this parameter to cope with transient failures. For example, you may find that the server is rebooted nightly during a maintenance cycle. If you start a long running operation and want it to run overnight without failing, set the maximum retry time to a duration that is longer than the time that the server is offline during the maintenance cycle.

    To maximize performance while minimizing load during failure situations, retries are scheduled with progressive delays:

    • The first retry is issued immediately.

    • Then, so long as fewer than 10 seconds have elapsed since the original request was issued, retries are issued every second.

    • After that, retries are issued every 30 seconds until the maximum retry time is reached or the request succeeds.

    Minimum value꞉ 1.

  • cacheDirectory (str, optional) –

    Directory for caching local copies of downloaded data. A cache directory is optional but highly recommended if you plan to repeatedly access data for the same range of dates.

    When data are requested, the cache directory will be checked for data that was downloaded and cached during prior requests. If cached data exists that can fulfill part of the current request, the request will be serviced by reading from cache files rather than downloading from the server. If the entire request can be serviced from the cache, the server will not be accessed at all and the request will be completed extremely quickly. Any parts of the request that cannot be serviced from the cache will be downloaded from the server and added to the cache, speeding up future requests for the same data.

    If you use a cache directory, be aware of these common pitfalls:

    • The caching algorithm permits the cache to grow to infinite size and never deletes any cached data. If you access a large amount of data (e.g. an entire 20 terabyte collection of satellite images) it will all be added to the cache. Be careful that you do not fill up your hard disk. To mitigate this, manually delete the entire cache or selected directories or files within it.

    • The caching algorithm stores data in uncompressed files, so that subsets of those files may be quickly accessed. To save space on your hard disk, you can enable compression of the cache directory using the operating system. On Windows, right click on the directory in Windows Explorer, select Properties, click Advanced, and enable “Compress contents to save disk space”.

    • The caching algorithm cannot detect when portions of a dataset have been replaced on the server, thereby making the cached data obsolete. Thus, if a data provider republishes a dataset with improved data values, the caching algorithm will continue to use the old, obsolete values. To mitigate this, you should monitor when data providers reprocess their datasets, and delete the cached files when they become obsolete.

    Minimum length꞉ 1.

  • metadataCacheLifetime (float, optional) –

    Maximum amount of time, in seconds, that granule metadata downloaded from the NASA Earthdata Common Metadata Repository (CMR) will be cached.

    Downloading metadata from the NASA Earthdata CMR can be slow. If this parameter and a cache directory are both provided, when the CMR is queried for all granule metadata for a given collection_concept_id, the downloaded metadata will be cached in the directory for this amount of time. During this period, the cached metadata will be accessed instead of the server, which can greatly speed up processing involving NASA Earthdata granules. However, if new datasets are stored in the CMR, they will not be discovered until the cached metadata has expired.

    If this parameter is not provided (the default), then granule metadata will not be cached.

    Minimum value꞉ 1.0.

  • rasterExtension (str, optional) – File extension to use for output rasters. This parameter is ignored if the rasters are stored in a geodatabase rather than the file system, or if the Raster Name Expressions parameter is provided (in which case it determines the file extension). The default is ‘.img’, for ERDAS IMAGINE format. Another popular choice is ‘.tif’, the GeoTIFF format. Please see the ArcGIS documentation for the extensions of the supported formats. Minimum length꞉ 1.

  • rasterNameExpressions (list of str, optional) –

    List of expressions specifying how the output rasters should be named. If you do not provide anything, a default naming scheme will be used.

    If the output workspace is a file system directory, you may provide one or more expressions. Each expression defines a level in a directory tree. The final expression specifies the raster file name. If the output workspace is a geodatabase, you should provide only one expression, which specifies the raster name.

    Each expression may contain any sequence of characters permitted by the output workspace. Each expression may optionally contain one or more of the following case-sensitive codes. The tool replaces the codes with appropriate values when creating each raster:

    • %(ShortName)s - PO.DAAC Short Name of the GHRSST L4 product.

    • %(VariableName)s - GHRSST variable represented in the output raster, always analysed_sst.

    • %%Y - four-digit year of the raster. This and the following codes are only available for datasets that have time coordinates.

    • %%m - two-digit month of the raster.

    • %%d - two-digit day of the month of the raster.

    • %%j - three-digit day of the year of the raster.

    • %%H - two-digit hour of the raster.

    • %%M - two-digit minute of the raster.

    • %%S - two-digit second of the raster.

    Minimum length꞉ 1.

  • calculateStatistics (bool, optional) – If True and the output rasters use an integer data type, raster attribute tables (RATs) will be built for the output rasters using the ArcGIS Build Raster Attribute Table tool. Raster attribute tables are essentially histograms: they store the counts of cells having each value. If you do not need this information, you can skip the building of raster attribute tables to speed up the creation of the output rasters. Note that for certain raster formats, such as ArcInfo Binary Grid, the explicit buliding of raster attribute tables is not necessary because it happens automatically when the rasters are created. This option is ignored if the output rasters use a floating point data type.

  • buildRAT (bool, optional) – If True and the output rasters use an integer data type, raster attribute tables (RATs) will be built for the output rasters using the ArcGIS Build Raster Attribute Table tool. Raster attribute tables are essentially histograms: they store the counts of cells having each value. If you do not need this information, you can skip the building of raster attribute tables to speed up the creation of the output rasters. Note that for certain raster formats, such as ArcInfo Binary Grid, the explicit buliding of raster attribute tables is not necessary because it happens automatically when the rasters are created. This option is ignored if the output rasters use a floating point data type.

  • buildPyramids (bool, optional) – If True, pyramids will be built for the output rasters using the ArcGIS Build Pyramids tool. Pyramids, also known as overviews, are reduced resolution versions of the rasters that can improve the speed at which they are displayed in the ArcGIS user interface.

Returns:

Updated output workspace.

Return type:

str