PostgreSQL पर PostGIS का उद्देश्य क्या है?


49

PostgreSQL पहले से ही स्थानिक डेटा प्रकार, ऑपरेटरों और अनुक्रमण का समर्थन करता है।

PostGIS क्या प्रदान करता है जो PostgreSQL के विस्तार के रूप में मौजूद होना आवश्यक है?

हम सब सिर्फ PostgreSQL की स्थानिक कार्यक्षमता का उपयोग क्यों नहीं करते हैं?


2
यह PostGIS है जो उन स्थानिक डेटा प्रकार, ऑपरेटर और इंडेक्सिंग प्रदान करता है ...
DPSSpatial

5
नहीं, वह देशी PostgreSQL ज्यामिति प्रकारों के बारे में बात कर रहा है।
इवान कैरोल

4
संक्षिप्त उत्तर यह है कि PostGIS PgSQL प्रकारों के समान कार्यात्मक (अब) 10x है। लंबे उत्तर, जो सवाल "क्यों नए प्रकार विकसित करते हैं, और न केवल पहले से ही वहां लोगों को सुधारते हैं" शामिल हैं।
पॉल रैमसे

1
जावा स्प्रिंग फ्रेमवर्क के साथ भी यही हुआ। जावा में खामियां / गायब विशेषताएं थीं। स्प्रिंग ने कई जावा खामियों को ठीक किया और उपयोगी सुविधाओं को जोड़ा। जावा ने स्प्रिंग के फिक्स + फीचर्स की नकल की। लोग तब पूछते हैं कि वसंत क्यों मौजूद है ...
नील मैकगिन

जवाबों:


86

यदि आप 2001 की शुरुआत में ब्रह्मांड को फिर से घायल करते हैं, और न केवल PostGIS के आविष्कारकों को भविष्य देखने दें, बल्कि PgSQL के PSC को भविष्य को देखने दें, शायद PostGIS PgSQL पर पैच की एक श्रृंखला होगी। लेकिन कम से कम, अगर हमने पैच टू कोर के रूप में शुरू किया था, तो सबसे पहली चीज जो हम करेंगे, वह है:

  • कोर PgSQL क्षेत्रों छेद का समर्थन नहीं करते हैं, लेकिन जीआईएस मॉडल वास्तव में छेद चाहता है, क्या हम इसे बदल सकते हैं?

और कोर PgSQL ने कहा होगा: "नहीं, निश्चित रूप से नहीं, क्षेत्रों में एक मौजूदा अच्छी तरह से समझा शब्दार्थ है और हम उस तरह के पीछे असंगत परिवर्तन नहीं कर सकते हैं"।

नॉन-कोर डेवलपर्स के रूप में, PostGIS कई वर्षों तक मासिक और 6-मासिक रिलीज करने में सक्षम था, जबकि PgSQL कोर ने वार्षिक और लंबे समय के रिलीज के साथ साथ प्लेग किया। जब भी हम अपनी परियोजना में अधिकार रखते थे, तब भी हम जो भी सुविधाएँ चाहते थे, उन्हें जोड़ने में सक्षम थे, लेकिन PgSQL में प्रतिबद्ध अधिकार प्राप्त करने में बहुत लंबा समय लगता है।

जब तक PostGIS पर्याप्त बाहरी मूल्य प्रदर्शित कर रहा था कि PgSQL कोर ने देखा और खुद से कहा "हुह, कि एक अतिरिक्त सुविधा के रूप में कोर में अच्छा होता", पहले से ही इतने अलग मानक और शैली का इतना कोड था PgSQL (एक असंगत लाइसेंस के तहत उल्लेख नहीं करना) कि विलय का विचार वास्तव में संभव नहीं था।

