ThinkGeo.com    |     Documentation    |     Premium Support

Custom Scale Bar Formating

 Hi ThinkGeo People!


 


I downloaded the CustomScaleBar.cs from the code examples folder and I am trying to make it work for this transition: 


 


 



 ManagedProj4Projection proj4 = new ManagedProj4Projection();
                    proj4.InternalProjectionParameters = ManagedProj4Projection.GetEpsgParameters(4326);
                    proj4.ExternalProjectionParameters = "+proj=eqc +lat_ts=60 +lon_0=0 +x_0=0 +y_0=0 +a=6371007 +b=6371007 +units=m +no_defs";

 


It displays nothing when running with these inputs for proj4.  Any ideas on how to fix this!    Thanks in advance as always!  Kev



 


Kevin,
 
I downloaded the sample from our wiki wiki.thinkgeo.com/wiki/Map_Suite_Web_Edition_All_Samples#Custom_Scale_Bar
The original code is like
                ManagedProj4Projection proj4 = new ManagedProj4Projection();
                proj4.InternalProjectionParameters = ManagedProj4Projection.GetGoogleMapParameters();    
                proj4.ExternalProjectionParameters = ManagedProj4Projection.GetEpsgParameters(4326);
 
It works properly as the sample want to show us, the displayed map is virtual earth layer, so the coordinate is very large that the original scale bar can not calculate the scale, so we need to create a custom ScaleBarAdornmentLayer to use different way to calculate it, the good thing we can use Projection to help us, so we set internal projection parameters are the same as virtual earth projection which is the same as Google maps’, so we can get it by using GetGoogleMapParameters API, and the external projection we choose 4326 because it’s a wgs84 standard which used to DecimalDegree unit longitude latitude coordinate, that can easy to call GetDistanceTo API to get full bar length. 
 
I don’t know the reason you changed the sample code as below, maybe you misunderstood the intent of this sample. You have to change virtual earth layer to another layer which is in 4326 projection, and you want to show scale bar as that “unknown projection” which you set it to external parameters, you need to modify the code of CustomScaleBar because as I know it uses DecimalDegree as geography unit to get distance to, it only supports Wgs84 projection, not supports the projection with external parameters because it’s not longlat wgs84 projection.
                ManagedProj4Projection proj4 = new ManagedProj4Projection();
                proj4.InternalProjectionParameters = ManagedProj4Projection.GetEpsgParameters(4326);
                proj4.ExternalProjectionParameters = "+proj=eqc +lat_ts=60 +lon_0=0 +x_0=0 +y_0=0 +a=6371007 +b=6371007 +units=m +no_defs";
 
While you update the code to implement it, if you have any questions please let me know.
 
Thanks,
James

Hey James, 
  
 Thanks for your reply. 
  
 I live in Edmonton, Alberta.  Many miles (kilometers) North of the 49 parallel.  My intent on changing the code was to make the scale bar work with my map. 
  
 My map is projected in : 
  
 World_Equidistant_Cylindrical 
 Projection: Equidistant_Cylindrical 
 False_Easting: 0.000000 
 False_Northing: 0.000000 
 Central_Meridian: 0.000000 
 Standard_Parallel_1: 60.000000 
 Linear Unit: Meter 
  
 GCS_WGS_1984 
 Datum: D_WGS_1984 
 
 
  
 I was hoping to change the code so it would provide a scale bar that would be correct for my map.  I am not using 'Virtual Earth", I am using in house shapefiles.   
  
 Is there anyway to do this? 
  
 Thanks, 
 Kevin

 


Kevin,
 
Now, I know your purpose, so that you may set the reversed projection parameters, could you try following code? I don’t have the data like you said, if you still has problem, could you provide the data or just a bounding box to us.
 
ManagedProj4Projection proj4 = newManagedProj4Projection();
                proj4.InternalProjectionParameters = "+proj=eqc +lat_ts=60 +lon_0=0 +x_0=0 +y_0=0 +a=6371007 +b=6371007 +units=m +no_defs";
                proj4.ExternalProjectionParameters = ManagedProj4Projection.GetEpsgParameters(4326);
 
Thanks
James

Hey James, 
  
 Man that was a easy one!  That makes sense you have to project backwards to feed into the code to produce the scale bar correctly!  
  
 Thanks so much :) 
  
 Kev

Kevin,


 You are welcome. I also let you know that we have a Code Community sample on creating a custom scale bar that you might find interesting: wiki.thinkgeo.com/wiki/Map_Suite_De..._Scale_Bar


Thank you.