k tomu dochází z důvodu rozdílu mezi geografickým datovým typem a geometrickým datovým typem.
Nejlépe vysvětleno na příkladu.
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)
Pokud to spustíte přímo v SQL Server Management Studio, dostanete 221151.479533501 v prvním výsledku a 2 ve druhém.
V zásadě je to proto, že v typu geografických dat je jednotka zvolena podle dodaného SRID. Ve vašem případě je 4326 v metrech. Ptáte se tedy na vzdálenost v metrech mezi souřadnicemi (délka:7; šířka:1) a (délka:7; šířka:3). Vrátí se asi 221 km.
Při použití typu geometrie (druhý příklad) se jedná o rovinnou projekci, kde vzdálenost funguje tak, jak byste očekávali, takže vrací 2.
Pokud jde o váš prostorový kód NH, zdá se být v pořádku. Stačí zadat parametr maxDistance v metrech a měli byste být v pořádku.