इसके बजाय, PostGIS वास्तव में बड़े कॉम्प्लेक्स एक्सटेंशन का कैनोनिकल उदाहरण बन गया है जो PgSQL को मॉड्यूलर और एक्स्टेंसिबल बने रहने में मदद करता है। "PostGIS की तरह यह कुछ कैसे असर करेगा" एक सवाल है जो अक्सर पूछा जाता है कि कोर PgSQL कुछ बदलाव का मूल्यांकन करता है। यह भी एक अच्छी बात है, शायद उतना अच्छा नहीं जितना PostGIS कोर का हिस्सा है, लेकिन काफी अच्छा है।

अन्य कारण हैं, निर्भरता की लंबी सूची की तरह PgSQL कोर को देखने के लिए नफरत होती, आम तौर पर कम कोड की संगति और एपीआई की सफाई होती है, जिसे वे सुधारने की निराशा करते थे, और। गर्भाधान के समय भी, PostGIS PgSQL के लिए एक बाल काटने के लिए बहुत बड़ा था।


इसके अलावा ... PostGIS C ++ है। यह एक PostgreSQL मर्ज के लिए शोस्टॉपर होगा। ऐसा नहीं होना चाहिए या नहीं । निर्भरताएं भी इसे पूरी तरह से रोक देगी - GDAL? हा! मैं पर्ल> 5.8.0 पर निर्भर होने के लिए सहमत होने के लिए भी कोर नहीं पा सकता हूं। यदि आपके पास अधिकार हैं, तो भी विकास की गति धीमी है; कमिटर्स को पेड़ में सभी शॉ सामान के लिए मुफ्त नहीं मिलता है, उन्हें कोड की समीक्षा के माध्यम से जाना चाहिए, और महीनों या वर्षों में बड़े बदलाव प्राप्त करना चाहिए। कोड गुणवत्ता लाभ हैं, लेकिन यह निश्चित रूप से तेजी से आगे नहीं बढ़ रहा है।
क्रेग रिंगर

यह एक विशेष समस्या है कि कोर पीजी अधिक बाहरी पुस्तकालयों के आधार पर चीजों से बचने के लिए चीजों को फिर से मजबूत करता है। चूँकि इसका अर्थ $ $___ के साथ $ old_unix_42 है, इसलिए $ dead_vendor_compiler पर $ dead_altecture को इसका समर्थन करना होगा, सभी बिल्डफ़ार्म सदस्यों को अपडेट करने की आवश्यकता होगी, आदि। यह उन मुद्दों में से एक है जिनके परिपक्व होने और स्थिर होने का मुझे अनुमान है।
क्रेग रिंगर

@CraigRinger आपको क्यों लगता है कि PostGIS C ++ है? यह एक अपमान है :-)
निकलस एवन

यह ... नहीं है? मैं शपथ ले सकता था। लेकिन यकीन है कि यह पर्याप्त नहीं लगता है। मेरी गलती। मुझे वास्तव में वैसे भी C ++ का (मध्यम और संयमित) उपयोग पसंद है।
क्रेग रिंगर

4
कुछ समय तक PostGIS के पास GEOS के लिए एक बाध्यकारी बनाने के लिए C ++ के कुछ टुकड़े थे। एक बार जब GEOS ने अपनी C API जोड़ दी, तो उन टुकड़ों को हटा दिया गया और PostGIS "शुद्ध" सी बन गया
पॉल

34

यह बस सच नहीं है, PostgreSQL Spatial डेटा प्रकारों का समर्थन नहीं करता है। यह ज्यामितीय प्रकारों का समर्थन करता है ये कुछ चीजों के लिए पूरी तरह से ठीक हैं, लेकिन वे वास्तविक दुनिया समन्वय प्रणालियों से पूरी तरह से अलग हैं। देशी प्रकार

अपडेट करें

सूचकांक प्रश्न के लिए, यह सामान्य प्रश्न है

PostgreSQL R- ट्री इंडेक्स का समर्थन क्यों नहीं किया गया है?

