hal ini terjadi karena adanya perbedaan antara tipe data geografi dan tipe data geometri.
Lebih baik dijelaskan dengan sebuah contoh.
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)
Jika Anda menjalankan ini secara langsung di SQL Server Management Studio, Anda mendapatkan 221151.479533501 pada hasil pertama dan 2 pada hasil kedua.
Ini pada dasarnya karena dalam tipe data geografi unit dipilih sesuai dengan SRID yang disediakan. Dalam kasus Anda, menjadi 4326, itu dalam meter. Jadi, Anda menanyakan jarak, dalam meter, antara koordinat (lon:7; lat:1) dan (lon:7; lat:3). Ia kembali sekitar 221 Km.
Saat menggunakan tipe geometri (contoh kedua), ini adalah proyeksi planar di mana jarak bekerja seperti yang Anda harapkan, sehingga mengembalikan 2.
Mengenai kode Spasial NH Anda, sepertinya ok. Cukup berikan parameter maxDistance dalam meter dan Anda akan baik-baik saja.