ThinkGeo.com    |     Documentation    |     Premium Support

Merging a shape file and database records into one layer

 


Hi there.
 
 
I am thinking of creating a layer for land parcels in my WMS application. In my shape file, each parcel has a unique id and this id was entered into MYSQL database along side other attribute data regarding each specific parcel. In the WMS application, how can I create a layer from the shape file and then merge it with the records from MYSQL database that contain attributes of each parcel and use them for labeling? 
 
Best Regards,
Vincent

Hi, Vincent


I suggest you implement this requirement using InMemoryFeatureLayer. With it and you can bind label of feature to custom data from any other data sources, such as MSSQL SERVER, MySQL, or Oracle, even XML data source. I made a simple sample for you about how to use it, please see it for full detail in the attached code.
Another alternate solution is CustomColumnFetch event for ShapeFileFeatureSource, and it help you add your own data to a shapefile feature layer in the event handler. If you don’t familiar with it, please refer to the “AddMyOwnCustomDataToAFeatureLayer” sample in the WebEdition installed samples which you can find its source code at “Samples\FeatureLayers\AddMyOwnCustomDataToAFeatureLayer.aspx”.
If you have any additional questions, please let us know.
Thanks,
Khalil

CreateInMemoryFeatureLayerWithCustomData.txt (1.67 KB)

Hi Khalil 
  
 Thank you very much indeed for your answers.  
  
 I further have one problem with CustomColumnFetch event handler. It does not fire at all when the shape file is fetched. I tried to put a break point to your sample code as well as mine and non of them it is firing. 
  
 Another problem I am having is plugin and WMS service of my own I have created following instruction from your quick start guide. When I connect to my service from a desktop application it compiles well but insteady of displaying a map it displays watermarks saying ‘WMS Server Exception see Server Trace’. I have just failed to establish where things go wrong as everything is compiling successifully. 
  
 Could you please help me here. 
  
 Best Regards, 
 Vincent

Hi, Vincent


Sorry for so late to reply your post. I have replied it in your another thread. Please get full detail throught the link below:
gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/38/aft/8070/afv/topic/Default.aspx#19741
Thanks,
Khalil

Hi Khalil


I am sorry to take you back. In my first question of this thread which says "I am thinking of creating a layer for land parcels in my WMS application. In my shape file, each parcel has a unique id and this id was entered into MYSQL database along side other attribute data regarding each specific parcel. In the WMS application, how can I create a layer from the shape file and then merge it with the records from MYSQL database that contain attributes of each parcel and use them for labeling? ", You gave me two alternatives one being InMemoryFeaturelayer and you gave me a sample code which is attached to one of your posts in this thread.


I am now failing to figure out how to get my shape file loaded to this InMemoryFeatureLayer. In other words I am failing to figure out how can I enter my shape file to your sample code so that the result retains georeference of my shape file just like any other ShapeFileFeatureLayer does. Can you help me please?


Best Regards,


Vincent



Hi, Vincent


Thanks for your information about this post.
 
I am wondering that why don’t you choose the other solution using the CustomColumnFetch event of FeatureSource, and I think it’s the better solution for your scenarino.
 
Anyway, if you need to load all the features of Shape files into InMemoryFeatureLayer, first off you need to set the right map unit and current extent, and get the features that you want and then add them into InMemoryFeatureLayer. If you don’t familiar with how to query feature layers and please refer to the “GetAllTheFeatures” sample in the QueryingFeatureLayers folder of our installed samples.  In this way, just the same with the sample code I have posted in the last reply, and you need to add text column to every feature that you want to label and its value comes from MYSQL.  
 
If you still have any questions, please let us know.
 
Thanks,
 
Khalil

Hi Khalil


Thank you for the reply.


Basically what I want to achieve with my land parcel at the end of the day, is to label the parcels with parcel number which comes from my custom database while differentiating parcels with outstanding land rent from the others by applying diffrent area styles. So to achieve this, I am thinking of how to add two custom culumns to the feature layer, whereby one column (ParcelNumber) will be used for labelling and the other column (RentBalance) will be used in the class break function to set different area styles. In fact I tried to figure out how to implement this using customnColumnFetch event without success and that is why I am trying using InMemoryFeatureLayer and up to this moment I have not succeeded.


Can you please give me an idea or a sample code of how to achieve my goal.


Best Regards,


Vincent



Hi, Vincent,


Thanks for your clarification about your scenario.
 
I’m sure that you can get it worked by using CustomColumnFetch event. Please refer to the attached sample code which is based on the “DrawThematicFeatures” sample. You can see that I set the TextStyle on all the ClassBreak using “ParcelNumber” custom column in order to draw labels on every one parcel, and set “RentBalance” as the break column name which will be used for the break values. The left thing is to fetch your own custom data from the database in the event hander for CustomColumnFetch event and then write to the ColumnValue property of CustomColumnFetchEventArgs.
 
The most important thing is that how to correlate the features in the shape files with the record of your database? I guess the feature id is the better way, and you can set the primary key of the table which stores the attribute data regarding each land parcel as the feature id, and it will be more convenient to query.
 
Please let us know if you have any questions about it.
 
Thanks,
 
Khalil

DrawThematicFeatures.zip (2.7 KB)