from osgeo import gdal

def load_gcps_from_points(points_file):
    gcps = []
    with open(points_file, 'r') as f:
        for line in f:
            if line.startswith("#") or line.startswith("mapX"):
                continue
            parts = line.strip().split(",")
            if len(parts) < 4:
                continue
            mapX, mapY, pixelX, pixelY = map(float, parts[:4])
            gcps.append(gdal.GCP(mapX, mapY, 0, pixelX, pixelY))
    return gcps

# Paths
input_image = "mouza_map.jpg"
points_file = "mouza_map.points"
temp_output = "temp_with_gcps.tif"
final_output = "mouza_map_georef.tif"

# Load GCPs and apply
gcps = load_gcps_from_points(points_file)
gdal.Translate(temp_output, input_image, GCPs=gcps)
gdal.Warp(final_output, temp_output, tps=True)