ThinkGeo.com    |     Documentation    |     Premium Support

Densify a polyline

I have a  long length polyline i.e. 400m that has 2 vertices start and end therefore being a straight line (from a shape file) - is it possible to split the line into smaller segments to i.e. 10m apart.  I need to find the nearest vertices on the line to another feature ( a point on the map) for an accurate shortest straight line distance to the polyline  - if so, do you have any example code?


 


EDIT.. In ESRI (ARC) they have a function : Geometry.Geodesic.Densify


 


 


Thanks


Richard



Hello Richard, 
  
 I’m not quite understand your thought, is there any other reason you need split the Line to smaller segments? If the only thing you want to do is get the nearest line, we have exist API can do this job. 
  
             LineShape line = new LineShape(); 
             PointShape point = new PointShape(); 
             point.GetShortestLineTo(line, GeographyUnit.Meter); 
  
 Let me know if I misunderstanding something. 
  
 Regards, 
  
 Gary

Hi Gary


 


This will return the nearest line but the line could be 400m long with only 2 vertices i.e. start end.  For a walking algorithm, we need to work out the exact distance to nearest point on the line (which could be in the middle) - Having split the line into smaller chunks ie.e smaller lines will then get me the closest line/segment to measure.  I would then need the vertices as a point to measure the distance and jump onto the line at the nearest crossing


Please refer to tsusiatsoftware.net/jts/javadoc/com/vividsolutions/jts/densify/Densifier.html  - 


 


Thanks


Richard



Richard,


I tested with the code below about GetShortestLine and it returned the correct result:


 


PointShape point = new PointShape(“POINT(0 0)”);


LineShape line = new LIneShape(“LINESTRING(-100 100, 100 100)”);


 MultilineShape result = point.GetShortestLineTo(line, GeographyUnit.Meter);


 And the result is “LINESTRING(0 0, 0 100)”


 


Is this something you are looking for? If not please let us know your scenario.


Ben



I also tested this and yes it did give the correct result,  - purple circle being the target and green dot snapping to the line - many thanks



 


 



Hello Richard, 
  
 You are welcome, please feel free to let us know your problem. 
  
 Regards, 
  
 Gary