PostGIS के शुरुआती संस्करणों में PostgreSQL R- ट्री इंडेक्स का उपयोग किया गया था। हालाँकि, PostgreSQL R-Trees को संस्करण 0.6 के बाद से पूरी तरह से छोड़ दिया गया है, और स्थानिक अनुक्रमण R-Tree-over-GiST योजना के साथ प्रदान किया गया है।

हमारे परीक्षणों ने मूल आर-ट्री और GiST के लिए खोज की गति को तुलनीय दिखाया है। Native PostgreSQL R-Trees की दो सीमाएँ हैं जो उन्हें GIS सुविधाओं के साथ उपयोग के लिए अवांछनीय बनाती हैं (ध्यान दें कि ये सीमाएँ वर्तमान PostgreSQL मूल R- ट्री कार्यान्वयन के कारण हैं, सामान्य रूप से R-Tree अवधारणा नहीं):

  • PostgreSQL में आर-ट्री इंडेक्स उन सुविधाओं को संभाल नहीं सकते हैं जो आकार में 8K से बड़े हैं। GiST अनुक्रमित, सुविधा के लिए बाउंडिंग बॉक्स को प्रतिस्थापित करने के "हानिपूर्ण" चाल का उपयोग कर सकते हैं।

  • PostgreSQL में आर-ट्री इंडेक्स "शून्य सुरक्षित" नहीं हैं, इसलिए एक ज्यामिति स्तंभ पर एक इंडेक्स का निर्माण करना जिसमें शून्य ज्यामिति विफल होंगे। [GiST इंडेक्स अशक्त हैं]


क्या आप अपने अंतिम बिंदु पर विस्तार कर सकते हैं - GiST अनुक्रमित के बारे में? PostgreSQL R-Tree प्रदान कर रहा था और अब यह एक GiST सूचकांक के माध्यम से प्रदान कर रहा है, इसलिए मैं उस बिंदु के बारे में उलझन में हूं।
ज़ेरूनो

faq से सीधे पाठ के साथ अद्यतन।
इवान कैरोल

1
GiST API एक PostgreSQL है जो एक्सेस / gist.h द्वारा प्रदान की जाती है । आप इसे यहाँ PostGIS
Evan Carroll

3
जबकि PostGIS के पास यह rtree-on-gist कार्यान्वयन है, यह PgSQL द्वारा उपयोग किए जाने वाले बहुत ही समान है, सरल कारण के लिए चित्रमय वस्तुओं के अपने मूल समर्थन के लिए जो मूल रूप से हमने उनकी नकल की थी।
पॉल रैमसे

1
@Zeruno, नहीं, PgSQL में rtree फाड़नेवाला को संशोधित करने से PostGIS का व्यवहार नहीं बदलेगा, क्योंकि हमारे पास अपना, gserialized_gist_picksplit_2d () में है। आप यह सब PgSQL एक से अलग नहीं है, अगर सब पर नहीं होगा।
पॉल

8

PostGIS PostgreSQL ऑब्जेक्ट-रिलेशनल डेटाबेस के लिए एक स्थानिक डेटाबेस एक्सटेंडर है । यह भौगोलिक वस्तुओं के लिए समर्थन जोड़ता है जिससे एसक्यूएल में स्थान प्रश्नों को चलाने की अनुमति मिलती है।

SELECT superhero.name
FROM city, superhero
WHERE ST_Contains(city.geom, superhero.geom)
AND city.name = 'Gotham';

मूल स्थान जागरूकता के अलावा, PostGIS कई सुविधाएँ प्रदान करता है जो अन्य प्रतिस्पर्धी स्थानिक डेटाबेस जैसे Oracle लोकेटर / स्थानिक और SQL सर्वर में बहुत कम पाई जाती हैं। का संदर्भ लें PostGIS फ़ीचर सूची अधिक जानकारी के लिए।

PostGIS सुविधाएँ सूची उन क्षमताओं को भी विस्तारित करती है:

