ThinkGeo.com    |     Documentation    |     Premium Support

ProjNetExtension how-to?

Hi,


I know that ProjNET is an external module, but haven't you built the wrapper (ProjNetExtension) for it ?


I'm faced with the tasks of creating (point and line) features defined by WGS84 LatLongcoordinates  into a layer that's stored in UTM. I.e. I'm _not_ adding a layer in WGS84 to a map in UTM. 


It would break my current setup if I had to redesign my app, and coordinate conversions should be possible with ProjNET.


Is there an example on how this sort of conversion is achieved with ProjNET ?


Cheers.


 



 Hi,


We have ProjNetExtension what is the wrapper for ProjNet and you can reference it from the "..\..\Developer Reference\Spatial Extension\ProjNet Extension" folder. But I recommend you to use ManagedProj4Projection which is built-in class. So there are 2 ways to convert the coordinates using managed code:


    1. Use ProjNetExtension. Please reference the dlls from the ProjNetExtension folder which I mentioned above. Code is as below:


SridProjection sridProjection = new SridProjection(4326, 900913);
shapeFileFeatureLayer.FeatureSource.Projection = sridProjection;


    2. Use ManagedProj4projection. Code is as below:


ManagedProj4Projection managedProj4 = new ManagedProj4Projection();
managedProj4.InternalProjectionParameters = ManagedProj4Projection.GetEpsgParameters(4326);
managedProj4.ExternalProjectionParameters = ManagedProj4Projection.GetGoogleMapParameter();
shapeFileFeatureLayer.FeatureSource.Projection = managedProj4;


Thanks,


Johnny



Hi Johnny,


I did write : "I.e. I'm _not_ adding a layer in WGS84 to a map in UTM."


So unfortunately your examples are not what I need, as they specifically describe adding layers.


Are there no examples available, for either ProjNetExtension or ManagedProj4Projection, of a simple point-to-point conversion ?


Cheers


Ps! I will have a look on the alternative library, when I get a chance.


 



Hi,


Ok, I get it now. Please refer to the code snippet below:


ManagedProj4Projection managedProj4 = new ManagedProj4Projection();
managedProj4.InternalProjectionParameters=ManagedProj4Projection.GetEpsgParameters(4326);
managedProj4.ExternalProjectionParameters=ManagedProj4Projection.GetGoogleMapParameter();

managedProj4 .Open();
Vertex vertex1 = managedProj4.ConvertToExternalProjection(332000, 4000000);
Vertex vertex2 = managedProj4.ConvertToInternalProjection(118.86490038,36.1301405);


You can use either ConvertToExternalProjection or ConvertToInternalProjection method do do the simple Point-to-point conversion.


If I misunderstand your meaning please let me know.


Thanks,


Johnny







 



Hi Johnny,


Thanks. Finally got around to looking at your suggestion.


Unfortunately, I'm unable to locate the item ManagedProj4Projection anywhere ? So I'm kinda stuck.


Would it be possible to always include full namespace paths in the examples ? Both to speed up my understanding, and to prevent unfortunate misunderstandings.


Or give the required version ? I'm still using 3.1.299.


Cheers.


 



 Lars I.


Sorry for that I didn't describe clearly enough. ManagedProj4Projection is available in the latest version 4.0.0.0 instead of 3.1.299. The full namespace is ThinkGeo.MapSuite.Core.ManagedProj4Projection. Please get the latest DLL Package from the link below:


helpdesk.thinkgeo.com/


Thanks,


Johnny



Hi Johnny, 
  
 I am not able to use ManagedProj4Projection. When I try to create the object, I get the following message. 
  
 This class can only be used between 2010/01/01~2010/06/01 
  
 Can you help? 
  
 Thanks, 
 Dejan

Dejan, 
  
 It has been fixed days before. Could you send an email to support@thinkgeo.com  for a temporary package? I have sent the updated one to them. 
  
 Thanks, 
 Johnny