ThinkGeo.com    |     Documentation    |     Premium Support

Converting Map Lat Longs

We are saving area restrictions as below so users can only select points in a restricted area. This is what the point values look like: 


POLYGON((-10401925.316039 5674124.7595165,-10444042.44707 5632007.6284856,-10423899.471359 5570968.3081509,-10333561.277264 5561812.4101007,-10299379.257876 5597825.6090981,-10322574.199604 5663748.0750595,-10401925.316039 5674124.7595165))


Is there a way to convert these values to Decimal Degrees? We need to do a spatial query to an ARCServer.


 


Thanks


 



Hello Jeff, 



Thanks for your post, yes you can use proj4projection to made this. please see the code below: 




 Proj4Projection proj4 = new Proj4Projection();
            proj4.InternalProjectionParametersString = Proj4Projection.GetDecimalDegreesParametersString();
            proj4.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString();
            proj4.ConvertToInternal(wkt)



And you need use your projection as the externalprojection. 



Any questions please let me know. 



Regards, 



Gary



Thanks Gary, 
  
 I used the code you mentioned as below (converted to vb.net), but anything I call to output such as 
 GetBoundingBox or GetWellKnowText still returns points in an unusable format, not decimal degrees 
  
 Dim proj4 As New Proj4Projection 
             Dim MyBaseShape As ThinkGeo.MapSuite.Core.BaseShape = ThisFeature.GetShape 
             proj4.InternalProjectionParametersString = Proj4Projection.GetDecimalDegreesParametersString 
             proj4.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString 
             proj4.Open()        'NEEDED TO ADD THIS LINE TO CALL THE NEXT 
             proj4.ConvertToInternalProjection(MyBaseShape) 
  
 What am I doing wrong or what do I need to do differently?

Update on previous post. I am using open street to select an area, it appears that Open Street uses these alternate numbering scheme for x and y if that helps at all. I also know that MsSql2008FealtureLayer.QueryTools will accept these and do geometric queries successfully to SQL. 
  


Jeff, 
  
 I take over this issue and I tested the code Gary and you mentioned above, the result is POLYGON((-93.4420849566762 45.3331642259208,-93.8204295819603 45.0665697648231,-93.6394821524719 44.6779839276563,-92.827960347519 44.6194697602057,-92.5208980429358 44.8492849385599,-92.7292617496211 45.2675974991315,-93.4420849566762 45.3331642259208)) , I think it’s decimal degree unit. Below is my test code: 
         Dim wkt = “POLYGON((-10401925.316039 5674124.7595165,-10444042.44707 5632007.6284856,-10423899.471359 5570968.3081509,-10333561.277264 5561812.4101007,-10299379.257876 5597825.6090981,-10322574.199604 5663748.0750595,-10401925.316039 5674124.7595165))” 
         Dim proj4 As New Proj4Projection 
         Dim MyBaseShape As ThinkGeo.MapSuite.Core.BaseShape = BaseShape.CreateShapeFromWellKnownData(wkt) 
         proj4.InternalProjectionParametersString = Proj4Projection.GetDecimalDegreesParametersString 
         proj4.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString 
         proj4.Open() 'NEEDED TO ADD THIS LINE TO CALL THE NEXT  
         Dim result As BaseShape = proj4.ConvertToInternalProjection(MyBaseShape) 
         MessageBox.Show(result.GetWellKnownText()) 
  
 Thanks, 
 James 


The issue was that this particular map is and can only be in METERS, if I use a map that is in decimal degrees then I don’t need to convert it at all, but now I am glad to have the code to convert it if need be. Thanks all

You’re welcome Jeff. Let me know if you have more questions.