code: def process_crs(crs):
      
      try:
          import cartopy.crs as ccrs
          import geoviews as gv # noqa
          import pyproj
      except:
          raise ImportError('Geographic projection support requires GeoViews and cartopy.')
  
      if crs is None:
          return ccrs.PlateCarree()
  
      if isinstance(crs, basestring) and crs.lower().startswith('epsg'):
          try:
              crs = ccrs.epsg(crs[5:].lstrip().rstrip())
          except:
              raise ValueError("Could not parse EPSG code as CRS, must be of the format 'EPSG: {code}.'")
      elif isinstance(crs, int):
          crs = ccrs.epsg(crs)
      elif isinstance(crs, (basestring, pyproj.Proj)):
          try:
              crs = proj_to_cartopy(crs)
          except:
              raise ValueError("Could not parse EPSG code as CRS, must be of the format 'proj4: {proj4 string}.'")
      elif not isinstance(crs, ccrs.CRS):
          raise ValueError("Projection must be defined as a EPSG code, proj4 string, cartopy CRS or pyproj.Proj.")
      return crs
docs: Parses cartopy CRS definitions defined in one of a few formats:
  
        1. EPSG codes:   Defined as string of the form "EPSG: {code}" or an integer
        2. proj.4 string: Defined as string of the form "{proj.4 string}"
        3. cartopy.crs.CRS instance
        4. None defaults to crs.PlateCaree