Re: [Jts-topo-suite-user] robust distance computation
Brought to you by:
dr_jts
From: Tomas Fa <tof...@gm...> - 2012-08-22 12:34:13
|
Great, thanks! /Tomas On Tue, Aug 21, 2012 at 4:32 PM, Martin Davis <mtn...@te...> wrote: > There's a fix for this issue now in SVN. > > When I took a close look at the distanceLineLine method I realized there > was some opportunity for some performance and code clarity improvements, so > those are included as well. > > > On 8/20/2012 1:24 AM, Tomas Fa wrote: > > Hi, > I have encountered a situation when the distance computed between two > polygons is wrong. > My conclusion is that CGAlgorithms.distanceLineLine is to blame. The > documentation also > states that this method is non-robust. The program below reproduces this > case for two lines instead of two polygons. Does JTS provide a robust > version of the distance algorithm? > > Thanks, > Tomas > > WKTReader reader = new WKTReader(); > LineString lineStringA = > (LineString) reader.read("LINESTRING (0.0 0.0, 9.9 1.4)"); > LineString lineStringB = > (LineString) reader.read("LINESTRING (11.88 1.68, 21.78 > 3.08)"); > > double dist = lineStringA.distance(lineStringB); > double distCGAlgorithms = > CGAlgorithms.distanceLineLine(lineStringA.getStartPoint().getCoordinate(), > > lineStringA.getEndPoint().getCoordinate(), > > lineStringB.getStartPoint().getCoordinate(), > > lineStringB.getEndPoint().getCoordinate()); > > System.out.println("dist(CGAlgorithms): " + distCGAlgorithms); > System.out.println("dist(Geometry): " + distCGAlgorithms); > > LineIntersector lineIntersector = new RobustLineIntersector(); > > lineIntersector.computeIntersection(lineStringA.getStartPoint().getCoordinate(), > > lineStringA.getEndPoint().getCoordinate(), > > lineStringB.getStartPoint().getCoordinate(), > > lineStringB.getEndPoint().getCoordinate()); > > assert lineIntersector.getIntersectionNum() == 0; > > double endpointDist1 = > lineStringA.getStartPoint().distance(lineStringB); > double endpointDist2 = > lineStringA.getEndPoint().distance(lineStringB); > double endpointDist3 = > lineStringB.getStartPoint().distance(lineStringA); > double endpointDist4 = > lineStringB.getEndPoint().distance(lineStringA); > > assert dist > 0.0 : "No intersections but distance is " + dist+ > "\n" > +"Point distance 1: " + endpointDist1 + "\n" > +"Point distance 2: " + endpointDist2 + "\n" > +"Point distance 3: " + endpointDist3 + "\n" > +"Point distance 4: " + endpointDist4 + "\n"; > > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > > > > _______________________________________________ > Jts-topo-suite-user mailing lis...@li...https://lists.sourceforge.net/lists/listinfo/jts-topo-suite-user > > > > No virus found in this message. > Checked by AVG - www.avg.com > Version: 2012.0.2196 / Virus Database: 2437/5209 - Release Date: 08/19/12 > > > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Jts-topo-suite-user mailing list > Jts...@li... > https://lists.sourceforge.net/lists/listinfo/jts-topo-suite-user > > |