code: def get_gcps(self):
          
          gcps = self.filehandle.gcps
  
          gcp_array = np.array([(p.row, p.col, p.x, p.y, p.z) for p in gcps[0]])
  
          ypoints = np.unique(gcp_array[:, 0])
          xpoints = np.unique(gcp_array[:, 1])
  
          gcp_lons = gcp_array[:, 2].reshape(ypoints.shape[0], xpoints.shape[0])
          gcp_lats = gcp_array[:, 3].reshape(ypoints.shape[0], xpoints.shape[0])
          gcp_alts = gcp_array[:, 4].reshape(ypoints.shape[0], xpoints.shape[0])
  
          return (xpoints, ypoints), (gcp_lons, gcp_lats, gcp_alts), gcps
docs: Read GCP from the GDAL band.
  
          Args:
             band (gdal band): Measurement band which comes with GCP's
             coordinates (tuple): A tuple with longitude and latitude arrays
  
          Returns:
             points (tuple): Pixel and Line indices 1d arrays
             gcp_coords (tuple): longitude and latitude 1d arrays