2009-06-21 17 views
28

PostgreSQL बॉक्स के बाहर geometric types के विभिन्न प्रकार का समर्थन करता है, साथ ही बहुत से ज्यामितीय operators और GiST indexes जो डेटा की स्थानिक अनुक्रमणिका प्रदान करते हैं।PostgreSQL में स्थानिक डेटा

और फिर PostGIS भी है, जो पीजी का विस्तार है।

पीजी और पोस्टजीआईएस में अंतर्निहित स्थानिक समर्थन के बीच क्या अंतर है?

यदि मेरे आवेदन को भौगोलिक निर्देशांक (अंक, क्षेत्र, बहुभुज) को स्टोर करने की आवश्यकता है और फिर कुशलतापूर्वक प्रश्न (जैसे पॉइंट-इन-पॉलीगॉन, पॉलीगॉन चौराहे) की आवश्यकता है, तो मुझे पोस्टजीआईएस की आवश्यकता है या क्या मैं (तर्कसंगत) अधिक उपयोग कर सकता हूं सुविधाजनक और सरल अंतर्निहित डेटा प्रकार/वाक्यविन्यास?

उत्तर

31

सबसे पहले मैं जीआईएसटी इंडेक्स को स्पष्ट करना चाहता हूं: जीआईएसटी वास्तव में नए डेटा प्रकारों के लिए इंडेक्स बनाने के लिए एक ढांचा है, न कि किसी विशेष इंडेक्सिंग योजना के लिए। इस ढांचे का उपयोग पोस्टग्रेज़ के साथ आने वाले ज्यामितीय प्रकारों के लिए किया जाता है, लेकिन इसका उपयोग मानक टेक्स्ट कॉलम पर ट्रिग्राम-मिलान टेक्स्ट समानता सूचकांक के लिए भी किया जाता है, और निश्चित रूप से कई बाहरी पैकेजों की अनुक्रमण योजनाओं द्वारा उपयोग किया जाता है, जिनमें से हम कर सकते हैं संख्या पोस्टजीआईएस।

चाहे मानक ज्यामितीय डेटा प्रकार आपके लिए काम करेंगे या आपको पोस्टजीआईएस पूरी तरह से आपके आवेदन पर निर्भर करता है।

पोस्टजीआईएस "ज्यामिति" प्रकार के कॉलम में ज्यामितीय डेटा संग्रहीत करता है; इसमें आप अधिक या कम मनमाना डेटा (अंक, मंडल, बहुभुज, क्या है-आप) स्टोर कर सकते हैं। इंडेक्सिंग तेज़ और काफी परिष्कृत है: यह जटिल आकारों के लिए बाध्यकारी बक्से का उपयोग करके हानिकारक इंडेक्सिंग जैसी चीजें कर सकता है जो अन्यथा उचित तरीके से अनुक्रमित नहीं हैं। प्रश्नों के परिणामों के स्वचालित रूपांतरण के साथ, विभिन्न स्थानिक संदर्भ प्रणाली समर्थित हैं। पोस्टजीआईएस उद्योग-मानक ओपनजीआईएस प्रारूपों का भी समर्थन करता है, जो अन्य सिस्टम के साथ डेटा साझा करने में मदद कर सकता है।

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

मेरी सलाह आंतरिक ज्यामितीय प्रकारों के साथ खेलना और देखें कि यह आपके लिए कितनी अच्छी तरह से काम करता है; यदि आप समस्याओं में भागना शुरू करते हैं, तो पोस्टजीआईएस आज़माएं।

+0

धन्यवाद। अरे, क्या आप इस पर एक नज़र डालने पर ध्यान देंगे: http://stackoverflow.com/questions/1012504/sql-query-for-point-in-polygon-using-postgres –

+0

उस पर ऐसा लगता है कि आपके पास पहले से ही आपका जवाब है: आप मानक पोस्टग्रेस ज्यामिति प्रकार और पोस्टजीआईएस प्रकारों को मिश्रित कर रहे हैं। ये दो अलग-अलग चीजें हैं; मेरा सुझाव है कि आप एक या दूसरे का उपयोग करें, जब तक कि आपको कुछ अजीब मामला न मिले, जहां मानक पोस्टग्रेस प्रकार अधिक कुशल हैं या पोस्टजीआईएस प्रकारों से बेहतर काम करते हैं। –

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