Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am trying to convert my "Lambert Conformal Conic map with 2 standard parallels" to the basic/standard WGS84 projection that Google Maps use.

I have 30 of these maps which I need to convert. They are all in .tiff format with a corresponding .tfw file each.

What my final goal is:

  1. Convert Maps to WGS84
  2. Merge all 30 maps
  3. Change them to tiles

For now I am only struggling with the conversion of projection.

Does anybody now of any ways/programs/techniques or anything (preferably free) to accomplish this?

I have heard/read about GDAL etc. but I do run Win Vista, not MAC.

share|improve this question

3 Answers 3

GDAL runs on most platforms, including Windows, so I'm not sure where you get the idea it only runs on Macs! The easiest way of getting installed on your machine is to download OSGeo4W, which is an installer for all manner of desktop GIS goodness, from which you can just choose GDAL/OGR.

Once you've done that, you can use the command line tool gdalwarp to reproject the images:

gdalwarp -t_srs EPSG:3857 -s_srs EPSG:9802 -r cubic -co "TILED=YES" input1.tif input2.tif ... input30.tif output.tif

Where EPSG:3857 is shorthand for the "Web Mercator" projection (thanks Sean!), and EPSG:9802 is the shorthand for the Lambert projection. You may need to use a different sampling algorithm instead of cubic, it depends on the sort of data you've got, and how it looks when it is warped. Specifying all the source images in one command line will avoid unsightly seams between the original images. the "TILED=YES" is sensible for almost any geo rasters to speed up access and display. See here for explanation of the parameters.

To split the image into tiles, you can use gdal2tiles.py (which you'll need to install Python, but that can be done with the OSGeo4W installer).


Addendum

It ocurred to me last night that you would need to specify the two lines of parallel and the central meridian of your source images on the command line, just using EPSG:9802 won't cut the mustard if that metadata isn't already in the source images. If that is the case, you'll need to change the -s_srs parameter to something like this:

-s_srs "+proj=lcc +lon_0=110 +lat_1=25 +lat_2=47 +datum=WGS84"

Where +lon_0 is the longitude of the central meridian, +lat_1 is the upper standard parallel, and +lat_2 is the lower standard parallel. If the images you're warping are of the same series, these values are likely to be the same for each image, but it is worth checking them first.

If you're unsure about how these projections work, you could do worse than looking here for an explanation.

share|improve this answer
2  
I think by "basic/standard WGS84 projection that Google Maps use" he means EPSG:3857 not EPSG:4326. –  Sean Aug 1 '11 at 18:45
    
Sweeeeet! Thank you. Will try it ASAP. Just that cubic part confuses me. What/why would i need to use a different algorithm than cubic? I will just try cubic and see what happens for now. thanks! –  LouwHopley Aug 1 '11 at 18:47
    
I think you need to do a more complete definition of the source coordinate reference system like the projection parameters, the datum/geographic coordinate reference system, unit of measure, etc. For the projection, see remotesensing.org/geotiff/proj_list/… –  mkennedy Aug 1 '11 at 20:12
    
@Sean: Ah yes! You're absolutely right; I hadn't noticed that part. –  MerseyViking Aug 2 '11 at 9:01
    
@Nideo: The cubic part is the interpolation algorithm. In general, the lower down the list on the gdalwarp page, the more computationally expensive an algorithm becomes. But it is not a given that your results will be better with a more complex algorithm. So it is often best to start with linear or cubic and then try the others with a smaller sample and see what wort of results you get. At this point it is as much about aesthetics as anything else. –  MerseyViking Aug 2 '11 at 9:05

I like MerseyViking's answer but would suggest a slightly different workflow, still using FWTools though.

  1. Define the LCC projection:
    • if nonstandard, define projection by adding definition in epsg file of proj4. See this article for an example.
  2. Merge all 30 images into a virtual mosaic:
    • most easily done in GDAL using a VRT
  3. Create tiles in (Google) Spherical Mercator projection directly from LCC mosaic.
    • use MapServer for this

The reason for creating the LCC mosaic BEFORE you reproject and create tiles is that if any of your images lie adjacent to one another while in the LCC projection, there is a good chance that you will have gaps between them if you reproject them individually and then mosaic them together.

share|improve this answer
    
The maps currently have white borders with the key on etc. But also the map region on each overlaps (I.e. you can see a landmark on the edge on both maps) Will this white space be removed when merged? –  LouwHopley Aug 3 '11 at 5:16
2  
There are some options in GDAL for specifying "collar" colors as nodata values, but my suggestion would be to trim each image before you mosaic them together. Say you had an image that was 2500 x 4000 pixels, with a 100 pixel collar around it. You could trim it in GDAL (After specifying the LCC projection) with the following command: "gdal_translate -srcwin 100 100 2300 3800". This will crop the image starting at (100,100) and leave 2300 pixels in X axis and 3800 in Y. –  lagerratrobe Aug 7 '11 at 13:51
1  
instead of editing the epsg database, which will get overwritten on updates etc., save the projection info in a text file and call from command line with gdalwarp -s_srs my-custom-lcc.prj ... –  matt wilkie Sep 1 '11 at 18:14

GDAL is definitely the way to go, on windows FWTools is what you need, see http://fwtools.maptools.org/ for an installer.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.