code: def getUTMzone(geom):
      
      #If geom has srs properly defined, can do this
      #geom.TransformTo(wgs_srs)
      #Get centroid lat/lon
      lon, lat = geom.Centroid().GetPoint_2D()
      #Make sure we're -180 to 180
      lon180 = (lon+180) - np.floor((lon+180)/360)*360 - 180
      zonenum = int(np.floor((lon180 + 180)/6) + 1)
      #Determine N/S hemisphere
      if lat >= 0:
          zonehem = 'N'
      else:
          zonehem = 'S'
      #Deal with special cases
      if (lat >= 56.0 and lat < 64.0 and lon180 >= 3.0 and lon180 < 12.0):
          zonenum = 32
      if (lat >= 72.0 and lat < 84.0): 
          if (lon180 >= 0.0 and lon180 < 9.0): 
              zonenum = 31
          elif (lon180 >= 9.0 and lon180 < 21.0):
              zonenum = 33
          elif (lon180 >= 21.0 and lon180 < 33.0):
              zonenum = 35
          elif (lon180 >= 33.0 and lon180 < 42.0):
              zonenum = 37
      return str(zonenum)+zonehem
docs: Determine UTM Zone for input geometry