2009-12-08 11 views
12

मैं एक Google मानचित्र मैशप बना रहा हूं और SQL 2008 का उपयोग कर रहा हूं।एसक्यूएल 2008 भूगोल और ज्यामिति - जिसका उपयोग करना है?

मेरे पास पृथ्वी पर बड़ी संख्या में अंक होंगे और SQL में उन पर विभिन्न गणना करना चाहेंगे - जैसे कि सभी बिंदुओं को चुनना एक विशेष बहुभुज, या XY के 10 किमी के भीतर सभी बिंदुओं का चयन करें।

मैंने पहले कभी भी उपयोग नहीं किया है और एसक्यूएल स्थानिक विशेषताएं पहले कभी नहीं उपयोग की हैं। क्या मुझे इसके लिए geography या geometry डेटाटाइप का उपयोग करना चाहिए?

उत्तर

15

भूगोल वह प्रकार है जो पृथ्वी पर बिंदुओं को साकार करने के लिए है।

आप एक मेज है कि इस तरह गूगल मैप्स अंक संग्रहीत करता है, तो: यदि आप के लिए क्वेरी करना चाहते

CREATE PROCEDURE proc_AddPoint 
    @latitude     decimal(9,6), 
    @longitude    decimal(9,6), 
    @altitude     smallInt 
AS 

DECLARE @point     geography = NULL; 

BEGIN 

    SET NOCOUNT ON; 

    SET @point = geography::STPointFromText('POINT(' + CONVERT(varchar(15), @longitude) + ' ' + 
                                                       CONVERT(varchar(15), @latitude) + ' ' + 
                                                       CONVERT(varchar(10), @altitude) + ')', 4326) 

    INSERT INTO geo_locations 
    (
        location_id, 
        position_point 
   ) 
    VALUES 
    (
        NEWID(), 
        @point 
   ); 

END 

तब:

CREATE TABLE geo_locations (
    location_id  uniqueidentifier NOT NULL, 
    position_point geography   NOT NULL 
); 

तो आप इस संग्रहीत प्रक्रिया के साथ उस में अंक भर सकूं अक्षांश, देशांतर और ऊंचाई, बस निम्न क्वेरी प्रारूप का उपयोग करें:

SELECT 
    geo_locations.position_point.Lat AS latitude, 
    geo_locations.position_point.Long AS longitude, 
    geo_locations.position_point.Z AS altitude 
FROM 
    geo_locations; 
4

संभवतः आप भूगोल प्रकार चाहते हैं क्योंकि यह पृथ्वी के वक्रता के लिए जिम्मेदार है। ज्यामिति चीजों के "फ्लैट" दृश्य के लिए अधिक है। अधिक जानकारी के लिए इस आलेख को देखें http://www.mssqltips.com/tip.asp?tip=1847

6

आप कर सकते हैं जवाब PostGIS पूछे जाने वाले प्रश्न में दिए गए

I'm all confused. Which data store should I use geometry or geography?

लघु उत्तर का पालन करें: भूगोल एक नया डेटा प्रकार लंबी दूरी दूरी माप समर्थन करता है। यदि आप भूगोल का उपयोग करते हैं - आपको प्लानर समन्वय प्रणालियों के बारे में सीखने की आवश्यकता नहीं है। भूगोल आमतौर पर सबसे अच्छा होता है यदि आप की देखभाल दूरी और लंबाई माप रहे हैं और आपके पास दुनिया भर में सभी से डेटा है। ज्यामिति डेटाटाइप एक पुराना डेटा प्रकार है जिसमें कई फ़ंक्शन का समर्थन करते हैं और तृतीय पक्ष टूल से बहुत अच्छा समर्थन प्राप्त करते हैं। इसका सबसे अच्छा आप सुंदर स्थानिक संदर्भ प्रणाली के साथ सहज हैं या जहां अपने सभी डेटा एक भी स्थानिक संदर्भ प्रणाली (SRID) में फिट बैठता है आप स्थानीय डेटा के साथ काम कर रहे हैं, या आप जरूरत स्थानिक प्रसंस्करण का एक बहुत करने के लिए है। वर्तमान में समर्थित है और क्या है, यह देखने के लिए खंड 8.8, "PostGIS फ़ंक्शन समर्थन मैट्रिक्स" का संदर्भ लें।

दोनों डेटाबेस, पोस्टजीआईएस और एसक्यूएल सर्वर में ज्यामिति और भूगोल प्रकार, उसी अवधारणा का पालन करते हैं, इसलिए पोस्टजीआईएस FAQ में दिए गए उत्तर आपकी समस्या पर लागू होते हैं।

संबंधित मुद्दे