ThinkGeo.com    |     Documentation    |     Premium Support

How to display latitude and longitude of city

Hello,


I am working on shape files of citylevel like country.Means it contain all the detailed data of city like roads,drainage,buildings in city etc.


I am displaying latitude and longitude of those data.As the latitude and longitude of pune city is 73,20 around..When i try to display latitude and longitude using 'extenthelper' it gives me sceencoordinate in range x=300000.00 and y=200000.00 and so that couldnt be convert into latitude and longitude becouz its range is in between  (x=-180 to 180 and y=90 to -90)..please help me..


 



Hi ashwini,


From your description I understand you have used ExtenderHelper to get the world coordinate. It seems that your map is in a projection with meter unit (for example: 900913), you should use the following code to transform the coordinate:


// For your reference, get a world coordinate
PointShape worldPoint = ExtentHelper.ToWorldCoordinate(winformsMap1.CurrentExtent, new ScreenPointF(88.0f, 100.0f), winformsMap1.Width, winformsMap1.Height);

// Transform world coordinate to coordinate in decimal-degreee
ManagedProj4Projection projection = new ManagedProj4Projection();
projection.InternalProjectionParametersString = ManagedProj4Projection.GetEpsgParametersString(4326);
projection.ExternalProjectionParametersString = ManagedProj4Projection.GetGoogleMapParametersString();
projection.Open();
PointShape decimalDegreePoint = (PointShape)projection.ConvertToInternalProjection(worldPoint);
projection.Close();


Please let us know if you have further questions.


Regards,


Ivan



Hello,


Thank you for reply.


I have used this given code but its giving me error  at 'InternalProjectionParametersString' and 'GetEsriParametersString'.


Basically when i will move mouse on winformmap control after adding layer on it,latitude and longitude should be change with movement of mouse.I am working with Alandi,pune shape file and its lat is  18 and long is 73..but after adding your code its not givening me that values.


plz help me.



Hi ashwini,
 
I have modified the code as below, please check it and have another try.
 
projection.InternalProjectionParametersString = ManagedProj4Projection.GetEpsgParametersString(4326);
 
I don’t know the detailed procedure about your appliation, but I use the following code to test it, it works.
 
private void LoadAnShapeFileFeatureLayer_Load(object sender, EventArgs e)
{
    winformsMap1.MapUnit = GeographyUnit.Meter;
    winformsMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.GeographicColors.ShallowOcean);
    winformsMap1.MouseMove += new MouseEventHandler(winformsMap1_MouseMove);

    ShapeFileFeatureLayer worldLayer = new ShapeFileFeatureLayer(@"…\SampleData\Data\Countries02.shp");
    worldLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
    worldLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, GeoColor.SimpleColors.Green));

    ManagedProj4Projection projection = new ManagedProj4Projection();
    projection.InternalProjectionParametersString = ManagedProj4Projection.GetEpsgParametersString(4326);
    projection.ExternalProjectionParametersString = ManagedProj4Projection.GetGoogleMapParametersString();
    worldLayer.FeatureSource.Projection = projection;

    LayerOverlay staticOverlay = new LayerOverlay();
    staticOverlay.Layers.Add(“WorldLayer”, worldLayer);
    winformsMap1.Overlays.Add(staticOverlay);

    worldLayer.Open();
    winformsMap1.CurrentExtent = worldLayer.GetBoundingBox();
    worldLayer.Close();
    winformsMap1.Refresh();
}

void winformsMap1_MouseMove(object sender, MouseEventArgs e)
{
    PointShape originalShape = ExtentHelper.ToWorldCoordinate(winformsMap1.CurrentExtent, new ScreenPointF(e.X, e.Y), winformsMap1.Width, winformsMap1.Height);
    ManagedProj4Projection projection = new ManagedProj4Projection();
    projection.InternalProjectionParametersString = ManagedProj4Projection.GetEpsgParametersString(4326);
    projection.ExternalProjectionParametersString = ManagedProj4Projection.GetGoogleMapParametersString();
    projection.Open();
    PointShape decimalDegreePoint = (PointShape)projection.ConvertToInternalProjection(originalShape);
    projection.Close();
}

 
Regards,
 
Ivan 

 Hello,


Thank you for reply.


I have used this code but i couldnt get proper answer.


I am getting error at  


          projection.InternalProjectionParametersString = ManagedProj4Projection.GetEpsgParametersString(4326);


            projection.ExternalProjectionParametersString = ManagedProj4Projection.GetGoogleMapParametersString();


Its showing that  'internalProjectionParametersString' ,'ExternalProjectionParametersString'  doesnt found in thinkgeo.mapsuite.core.


plz help.


         



Ashwini, 
  
   Before going any further you need to get the exact projection information about your shapefile. And you should get that information from your data provider. You say that your shapefile is in the geographical area of Pune, India. Based on my experience, there is a chance that your shapefile is in UTM projection and Pune, India is in the zone 43 or 44.  But this is pure speculation from me since I don’t know anything else from your data. You can find the all the projection information in spatial-reference.org/ 
  You need to get that exact projection information from your data provider and we will go from there. Thank you.

 Thank you vry much.


Ya,pune's Utm zone is 43.I am getting UTM coordinate as 382650.1584,2065632.0246.


I have added two attachments.one is without projection and another one is with that.As i am using pune city shape file,when i click on some perticular building polygon,it shows the information regarding that building by retriveing it from .dbf file.that is 'information tool of Thnikgeo's mapexploere sample code'.But when i added next layer as road and i click on same building for getting information of same building then it show error message as 'Decimal Degree Longitude value provided is out of range' and exception 'ArgumentOutOfRangeException'.By that i couldnt get exact information.Please help me.I have attached another file which contain code for information tool when i cilck on building.Basically there is information_icon button.when i click on that its get checked.after that winformMap_MapClick()get call in my provided code.plz help for that.



   



Ashwini,


  It is difficult to narrow down what is wrong in your code with only some code snippets. I don't know how you set up your variables, how the functions are being called, how is your data etc. Can you send us a self contained sample app with your data that we can run and that way we should be able to investigate on something solid. If you don't feel comfortable sending the sample app in this Discussion Forum, you can send it to support@thinkgeo.com


  Also, i suggest you check out the sample World Coordinates in the Code Community. It shows how to display Longitude and Latitude from a map in another projection which is similar to your case. wiki.thinkgeo.com/wiki/Map_Suite_De...oordinates