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

SQL Server 2008 भूगोल डेटा प्रकार का उपयोग क्यों करें?

यदि आप कोई स्थानिक गणना करने की योजना बना रहे हैं, तो EF 5.0 LINQ अभिव्यक्तियों की अनुमति देता है जैसे:

private Facility GetNearestFacilityToJobsite(DbGeography jobsite)
{   
    var q1 = from f in context.Facilities            
             let distance = f.Geocode.Distance(jobsite)
             where distance < 500 * 1609.344     
             orderby distance 
             select f;   
    return q1.FirstOrDefault();
}

फिर भूगोल का उपयोग करने का एक बहुत अच्छा कारण है।

एंटिटी फ्रेमवर्क के भीतर स्थानिक की व्याख्या

उच्च प्रदर्शन वाले स्थानिक डेटाबेस बनाना के साथ अपडेट किया गया

जैसा कि मैंने नोएल अब्राहम्स उत्तर पर नोट किया :

तो भंडारण प्रकारों की तुलना करना:

CREATE TABLE dbo.Geo
(    
geo geography
)
GO

CREATE TABLE dbo.LatLng
(    
    lat decimal(15, 12),   
    lng decimal(15, 12)
)
GO

INSERT dbo.Geo
SELECT geography::Point(12.3456789012345, 12.3456789012345, 4326) 
UNION ALL
SELECT geography::Point(87.6543210987654, 87.6543210987654, 4326) 

GO 10000

INSERT dbo.LatLng
SELECT  12.3456789012345, 12.3456789012345 
UNION
SELECT 87.6543210987654, 87.6543210987654

GO 10000

EXEC sp_spaceused 'dbo.Geo'

EXEC sp_spaceused 'dbo.LatLng'

परिणाम:

name    rows    data     
Geo     20000   728 KB   
LatLon  20000   560 KB

भूगोल डेटा-प्रकार 30% अधिक स्थान लेता है।

इसके अतिरिक्त भूगोल डेटाटाइप केवल एक बिंदु को संग्रहीत करने तक सीमित नहीं है, आप भी स्टोर कर सकते हैं। LineString, CircularString, CompoundCurve, Polygon, CurvePolygon, GeometryCollection, MultiPoint, MultiLineString, और MultiPolygon और बहुत कुछ . एक बिंदु से परे (उदाहरण के लिए LINESTRING(1 1, 2 2) उदाहरण के लिए) भूगोल के सबसे सरल प्रकारों (अक्षांश/लंबे) को संग्रहीत करने का कोई भी प्रयास प्रत्येक बिंदु के लिए अतिरिक्त पंक्तियों को शामिल करेगा, प्रत्येक बिंदु के क्रम के लिए अनुक्रमण के लिए एक कॉलम और लाइनों के समूहन के लिए एक और कॉलम। SQL सर्वर में भूगोल डेटा प्रकारों के लिए विधियाँ भी हैं जिनमें Area, Boundary, की गणना करना शामिल है। लंबाई, दूरियां, और बहुत कुछ

Sql सर्वर में अक्षांश और देशांतर को दशमलव के रूप में संग्रहीत करना नासमझी है।

अपडेट 2

यदि आप दूरी, क्षेत्रफल आदि जैसी कोई गणना करने की योजना बना रहे हैं, तो पृथ्वी की सतह पर इनकी ठीक से गणना करना कठिन है। SQL सर्वर में संग्रहीत प्रत्येक भूगोल प्रकार को स्थानिक संदर्भ आईडी के साथ भी संग्रहीत किया जाता है। . ये आईडी अलग-अलग गोले की हो सकती हैं (पृथ्वी 4326 है)। इसका मतलब है कि SQL सर्वर में गणना वास्तव में पृथ्वी की सतह पर सही ढंग से गणना करेगी (इसके बजाय as- कौवा मक्खियों जो पृथ्वी की सतह के माध्यम से हो सकता है)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में SET ROWCOUNT कैसे काम करता है

  2. nvarchar(MAX) में अधिकतम कितने वर्ण होंगे?

  3. MS SQL सर्वर बोली के उदाहरण पर SQL (DDL, DML) पर ट्यूटोरियल

  4. SQL सर्वर में सभी लॉजिकल ऑपरेटर का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 126

  5. एन्क्रिप्टेड डेटाबेस को पुनर्स्थापित करने का प्रयास करने में समस्याएं आ रही हैं