ThinkGeo.com    |     Documentation    |     Premium Support

Manual WorldFile Creation

 Hi,


we would like to show an image file with its normal resolution without world file.


We have some maps(actually not real maps) which are not required to be georeferenced, (such as indoor drawings of a building)


So we would like our users to use this images(maps) without thinking about world file of the image.


Since georeference of the image is not important for us,


we would like to create a random world file internally by our application as soon as end user selects image file.


There is a similar discussion here;


gis.thinkgeo.com/Support/Dis...fault.aspx


But not answering my question.


You suggested using;


 



WorldFile worldFile = new WorldFile(new RectangleShape(-74, 45, -70, 40), 800, 600);

You said extent(RectangleShape) should be provided by image owner, 
but owner of the image also doesn't know extent.
So how can we create a random extent? 

Many Thanks,

Regards


p.s. I tried with above world file, image is shown with extremely high zoom.
How can we have a world file which shows image at its resolution.

 


 



Hi ABDULKADIR, 
  
 If you want to show 100% resolution for you image on the map, I think you could calculate according to map.CurrentExtent, use your image’s width and height compare the map’s width and height to get the rectangle shape of image. 
  
 Thanks, 
 James

Hi James, 
 I’m using this code; 
  
 
 wpfMap1.MapUnit = GeographyUnit.DecimalDegree;
            GdiPlusRasterLayer imageMapLayer = new GdiPlusRasterLayer(mapToLoad.Path/*, new RectangleShape(-180, 90, 180, -90)*/);
            imageMapLayer.UpperThreshold = double.MaxValue;
            imageMapLayer.LowerThreshold = 0;            
            LayerOverlay overlay = new LayerOverlay();
            overlay.Layers.Add(imageMapLayer);          
            overlay.RenderMode = RenderMode.GdiPlus;            
            overlay.TileType = TileType.SingleTile;
imageMapLayer.Open();
               wpfMap1.CurrentExtent = imageMapLayer.GetBoundingBox();                
                imageMapLayer.Close(); 
 
  
 But no way, image does not fit into  screen. 
 But if I open exactly same picture with MapSuiteExplorer.exe it fits to screen. 
 So I wonder how you implemented current extent on MapSuiteExplorer? 
  
 Many thanks

Hello ABDULKADIR,


When you uses the raster layer, you can check the orient picture resolution then  adjust the map extent base on the orient picture size. Please check attached sample.


Regards,


Gary



RasterLayerExtent.zip (9.16 KB)

 Hello Gary,


thanks for sample.


I'm getting error for line


BaseShape.GeometryLibrary = GeometryLibrary.Managed;


 


Error 1 'ThinkGeo.MapSuite.Core.BaseShape' does not contain a definition for 'GeometryLibrary' D:\RasterLayerExtent\MainWindow.xaml.cs 19 23 WpfApplication1


Anyway I commented out that line and I run it.


I attached two screenshot to better describe what I'm trying to do.
Please see full extent screenshot of map suite exploerer. It fits into screen. (Which is my aim as well)
I also started exactly same image with sample you sent, but it doesn't fit into screen.
 
Hope it is clear now?
 
Regards

 



Your_Example_Full_Extent.png (34.9 KB)
Map_Suite_Explorer_Full_Extent.png (57.6 KB)

ABDULKADIR,


Here I wrote a sample for you and I think this is exactly you were looking for. Please check it. 


Ben



ResterLayerExtent(support10135).zip (9.42 KB)