ThinkGeo.com    |     Documentation    |     Premium Support

Raster (jpg) not rendering correctly

Hi, I’ve got a raster file (.jpg) underneath a shape file. Both the shape file and the raster file have different initial projections, so I’ve re-projected both to the Google Maps Projection. The problem I’m having is that MapSuite is having a hard time displaying the raster file - the tiles seems to wobble around a bit before settling into their resting places, and as you can see from the attached image, I’m left with gaps between the tiles, and each tile seems to be ever so slightly misaligned. In fact, its pretty slow to display this, with some tiles taking a few seconds to appear, while others have already rendered.





I’ve tried setting to TileType to SingleTile mode, and setting Drawing Quality to HighSpeed. I must say I was surprised with the first setting - I would have thought it would draw the whole image at once - but obviously, there are still sub tiles being drawn.



I tried loading this into the MapSuite Editor, and it loaded fine. but I wasn’t re-projecting there.



How can I fix this as I have a demo to give next week!






Here is a link to the raster image file. jpg_raster.zip



This is the code that I was using to re-project:



GdiPlusRasterLayer raster = SourceGdiPlusRasterLayer;
String projectionfilename = GetProjectionFileName(raster.PathFilename);
if (File.Exists(projectionfilename))
{
   SetProjectionFromProjectionFile(raster, projectionfilename);
}

.
.
.

private string GetProjectionFileName(String filename)
{
     return String.Format(@"{0}{1}.prj", Path.GetDirectoryName(filename),Path.GetFileNameWithoutExtension(filename));
}

private void SetProjectionFromProjectionFile(GdiPlusRasterLayer raster, String projectionfilename)
{
      raster.Open();
      string prjFileText = System.IO.File.ReadAllText(projectionfilename); //get the text of the .prj file.
      Proj4Projection projection = new Proj4Projection();
      projection.InternalProjectionParametersString = Proj4Projection.ConvertPrjToProj4(prjFileText);
      projection.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString();
      raster.ImageSource.Projection = projection;
      try
      {
          projection.Open();
          regionExtent = raster.GetBoundingBox();
      }
      finally
      {
          if (projection.IsOpen)
              projection.Close();
      }
}





I’ve now solved this - I was mistaken in that I had thought I had set TileType to SingleTile - it was actually still set to MultiTile - so these errors that I am seeing are actually with the multithreading option turned on. 



So the solution to showing Rasters correctly is to set TileType to SingleTile.

Unfortunately, single-tile model gives pretty poor performance, while multi-tile mode provides acceptable performance. I tried using a tile-cache in single tile mode - which I think helped a bit - but again the lines started appearing, although different to before (see screenshot).





I also wrote a little test program comparing single-tile mode and multi-tile mode, and yes, the lines were there in multi-tile mode. Do you have any suggestions of how to fix this?

I’ve played with this further - it seems that if I don’t reproject the raster - it displays correctly in Multi-tile mode- so there must be some loss of precision in the reprojection. The reprojection also really hurts performance as well. 



Any suggestions?

Hi David, 



Thanks for your post and very detailed information, we have fixed this, would you please get the latest version 7.0.30.0 and try it again(it is still in build, will be available in hours)? 



if you have any more question , please feel free to let us know. 



Best Regards 



Summer

Thanks for the quick turn around on this. I will try this out very soon.



regards

David

Hi David, 
  
 Thanks for your trying and hope it could be helpful. 
  
 if you have any more question , please feel free to let us know. 
  
 Best Regards 
  
 Summer

Hi Summer, unfortunately, this still doesn’t seem to be working. I have downloaded WpfDesktopEditionFull7.0.0.33DllPackage.zip and am still experiencing the same problems. I have checked that the correct DLL’s have copied across, and have cleared my tile cache. On a positive note - it doesn’t seem to be wobbling around so much!! (seems to settle on its tile-position quickly).







Here is the result…







Any ideas?

cheers

David


Hi David,  
  
 The reason 7.0.0.33 didn’ work is that the bug is fixed in development build in 7.0.33.0, it didn’t get synchoronized to release build(7.0.0.x), but now, even the development build has to roll back the bugfix, because it has caused some problem on other raster layers, now we need to figure out another way to fix it, and this might cause a little bit more time, would you please wait a little while before we fix it? anything new will be updated immediately. 
  
 Best Regards 
  
 Summer

Hi David, 



Thanks for your waiting, we have fixed it, would you please get the latest dlls(7.0.0.53 or 7.0.53.0 still in build will be availabe in hours) and try it again? 



if you have any more question , please feel free to let us know. 



Best Regards 



Summer