यह भूगोल डेटा-प्रकार और ज्यामिति डेटा प्रकार के बीच अंतर के कारण होता है।
एक उदाहरण के साथ सबसे अच्छा समझाया गया।
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 सर्वर प्रबंधन स्टूडियो में चलाते हैं तो आपको पहले परिणाम में 221151.479533501 और दूसरे में 2 प्राप्त होता है।
यह मूल रूप से इसलिए है क्योंकि भौगोलिक डेटा प्रकार में इकाई को आपूर्ति की गई SRID के अनुसार चुना जाता है। आपके मामले में, 4326 होने के नाते, मीटर में। तो, आप निर्देशांक (लोन:7; लैट:1) और (लोन:7; लैट:3) के बीच, मीटर में दूरी के लिए पूछ रहे हैं। यह लगभग 221 किलोमीटर की दूरी पर लौटता है।
ज्यामिति प्रकार (दूसरा उदाहरण) का उपयोग करते समय, यह एक समतलीय प्रक्षेपण होता है जहां दूरी आपकी अपेक्षानुसार काम करती है, इस प्रकार 2 लौटती है।
आपके NH स्थानिक कोड के संबंध में, ठीक लगता है। बस maxDistance पैरामीटर को मीटर में आपूर्ति करें और आपको ठीक होना चाहिए।