ThinkGeo.com    |     Documentation    |     Premium Support

Display data country wise from a table stored in sql database

My requirement is very simple. All I want to achieve is to display data country wise from a table stored in sql server database on a world map. 


 


 


For e.g.  the format of the table is 


 


country        Population (in billion)


India            6


Chine           7


USA              4


Canada       2


these countries should get highlighted along with the data in a world map. Please suggest me as I am novice when it comes to using maps.



Lokesh,


 
Thank you for the post you can certainly achieve your requirements with Map Suite.
 
To accomplish your requirements you will need to join your custom data from the SQL Server database to a layer of the map at runtime.  In your case the layer on the map that you will want to join to will be the Country02.shp file, this shapefile contains all the country boundaries of the world.  
 
From a coding perspective it will be pretty straightrforward to wire up, Map Suite provides an Event on the FeatureSource called CustomColumFetch that you can implement that raises an event for each feature inside the layer (In your case each feature will be each an individual country).  This allows you to see what country it is and add your custom data to that feature.  Once the feature has your custom data it's just like any other data in the layer and you can labeling or rendering based off of it's value.  
 
Luckily we have a How Do I sample that shows how to use this event and to load in custom data.   The sample has all the source code to help get you started.  You can check out this code by loading the samples that were installed with the evaluation edition or by going to websamples.thinkgeo.com.
 
The sample you will want to look at is under the Feature Layers section and it's called "Using Custom Data".
 
Please let us know if you have any questions, we are here to help.
 
Thanks

 Lokesh,

 


Thanks Batman's detail information, I also has some additional information might give you some help.


 


According to your description, I suggest you refer to sample "Highlight a Feature While Hovering" and "Load a MSSQL2008FeatureLayer" in our “HowDoISamples”. I think you can do some research on “HowDoISamples”. Then you will archive your requirement easily.


 


Let me know if you have any questions.


 


Thanks,


James




Hi,


 


         First thankyou Batman and James for replying so early and so elaborately. 


 


      I have just read the replies. 


 


     Batman: I tried implemented as you suggested. However, I am getting an error message:


The type or namespace name 'customcolumnfetcheventargs' could not be found (are you missing a using directive or an assembly reference?)


on line:


worldLayer.FeatureSource.CustomColumnFetch += new EventHandler<customcolumnfetcheventargs>(FeatureSource_CustomColumnFetch);  


   And James can you please tell me link on which i can find as to 'how to add mssql data layer'


 


Thanks


Lokesh


 


 


 



Hey i figured it out …Thanks again…batman can you suggest any tutorial for me, from where i can get the basic understanding of implementing maps in asp.net

Hi,


 


Can you tell me how to obtain country name. Because i only thing that I can fetch is the country id, is there a table in which country id and name is written?


 


 


 


Thanks,


Lokesh



Lokesh,


 
Congratulations on your success!
 
You can get basic knowledge about MapSuite from the following URL.
wiki.thinkgeo.com/wiki/Map_Suite_Web_Edition_Quick_Start_Guide
wiki.thinkgeo.com/wiki/Map_Suite_Web_Edition
 
How to obtain country name? Sorry, I didn’t get your intent. Could you please give us a detailed explanation?  Such as, What’s the data source? What do you get country name for? So we can help you better.
 
Thanks,
James

Hi James,


 


 


How are you doing?...I guess quite busy in replying to questions...:-) ...anyways I wanted to ask that the event you told me i.e. FeatureSource_CustomColumnFetch gives you info reagrding the country id and not the country name (e.ID) ...However I wanted to know the country name as well...But dont bother....i figured it out.....now my question is can i set the background color of any country using this FeatureSource_CustomColumnFetch event based on some condition?


Let say we have certain countries in the sql table:-


Country      Revenue (in million dollars)


US                 10


India              20


China            0


Japan           10


 


 


and we want to display all the countries with revenue greater than 10. So the question is how to set the background color of these countries so that they can be displayed accordingly.


 


I did go through your sql querry example however it does not full fill the criteria as i guess it is only showed to apply sql query on pre defined columns that are present in the worldlayer.


I guess it would not consume much of  your time....:-)


 


Thanks


Lokesh


 


 


 


 


 


 



 


Lokesh,
 
Everything is fine. Thanks for asking. 
 
Your requirement is not complicated. Firstly, you can use sql query to get all the name of countries that satisfy the condition. Then you can use ValueStyle to display the countries accordingly.
 
The specific usage of ValueStyle is in the “Styles” - “Get a group of color in the same quality family” of “HowDoISamples”. Reading more samples will help you finish your web application better.
 
Thanks,
James

Hi James,


 


 


It worked bro! Thanks...James If I were to buy this software how much will it cost?


 


 


Thanks,


Lokesh Sharma



Lokesh, 
  
   Below is a link to our online store where you can see all the pricing.  I also included a link to the ‘contact us’ page so you can get in touch with a sales representative that can help you. 
  
 Online Store: 
 onlinestore.thinkgeo.com/OnlineStore/Order?onlinestoreid=B17EF9E4-C118-4246-8E80-39B6E49F4AB6 
  
 Contact Us: 
 gis.thinkgeo.com/Contact/tabid/147/Default.aspx 
  
 Thanks, 
  
 David

Hi,


 


 


Thanks David....I have 1 more technical question and that is how can i stretch the map and show it on entire web page?



 


Lokesh,
 
That’s a frequent question.
 
Firstly, set width and height of map to 100%, like the following code.
 
<cc1:Map ID="Map1" runat="server" Width="100%" Height="100%">
</cc1:Map>
 
Then,remove “DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">” from your .aspx page.
 
Thanks,
James

 Thank you so much James, it worked However can you suggested something so that whole world map apppears on the entire page width or boundries....i think we would have to adjust zoom level....Wanted your confirmation.


 


Thanks and enjoy in between your work by taking deserving breaks


 


 


Lokesh



Lekesh,


You probably need to calculate by yourself to get a suitable extent fit the entire page, for example, you want to show whole world map that the extent is (-180,90,180,-90) and map's size is 1075*562 in pixel, the sample code is below:


                RectangleShape worldExtent = new RectangleShape(-180, 90, 180, -90);
                double resolution = Math.Min(worldExtent.Width / 1075, worldExtent.Height / 562);
                PointShape centerPoint = worldExtent.GetCenterPoint();
                double minX = centerPoint.X - 1075 * resolution / 2;
                double maxY = centerPoint.Y + 562 * resolution / 2;
                double maxX = centerPoint.X + 1075 * resolution / 2;
                double minY = centerPoint.Y - 562 * resolution / 2;
                Map1.CurrentExtent = new RectangleShape(minX, maxY, maxX, minY);

Thanks,


James



James,


 


Thanks a lot. It worked....



Lokesh, 
  
 You’re welcome. I am glad it’s working with you.