ThinkGeo.com    |     Documentation    |     Premium Support

Find Overlapping Polygons

Hi ThinkGeo Team,


In my custom database, I have set of records each containing four sets of GPS coordinates forming vertexes for a rectangular polygon. Now I want to do the following from my web application: Select one record from the database and compare it against the remaining records in the database to find out if there exists a single or manys records which when the coordinates are plotted the resulting polygons will overlap with the polygon resulting from the selected record.


Can you please give me a sample code to implement this?


 


Best Regards,


Vincent



Vincent, 



I think you can read all records from database first. I don't know the detail number of your records, but if you need query many times I think add them to map should faster than read them from database each time. 



You will have an InMemoryFeatureLayer for plot all your features. 

You can build your polygons by four coordinates like this: 



Collection<vertex> points = new Collection<vertex>(); 



points.Add(point1); 

points.Add(point2); 

points.Add(point3); 

points.Add(point4); 



RingShape outerRing = new RingShape(points); 

PolygonShape polygon = new PolygonShape(outerRing); 



And did query like this: 



layer.QueryTools.GetFeaturesOverlapping(selectedShape, ReturningColumnsType.AllColumns); 



Wish helpful. 



Regards, 



Don</vertex></vertex>



Hi,


I am having a similar requirement to find if any polygons are overlapping. The polygons are read from a shapefile.


I did not quite understand what you mean by


I think you can read all your records from database first, I don't know your detail number but if you need did many times query I think add them to map at first have better performance than read data from database each time.


Can you explain this please?


Is the forum support team located located overseas or at Texas?



Hi Tarana, 
  
 Thanks for your post, I have changed my words. 
  
 This sentence only for Vincent, because his data comes from database. If you are using shapefile I think you can ignore that. 
  
 Our support team both in overseas and Texas. 
  
 Regards, 
  
 Don

Hi Don


Thank you for the reply. I have tried the code you have given me but can not figure out how I can achieve what I intend.


Let me briefly explain what I want to do. I have a project to monitor and control allocation of land plots. I want before allocating a land plot to someone, take its GPS coordiantes and using MapSuite web edition, verify if the plot has not be allocated to somebody else.


The method I am planning to use is to take the set of GPS coordinates for a plot and store it into my custom database which is already loaded with sets of GPS coordinates for other plots, and then use map suite to do the verification.


Can you further advice me on this and if possible with a sample code?


Best Regards,


Vincent



Hi Vincent, 
  
 Thanks for your detail requirement, I have some questions about it: 
  
 1. The GPS coordinates for someone should be a point, how to make sure the rectangle corresponding with this point? Are you using "containing"? 
  
 2. Are the land plots rectangle saved in some other place and you just add them to your custom database if it allocated to someone? If not I think maybe we should choose intersect but not overlap. 
  
 Regards, 
  
 Don

 


Hi Don
 
Thank you for the reply. The goal is to make sure that no single plot is allocated to more than one person. Basically before allocating a plot to someone, its GPS coordinates alongside other particulars are taken and saved into the custom database. Each plot must have a minimum of 4 sets of GPS coordinates taken (i.e. Vertices) that will be used to draw the resulting polygon. This means that, all plots which are already allocated to people have their GPS coordinates stored in the database. 
 
There is no any plot rectangles stored elsewhere. All plots are represented by points forming their individual vertices. 
 
What I want is to use Mapsuite web edition to pick one set of points for an individual plot and verify if there is another set existing in the database (i.e when the polygons are drawn, they will overlap by at least 50%)
 
Best Regards,
Vincent

Vincent, 
  
 Thanks for your description. Sorry I still have some problems about it. 
  
 1. If we have a plot named P1(with 4 vertexes) and it have been saved in your database (That means it allocated to someone), then we select P1 again, we get new 4 vertexes. Does the new 4 vertexes totally equal the original 4 saved in database? 
  
 2. Why did you say (i.e when the polygons are drawn, they will overlap by at least 50%), does that mean all plots will have overlap or seleced P1 with saved P1 will have more than 50% overlap? 
  
 Sorry ask so many questions, becasue I think my thread 2 should work for your requirement, if that don’t works, I should misunderstand something. 
  
 Regards, 
  
 Don

Hi Do


 
Thank you for the reply. Let me respond to your questions. 
 
Q1. Actually when the set P1 GPS coordinates are taken for the second time, it does not have to be equal to the first set (vertices). This is so because there is a huge area which is now divided into plots and the process to allocate these plots to people is done by different groups of officers at different time without direct communication among them. So if two sets of coordinates overlap by at least 50% or overlap by 100% then we conclude that, the plot is already allocated to someone else.
 
Q2.  “when the polygons are drawn, they will overlap by at least 50%” does not mean all plots will overlap. The goal here is to completely eliminate re-allocation of plots or in others words, to avoid giving a plot to more than one person. We have chosen the percentage of overlapping area to be 50% or above, for us to conclude that the plot is already allocated to someone.
 
 
Best Regards,
Vincent

Vincent, 
  
 Sorry some of our support on vacation so we cannot response everyone so quickly. 
  
 I noticed you open a new post GetFeaturesOverlapping with the same question. (gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/12/aft/9423/afv/topic/Default.aspx
  
 I will reply you there. 
  
 Regards, 
  
 Don