PostGIS करने के लिए अतिरिक्त प्रकार (ज्यामिति, भूगोल, रेखापुंज और अन्य) कहते हैं PostgreSQL डेटाबेस। यह इन स्थानिक प्रकारों पर लागू होने वाले फ़ंक्शंस, ऑपरेटर्स और इंडेक्स एन्हांसमेंट्स को भी जोड़ता है। ये एडिटोनल फ़ंक्शंस, ऑपरेटर, इंडेक्स बाइंडिंग और प्रकार कोर PostgreSQL DBMS की शक्ति को बढ़ाते हैं, जिससे यह एक तेज़, सुविधा-युक्त और मजबूत स्थानिक डेटाबेस प्रबंधन प्रणाली बनती है।

सुविधा की सूची

PostGIS 2+ श्रृंखला प्रदान करता है:

  • स्पाइसिंग, डिसिंग, मॉर्फिंग, रिकेल्सीफाइंग और वेक्टर-रैस्टर डेटा दोनों के लिए प्रोसेसिंग और एनालिटिक फ़ंक्शंस, ठीक दाने वाले रैस्टर प्रोसेसिंग के लिए SQL रैस्टर मैप बीजगणित की शक्ति के साथ एकत्रित / संघन
  • वेक्टर और रेखापुंज डेटा दोनों के लिए स्थानिक अस्वीकृति एसक्यूएल कॉल करने योग्य फ़ंक्शन, कमांडलाइन और जीयूआई पैक किए गए टूल के माध्यम से ईएसआरआई शेपफाइल वेक्टर डेटा आयात करने / निर्यात करने के लिए समर्थन और अन्य 3-पार्टी ओपन सोर्स टूल्स के माध्यम से अधिक स्वरूपों के लिए समर्थन करते हैं।
  • कई मानक प्रारूपों से रेखापुंज डेटा आयात करने के लिए पैकेज्ड कमांड-लाइन: जियोफाई, नेटसीडीएफ, पीएनजी, जेपीजी

  • SQL के उपयोग से कुछ के नाम के लिए मानक पाठ स्वरूपों जैसे KML, GML, GeoJSON, GeoHash और WKT में SQL डेटा रेंडरिंग रेखापुंज डेटा का उपयोग करके जेंडरटैस्टर, PNG, JPG, NetCDF जैसे वेक्टर टेक्स्ट सपोर्ट के लिए रेंडर करना और आयात करना।

  • ज्यामितीय क्षेत्र द्वारा पिक्सेल मानों की निकासी के लिए निर्बाध रेखापुंज / वेक्टर एसक्यूएल कॉल करने योग्य कार्य, क्षेत्र द्वारा आँकड़े चलाना, रेखागणित द्वारा रेखापुंजों को जोड़ना, और रेखापुंजों को 3 डी ऑब्जेक्ट सपोर्ट, स्थानिक सूचकांक, और फ़ंक्शंस नेटवर्क टोपोलॉजी समर्थन टाइगर लोडर / जियोकोडर / रिवर्स जियोकोडर का समर्थन करता है। / यूएस जनगणना टाइगर डेटा का उपयोग करना

इसके अलावा, इस पोस्ट में पहले से ही उल्लेखित बिंदुओं / भागों के लिए। मैं PostGIS वेबसाइट पर बताया गया है कि यह कैसे काम करता है

चूंकि PostGIS C में है, इसलिए यह C और C ++ में अन्य पुस्तकालयों का उपयोग कर सकता है, और यह इतनी उदारता से करता है। PostGIS पर निर्भर करता है:

  • कई ज्यामिति प्रसंस्करण एल्गोरिदम के लिए GEOS
  • फिर से प्रक्षेपण कार्यों के समन्वय के लिए Proj.4
  • रेखापुंज प्रसंस्करण और प्रारूप समर्थन के लिए GDAL
  • XML पार्सिंग के लिए LibXML2
  • JSON पार्सिंग के लिए JSON-C
  • SFCGAL बढ़ाया 3 डी का समर्थन और अतिरिक्त geoprocessing एल्गोरिदम के लिए
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.