Dies geschieht aufgrund des Unterschieds zwischen dem Datentyp "Geographie" und dem Datentyp "Geometrie".
Am besten an einem Beispiel erklärt.
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)
Wenn Sie dies direkt in SQL Server Management Studio ausführen, erhalten Sie 221151.479533501 im ersten Ergebnis und 2 im zweiten.
Dies liegt im Grunde daran, dass im Geographie-Datentyp die Einheit gemäß der gelieferten SRID gewählt wird. In Ihrem Fall ist es 4326 in Metern. Sie fragen also nach der Entfernung in Metern zwischen den Koordinaten (lon:7; lat:1) und (lon:7; lat:3). Es gibt etwa 221 km zurück.
Bei Verwendung des Geometrietyps (zweites Beispiel) handelt es sich um eine planare Projektion, bei der der Abstand wie erwartet funktioniert und daher 2 zurückgibt.
In Bezug auf Ihren NH Spatial-Code scheint es in Ordnung zu sein. Geben Sie einfach den maxDistance-Parameter in Metern an und Sie sollten in Ordnung sein.