това се случва поради разликата между географския тип данни и геометричния тип данни.
Най-добре обяснено с пример.
declare @point1 as geography
declare @point2 as geography
set @point1 = geography::STGeomFromText('POINT (7 1)', 4326)
set @point2 = geography::STGeomFromText('POINT (7 3)', 4326)
select @point1.STDistance(@point2)
declare @point3 as geometry
declare @point4 as geometry
set @point3 = geometry::STGeomFromText('POINT (7 1)', 4326)
set @point4 = geometry::STGeomFromText('POINT (7 3)', 4326)
select @point3.STDistance(@point4)
Ако стартирате това директно в SQL Server Management Studio, получавате 221151.479533501 в първия резултат и 2 във втория.
Това основно е така, защото в географския тип данни единицата се избира според предоставения SRID. Във вашия случай 4326 е в метри. И така, вие питате за разстоянието в метри между координатите (long:7; lat:1) и (lon:7; lat:3). Връща се на около 221 км.
Когато използвате типа геометрия (втори пример), това е равнинна проекция, където разстоянието работи както бихте очаквали, като по този начин връща 2.
Що се отнася до вашия NH пространствен код, изглежда добре. Просто въведете параметъра maxDistance в метри и трябва да сте добре.