ThinkGeo.com    |     Documentation    |     Premium Support

Read All Latitude and Longitude From Shapefile

Hi,


       I have Riyadh Shape File, I want all street and POI Latitude and Longitude from Riyadh Shape file. Actually i will get the latitude and longitude of  riyadh street and poi  from riyadh shape file then i will use this latitude and longitude in to google map. Please help me. How to possible to do this?. 


 


Regards


Yakub



 Hello yakub,


 
Thanks for your post, you can use proj4projection to translate the latitude & longitude from map unit decimal degree to meter, then once the map unit and projection fit the google map, it will work well.
 
Please refer this sample: wiki.thinkgeo.com/wiki/Map_S...Google_Map
 
Regards,
 
Gary

Hi Gary, 
  
                 Above example i tried but its not working perfect, It raising Time out error using Google Map Overlay. Please check it. How to add google map overlay in desktop edition. 
 My code given below 
  
 using System; 
 using System.Windows.Forms; 
 using System.Collections.ObjectModel; 
 using ThinkGeo.MapSuite.Core; 
 using ThinkGeo.MapSuite.DesktopEdition; 
  
  
 namespace  ShapefileToGoogleMap 
 { 
     public partial class TestForm : Form 
     { 
         public TestForm() 
         { 
             InitializeComponent(); 
         } 
  
         private void TestForm_Load(object sender, EventArgs e) 
         { 
             //We need to set the map unit to meter because we are using Google Map Spherical Mercator projection. 
             winformsMap1.MapUnit = GeographyUnit.Meter; 
             
             winformsMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.FromArgb(255, 198, 255, 255)); 
  
             //Sets Google Map as the background map. 
             GoogleMapsOverlay googleMapsOverlay = new GoogleMapsOverlay(); 
             winformsMap1.Overlays.Add(googleMapsOverlay); 
  
             //Projection to go from Geodetic (Longitude/Latitude) to Google Map projection (Spherical Mercator). 
             Proj4Projection proj4 = new Proj4Projection(); 
             proj4.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326); //Geodetic projection (Longitude/Latitude). 
             proj4.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString(); 
  
             ShapeFileFeatureLayer schoolShapeLayer = new ShapeFileFeatureLayer(@"C:\Users\y.ismail\Downloads\DesktopEditionSample_ShapefileToGoogleMap_CS_100609\ShapefileToGoogleMap\data\austinschools.shp"); 
             schoolShapeLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.CreateSimplePointStyle(PointSymbolType.Circle, GeoColor.StandardColors.Red,GeoColor.StandardColors.Black, 9); 
             schoolShapeLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.CreateMaskTextStyle("NAME", new GeoFont("Arial", 10, DrawingFontStyles.Bold),  
             new GeoSolidBrush(GeoColor.StandardColors.Black), new AreaStyle(new GeoSolidBrush(GeoColor.StandardColors.LightGoldenrodYellow)), 13, 0); 
             schoolShapeLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 
             //Sets the projection to the shapefile layer. 
             schoolShapeLayer.FeatureSource.Projection = proj4; 
              
             LayerOverlay staticOverlay = new LayerOverlay(); 
             staticOverlay.Layers.Add("SchoolShapeLayer", schoolShapeLayer); 
             
             winformsMap1.Overlays.Add(staticOverlay); 
  
             //Sets the extent of the map as the bounding box of the shapefile layer as projected (Google Map Spherical Mercator). 
             schoolShapeLayer.Open(); 
             winformsMap1.CurrentExtent = schoolShapeLayer.GetBoundingBox(); 
             schoolShapeLayer.Close(); 
  
             winformsMap1.Refresh(); 
         } 
  
        
         private void winformsMap1_MouseMove(object sender, MouseEventArgs e) 
         { 
             //Displays the X and Y in screen coordinates. 
             statusStrip1.Items["toolStripStatusLabelScreen"].Text = "X:" + e.X + " Y:" + e.Y; 
  
             //Gets the PointShape in world coordinates from screen coordinates. 
             PointShape pointShape = ExtentHelper.ToWorldCoordinate(winformsMap1.CurrentExtent, new ScreenPointF(e.X, e.Y), winformsMap1.Width, winformsMap1.Height); 
  
             //Displays world coordinates. 
             statusStrip1.Items["toolStripStatusLabelWorld"].Text = "(world) X:" + Math.Round(pointShape.X, 4) + " Y:" + Math.Round(pointShape.Y, 4); 
         } 
          
         private void btnClose_Click(object sender, EventArgs e) 
         { 
             this.Close(); 
         } 
  
     } 
 } 


Hello yakub, 
  
 Is the time out exception happen every time or some times? Because google has their rule for the free user, as far as I know, it has 1000 times request limited every day, if you just use GoogleMapsOverlay simply, you are using our default free api key which lots of users are using, it’s possible reach the request limited. 
  
 You can use property googleMapsOverlay.ClientId to set your own API premier, you can register it on Google website. 
  
 Regards, 
  
 Gary

Hi Gary,


                 Till now i am not fulfil my requirement. Clearly i am telling, I have shape file, What i want is, i want to take value of latitude and longitude from shape file.


 


For eg:


Current i have RiyadhPOI.shp file is there,


How to get latitude and longitude of Riyadh PoI from RiyadhPOI.shp.


 


Please reply me, its very urgent.



Yakub, 

For code on how to load and display a shapefile within Map Suite Desktop I would recommend reviewing our Load A ShapefileFeatureLayer sample application. You can find this sample application on your local computer at Start button - All Programs - ThinkGeo - Map Suite Desktop - VS2008 Samples or VS 2010 Samples. Run the solution file and you should be able to find this sample application within Visual Studio. Note that if you are loading a shapefile only containing points that you need to setup a DefaultPointStyle for your ShapefileFeatureLayer.



Hi Gary, 
  
              I tried this example of google map (wiki.thinkgeo.com/wiki/Map_S...Google_Map), but its not working on a single time also. Its raising Time out errror occur in winformmap.Refresh(). please tell me how to solve this issue?

Hello yakub, 
  
 Some times time out errror is caused by google map server, because of internet connection, is this happen every time? 
  
 Also, could you please hook the event SendingWebRequest, and check what’s the request url, try to visit it directly from your IE browser. 
  
 Regards, 
  
 Gary