Note that there are some explanatory texts on larger screens.

plurals
  1. POGet spatial points within radius using NHibernate Spatial
    primarykey
    data
    text
    <p>I'm currently trying to naivly get the k-nearest neighbors of a set of points, given a value k, a coordinate to use as center and a radius serving as the max distance to find points within. I'm using geographical points (SRID 4326) on a MSSQL 2008 database.</p> <p>The neighbors are naivly found ordering the query by the distance to the point and limiting the result. My trouble starts at limiting the points by the given radius. The distances returned by the Distance function are much larger than expected, which I understand to be a caused by the SRID 4326. This is OK as along as it is only used for ordering, but when I have to compare these values to a relative distance, say 200 metres, these large numbers wont do. </p> <p>My question then is: is there a smarter way of limiting the points by a radius using NHibernate Spatial queries, or is there a way to convert this radius into the some meassurement similar to that used by the Distance function? </p> <p>This is my query as it looks now:</p> <pre><code>output = NHibernateSession.GetSession().CreateQuery(@"select p from POI p where NHSP.Distance(p.PointCoord, :coord) &lt;= :maxDistance order by NHSP.Distance(p.PointCoord, :coord)") .SetParameter("coord", coord, NHibernateUtil.Custom(typeof(Wgs84GeographyType))) .SetParameter&lt;double&gt;("maxDistance", radius) .SetMaxResults(k) .Enumerable&lt;POI&gt;(); </code></pre> <p>Just as an example I have these two points: POINT(7 1) POINT(7 3)</p> <p>My expected distance is 2, but the distance calculated by the mssql STDistance function gives 221151.479533501 as a result. I just cant get my mind to make sense about this.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload