[ https://issues.apache.org/jira/browse/SIS-45?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chris A. Mattmann updated SIS-45: --------------------------------- Component/s: distance functions Fix Version/s: 0.3-incubating > Performance improvement of queryByPointRadius > --------------------------------------------- > > Key: SIS-45 > URL: https://issues.apache.org/jira/browse/SIS-45 > Project: Spatial Information Systems > Issue Type: Improvement > Components: distance functions > Reporter: Peter Karich > Assignee: Chris A. Mattmann > Fix For: 0.3-incubating > > > If I didn't make a mistake a search with the normal distance method took > ~2.4s and with this distance method it takes only about 0.7s: > {code} > public static double getHaversineDistance(double fromLat, double fromLon, > double toLat, double toLon) { > double dLat = Math.toRadians(toLat - fromLat); > double dLon = Math.toRadians(toLon - fromLon); > double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) > + Math.cos(Math.toRadians(fromLat)) * > Math.cos(Math.toRadians(toLat)) * Math.sin(dLon / 2) * Math.sin(dLon / 2); > return EARTH_RADIUS * 2 * Math.asin(Math.sqrt(a)); > } > {code} > Also one should think about normalizing the distance before the search so > that one does not need the whole last line which should give further speed > improvements. > I'm still unsure why it takes roughly the same time in my example for 10km, > 20km and 40kmm where at every step a lot more nodes are involved. Normally I > would say the mode nodes - the more comparisons it'll take and the slower it > should get. But it doesn't. Probably I'm measuring wrong? -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira