dit gebeurt vanwege het verschil tussen het gegevenstype geografie en het gegevenstype geometrie.
Het beste uitgelegd met een voorbeeld.
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)
Als u dit rechtstreeks in SQL Server Management Studio uitvoert, krijgt u 221151.479533501 in het eerste resultaat en 2 in het tweede.
Dit komt in principe omdat in het geografische gegevenstype de eenheid wordt gekozen op basis van de meegeleverde SRID. In uw geval, zijnde 4326, is het in meters. Je vraagt dus om de afstand, in meters, tussen de coördinaten (lon:7; lat:1) en (lon:7; lat:3). Het keert ongeveer 221 km terug.
Bij gebruik van het type geometrie (tweede voorbeeld), is het een vlakke projectie waarbij de afstand werkt zoals je zou verwachten, en dus 2 teruggeeft.
Wat betreft uw NH Spatial-code, lijkt ok. Geef gewoon de maxDistance-parameter in meters op en het zou goed moeten komen.