Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

NHibernate Spatial . का उपयोग करके त्रिज्या के भीतर स्थानिक बिंदु प्राप्त करें

यह भूगोल डेटा-प्रकार और ज्यामिति डेटा प्रकार के बीच अंतर के कारण होता है।

एक उदाहरण के साथ सबसे अच्छा समझाया गया।

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 पैरामीटर को मीटर में आपूर्ति करें और आपको ठीक होना चाहिए।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल सर्वर निर्भरता

  2. रेफरेंशियल कॉन्स्ट्रेंट में एक आश्रित संपत्ति को स्टोर-जेनरेट किए गए कॉलम में मैप किया जाता है

  3. क्या एक चयन क्वेरी हमेशा पंक्तियों को उसी क्रम में लौटाती है? संकुल सूचकांक के साथ तालिका

  4. सभी डुप्लीकेट पंक्तियां दिखाएं

  5. SQL सर्वर में XML में सेल्फ-क्लोजिंग टैग