ThinkGeo.com    |     Documentation    |     Premium Support

Rotating and reprojecting revisited

Good morning,


A few years ago we had a discussion about this topic and I don't feel it was ever resolved.  It has now come up again internally and I've been asked to take it on again in case something has changed between version 4.5 and 6.0 that I am unaware of.


At times we come across the need to be able to both reproject and rotate layers.  But as far as I can tell, we can't do both of them at the same time. 


(1) We are using MsSql2008FeatureLayer to display data which is currently stored in SRID 3395.  This can't easily be changed without impacting hundreds of installations.  The goal would be to reproject this to the projection used by Bing, OSM, Google, etc.


(2) In the layer's FeatureSource, there is a place for a Projection.  It's easy enough to create a Managed4ProjProjection to convert on the fly from 3395 to Google, etc.  I did this yesterday and placed our SQL data on top of OpenStreetMap and it worked quite well...this was something that didn't work well in 4.5.  I believe there were accuracy issues with the Proj4 implementation.


(3) In our current application the map rotates.  To do this I place a RotationProjection in the Projection slot of the Feature Source.


(4) The Projection slot is now occupied by the RotationProjectection and thus I cannot add the Managed4ProjProjection to reproject on the fly.


(5) In other words, to both reproject and rotate I need to insert something into the Projection of the FeatureSource, but it's not a collection: it only takes one item. 


(6) I'm just throwing out ideas on what might work to solve this problem: 


  #1: A RotationProjection class that can accept a Managed4ProjProjection


  #2: An MsSql2008FeatureLayer constructor that could be supplied TWO SRIDs or projection strings to trigger on-the-fly reprojection which would leave the Projection slot open for the Rotation.


I certainly understand there might be technical complications in doing either of these.  I am just trying to find out if anything has changed between 4.5 and 6.0 that might let us do this now.


Thoughts?


Thanks,


Allen



 Hi Allen, 


 
Thanks for your post, we created a sample that fit your requirements, could you please get the attachment and have a try?
 
Regards,
 
Gary
 

Post_11162Sample.txt (4.42 KB)

Gary, 



Thanks for the response. I haven't looked at it closely yet or actually run the code, but it appears to me that the individual features are reprojected before they are drawn. That's a clever idea. I hadn't thought of that. 



This raises a question for which you may not have an answer: is this approach practical (or efficient) in a situation where we have MANY layers? Our app has something like 30 or 40 layers and I wonder if doing this is practical, although it may be more or less what's happening under the covers anyway. This is really not the situation for which we would probably use something like this...we are more interested in using OSM/Google/Bing maps and a small number of user data tables from SQL Server. 



Allen



Gary, 
  
 There’s one more thing I need to ask, and it’s really the most important part of this whole experiment.  I am looking at the code and get the idea, but our scenario is to have something like OpenStreetMap, Google, or Bing as the base map source and stack small amounts of our data on top.  I have looked but I don’t see anything in the OpenStreetMap, Google, or Bing layers that would allow this layer to rotate along with our data.  Is that correct or did I miss something?  I have searched the Web and this seems to confirm that the Google API itself does not support rotation, so I am going to guess this can’t be done.  I found a Google forum posting from 2010 which seemed to indicate people wanted this but then a more recent one where it seemed to indicate it still couldn’t be done. 
  
 Thanks, 
 Allen

 Hi Allen,


 One suggestion is to use 30 or 40 layers to give it a test, I think it should be ok because the added work is just to reproject the features before they are drawn.


 If you want to use OSM/Google/Bing maps the best way to rotate them would be to use our WPF edition, attached is how to rotate bingmap in wpf, as you can see the code is very simple, what is more is that you don’t even need to set small amount data projection.


 About Desktop Edition, sorry to say that we don't support bingmap rotation for now. You can vote this enhancement to helpdesk.thinkgeo.com/EnhancementTracker. This captures the enhancement request and provides visibility to the customer letting them know that the enhancement is on a list somewhere and that popularity of the enhancement helps set the priority of when the enhancement would be added to the product. This option doesn't carry any cost for you. 


 Or if you need this function immediately, your account rep can contact you for a professional services. 


 Hope it helps


Gary



RotateBingMapInWPF.txt (1 KB)

Gary, 
  
 Thanks for the comments.  Based on the documentation I didn’t really expect to be able to rotate OSM/Google/Bing but I wanted to get your confirmation; maybe you knew of a practical trick.  Knowing that, there is no immediate need to try the reprojection of a lot of layers either.  Some day I hope our company will develop a new product where I can use WPF as a solution.  As I noted above I found a forum posting from 2010 where people were hoping Google would support rotation and later I found one from March 2013 where they were still asking for it, so if such functionality comes directly from Google it looks like it we shouldn’t get our hopes of it coming any time soon. 
  
 Allen

Allen, 
  
 Sorry for the inconvenience, the 7.0 release is upcoming, so we don’t want some big changes in our code. Additionally we don’t have enough resources now, therefore,we just added the most voted functionalities to our product during the development. Anyways, I have enter this requirements to our internal worklist and hope we can work on it in near future, any workable solution is avaiable, I will update it here.  
  
 Best RegardS, 
 Johnny