class_docstr: A source of SRTM data, which implements Cartopy's :ref:`RasterSource
  interface <raster-source-interface>`.
class_docstr_tok: ["A","source","of","SRTM","data",",","which","implements","Cartopy","'s",":","ref",":","`","RasterSource","interface","<","raster-source-interface",">","`","."]
docstr: Return the filename for the given lon/lat SRTM tile (downloading if
  necessary), or None if no such tile exists (i.e. the tile would be
  entirely over water, or out of latitude range).
docstr_tok: ["Return","the","filename","for","the","given","lon\/lat","SRTM","tile","(","downloading","if","necessary",")",",","or","None","if","no","such","tile","exists","(","i.e",".","the","tile","would","be","entirely","over","water",",","or","out","of","latitude","range",")","."]
code: def srtm_fname(self, lon, lat):
      """
      Return the filename for the given lon/lat SRTM tile (downloading if
      necessary), or None if no such tile exists (i.e. the tile would be
      entirely over water, or out of latitude range).
  
      """
      if int(lon) != lon or int(lat) != lat:
          raise ValueError(
              "Integer longitude/latitude values required."
          )
  
      x = "%s%03d" % ("E" if lon >= 0 else "W", abs(int(lon)))
      y = "%s%02d" % ("N" if lat >= 0 else "S", abs(int(lat)))
  
      srtm_downloader = Downloader.from_config(
          ("SRTM", f"SRTM{self._resolution}")
      )
      params = {
          "config": config,
          "resolution": self._resolution,
          "x": x,
          "y": y,
      }
  
      # If the URL doesn't exist then we are over sea/north/south of the
      # limits of the SRTM data and we return None.
      if srtm_downloader.url(params) is None:
          return None
      else:
          return self.downloader.path(params)
  
imports: import io
  from pathlib import Path
  import warnings
  import numpy
  from cartopy import config
  import cartopy.crs
  from cartopy.io import Downloader, LocatedImage, RasterSource, fh_getter
label_desc: Use image node_id 4 for calling the _SRTMSource obj's underlying member method code with example usage: obj.srtm_fname(lon, lat) and returns: None, self