<html>
<head>
        <title></title>
        
<meta content="MSHTML 6.00.6000.16809" name="GENERATOR"></meta>
</head>

<body>
        
<p>Hallo</p>
        
<p>I'm new to this list and have done my first steps in writing c-code. Thanks to the very well-written and readable source-code I think I have succeded over my expectations.</p>
        
<p>What I have done is rewriting quite great parts of measures.c. My goal was to get the points out of st_distance from where the distance was calculated. <br />
                The result was that st_distance worked about 40% faster on my small testmaterial. The points I wanted is also there, but I don't know the best way to output them.</p>
        
<p>The idea I have followed is just to store the shortest distance and it's points in a new structure I have called DISTLINE. <br />
                Then I only do testing if a diastance is closer then the "earlier shortest" in "distance2d_pt_pt" so there is no testing in the looping of the other relateted functions. </p>
        
<p>I think the progress in speed should make it interesting for implementing but someone experienced have to take a serious look at it. <br />
                I also would be greatful if I could get some help with the output of my points. they are included in the structure DISTLINE like </p>
        
<p>typedef struct<br />
                {<br />
                  double d;  /*distance*/<br />
                  POINT2D *p1;  /*1st measure point*/<br />
                  POINT2D *p2; /*2nd measure point*/<br />
                } DISTLINE;</p>
        
<p>and they will be present when the process returns to function:<br />
                lwgeom_mindistance2d_recursive</p>
        
<p>I attach my measure.c, libwgeom.h a small dataset with som roads in Norway and my resulting dll</p>
        
<p>The test I have done to compare speed is just <br />
                select a.vegnummer,b.vegnummer, st_distance(a.the_geom,b.the_geom) as avstand from distancetest a,distancetest b;<br />
                on the attached dataset.<br />
                My result was:</p>
        
<p>original measure.c<br />
                Total query runtime: 3999 ms.<br />
                400 rows retrieved.</p>
        
<p>The new measure.c<br />
                Total query runtime: 2374 ms.<br />
                400 rows retrieved.</p>
        
<div>This increase in speed could be quite important on big "nearest neighbour" calculations.</div>
        
<div>I also mean som function like st_shortestline(geom1,geom2) would be nice and now the points for that line is ready to use.</div>
        
<p>Have a nice day<br />
                from a quite proud beginner</p>
        
<p>Nicklas Avén</p>
        
<p> </p>
</body>
</html>