<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE></TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.6000.16809" name=GENERATOR></META></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=093331101-15032009><FONT face=Arial 
color=#0000ff size=2>Nick,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=093331101-15032009><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=093331101-15032009><FONT face=Arial 
color=#0000ff size=2>Some general tips when suggesting changes.&nbsp; 
</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=093331101-15032009><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=093331101-15032009><FONT face=Arial 
color=#0000ff size=2>1) Add an entry to our bug tracker 
system</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=093331101-15032009><FONT face=Arial 
color=#0000ff size=2>2) If you are providing code -- attach it to the bug 
tracker system, but we would prefer a patch instead of a full 
file.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=093331101-15032009><FONT face=Arial 
color=#0000ff size=2>For windows development, I usually use Tortoise SVN.&nbsp; 
It makes it wicked easy to create a patch and to work against the latest PostGIS 
subversion trunk and branch.&nbsp; Presumably this patch you have is against 
trunk since for branch we only accept minor changes and bug fixes that do not 
introduce new functionality.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=093331101-15032009><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=093331101-15032009><FONT face=Arial 
color=#0000ff size=2>Aside from that -- keep up the good work and welcome to the 
club.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=093331101-15032009><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=093331101-15032009><FONT face=Arial 
color=#0000ff size=2>Thanks,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=093331101-15032009><FONT face=Arial 
color=#0000ff size=2>Regina</FONT></SPAN></DIV><BR>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> 
postgis-devel-bounces@postgis.refractions.net 
[mailto:postgis-devel-bounces@postgis.refractions.net] <B>On Behalf Of 
</B>nicklas.aven@jordogskog.no<BR><B>Sent:</B> Thursday, March 12, 2009 11:12 
AM<BR><B>To:</B> postgis-devel@postgis.refractions.net<BR><B>Subject:</B> 
[postgis-devel] RE: 40% faster st_distance and returningmeasurepoints 
:-)<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV>Hi again</DIV>
<DIV>&nbsp;</DIV>
<DIV>I found that my modification crashed st_dwithin, but this version I think 
will work.</DIV>
<DIV>&nbsp;</DIV>
<DIV>/Nicklas</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>Datum: 2009-03-11 13:46:35<BR>Från: nicklas.aven@jordogskog.no<BR>Till: 
<BR>Ämne: 40% faster st_distance and returning measurepoints :-)<BR><BR></DIV>
<META content="MSHTML 6.00.6000.16809" name=GENERATOR></META>
<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>&nbsp; double d;&nbsp; /*distance*/<BR>&nbsp; POINT2D 
*p1;&nbsp; /*1st measure point*/<BR>&nbsp; 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>&nbsp;</P></BODY></HTML>