How to use GDAL to create geotiff from tiff and 4 corners latitude and longitude

20,493

Solution 1

You have the right idea in your answer but allow me to expand. You are correct, you'll need to use the gdal_translate tool to set ground control points (gcps) to georeference the image. But the command line argument should go like so:

gdal_translate -of GTiff -a_srs EPSG:4326 -gcp [pixel line easting northing] -gcp [pixel line easting northing] -gcp [pixel line easting northing] sourcefile outpulfile

You don't necessarily have to output to a VRT, VRT's are useful if you want to perform other algorithms to your file, add more datasets to it, eventually output it as a KML - amongst others which you can read up on here ( http://www.gdal.org/gdal_vrttut.html ). But for this purpose setting -of to GTiff is ideal.

-a_srs EPSG:4326

Next, in the spatial reference you are correct it should be referenced to WGS84 the coordinate system used by google earth, however we specify it using EPSG:4326 - this is just the coding scheme the Geomatics Committee has agreed on to identify coordinate systems worldwide ( http://www.epsg.org/ ).

-gcp [pixel line easting northing]

The ground control points, are probably the most trickiest part of the command line argument. The first 2 numbers represent the pixel and line coordinate of your actual image, for instance (0,0) for the top left most corner of your image. The second set of numbers that should follow is the corresponding lat/long coordinates that your image should be referenced to. Now, you'll only need 3 of these -gcps because the 4th one will be determined if your image is a square/rectangle.

sourcefile outputfile

This part should be self-explanatory, just remember they are both *.tif files.

Now, there if one last thing you will need to do to complete your task. You will have to actually project the image to the coordinate system for it to be aligned. This is down using the gdalwarp command ( http://www.gdal.org/gdalwarp.html ).

gdalwarp -t_srs EPSG:4326 sourcefile outputfile

You'll have to specify an -of (output fileformat) if it was supposed to something other than a GeoTiff - but the default format is GTiff so you don't need to specify it.

Solution 2

gdal_translate -of VRT -a_srs WGS84 -a_ullr 55.7254060 37.5516230 55.7248920 37.5569120 source image destination image 

gdal_translate -of VRT -a_srs "spacial reference" -a_ullr "left top lat/long" "right bottom lat/long" source image destination image
Share:
20,493
rowwingman
Author by

rowwingman

Updated on March 14, 2020

Comments

  • rowwingman
    rowwingman about 4 years

    I have an image (map) without geo data in TIFF format.
    I need to get GeoTIFF file from my image. I have latitude and longitude for each corner of my map. How can I add my geo data to my image in Google spatial refence to get geotiff? I know that GDAL can help me with that. Can anyone help me build a command

  • Suvi Vignarajah
    Suvi Vignarajah almost 12 years
    keep in mind, the sourcefile for your gdalwarp is the outputfile you get from the gdal_translate tool
  • rowwingman
    rowwingman almost 12 years
    Thank's very much for explanation. But I don't understand about EPSG:4326 - is this the same as WGS84?
  • Suvi Vignarajah
    Suvi Vignarajah almost 12 years
    yes, they are both the same..let me refer you to this question from the GIS StackExchange gis.stackexchange.com/questions/3334/…
  • rowwingman
    rowwingman almost 12 years
    Why top right corner is (0;0) point of my image?
  • Suvi Vignarajah
    Suvi Vignarajah almost 12 years
    I don't quite understand ur question..can u elaborate?
  • rowwingman
    rowwingman almost 12 years
    I thought it's should be not right but left top corner.
  • Suvi Vignarajah
    Suvi Vignarajah almost 12 years
    my mistake, you're right that should be top left corner..like i said, gcp's are the trickiest part, i've messed up the orders enough and my images always come out distorted - you really have to make sure they match up (direction/position wise)...i updated my answer as well, thanks for the catch
  • rowwingman
    rowwingman almost 12 years
    ok. thank you very much.
  • Mark Williams
    Mark Williams about 9 years
    This worked for me and correctly set the coordinate reference system. An explanation of what the -a_ullr parameter does how it works might be useful for others.