I have been trying to georeference an image I downloaded from Google API. Here is how I approached it after many unsuccessful attempts:
- I calculated the coordinates of the corners using this code.
- I added the transforms using the bounds coordinates and the CRS value. I used the CRS value suggested in this post for Google Maps images.
def georefrence(input_path, output_path):
dataset = rasterio.open(input_path)
bands = [1]
data = dataset.read(bands)
transform = rasterio.transform.from_bounds(xmax, ymax,xmin, ymin, data.shape[1], data.shape[2])
crs = rasterio.crs.CRS({"init": "epsg:3857"})
with rasterio.open(output_path, 'w', driver='GTiff',
width=data.shape[1], height=data.shape[2],
count=3, dtype=data.dtype, nodata=0,
transform=transform, crs=crs) as dst:
dst.write(data, indexes=bands)
- When I load the image in QGIS, I see pick a coordinate, copy it, and paste it in Google map. It doesn't map to the exact location but is pretty close; however, when I try to display it in OSM layer map, it appears in way off.
Is this a projection issue or something else and how can I resolve this?
UPDATE
So here is a sample image that I georeferenced https://drive.google.com/file/d/1GVgHrv6AJ28X8GSsF9sSaIVQcjldBsSR/view?usp=sharing
I figured that when I add the GeoTIFF version as a raster layer to QGIS on the OSM base map, it shows in the exact opposite location up (see the image below).
How can I mirror this? Is it the projection or something else?
UPDATE 2
Another thing that I noticed is that when I paste these coordinates 30.0768254,31.6577946 in Google Maps, it points out the correct location, but when I paste it into Google Maps base map in QGIS, I go to the Atlantic Ocean.
Worth to note that I have already sat the CRS to EPSG: 3857 for the base map also (the same CRS of the image)