PostGIS भूगोल और ज्यामिति प्रकार के पेशेवरों और विपक्ष क्या हैं?


86

मेरी कंपनी भू-स्थानिक डेटा संग्रहीत करने के लिए geometry( the_geom) डेटा प्रकार का उपयोग करती है ।

मुझे हाल ही में geography( the_geog) डेटा प्रकार की अवधारणा से परिचित किया गया है , जो कि जैसा कि मैं समझता हूं, SRIDज्यामिति के साथ संग्रहीत करता है।

क्या अंतर हैं geographyऔर geometry, और वहाँ बड़े डेटाबेस में उनमें से एक का उपयोग कर के किसी भी लाभ है?


इस डुप्लिकेट प्रश्न पर कुछ और उत्तर: gis.stackexchange.com/questions/26082/…
Arto Bendiken

जवाबों:


74

PostGIS 2.2 से पहले WGS84 में भूगोल सुविधाओं को हमेशा संग्रहीत किया जाता है; तब से किसी भी लोन / लेट-आधारित स्थानिक संदर्भ प्रणाली का उपयोग किया जा सकता है। भूगोल की विशेषताओं के आधार पर माप सीआरएस इकाइयों के बजाय मीटर में होंगे और पोस्ट जीआईएस प्लैनेट ज्यामिति के बजाय भूगर्भीय गणना का उपयोग करेंगे।

कोई भी फ़ंक्शन ज्यामिति का समर्थन नहीं करता है लेकिन आप ज्यामिति और भूगोल के बीच कास्ट कर सकते हैं। वर्तमान फ़ंक्शन सूची के लिए देखें: https://postgis.net/docs/PostGIS_Special_Functions_Index.html#PostGIS_GeographyFunctions

मुझे नहीं लगता कि बड़े डेटाबेस के लिए भूगोल या ज्यामिति की सिफारिश करना संभव है। यह इस बात पर निर्भर करता है कि आप अपने डेटा के साथ क्या कर रहे हैं। क्षेत्र पर गणना अधिक जटिल है, मैं भूगोल सुविधाओं पर धीमी होने के लिए विश्लेषण की उम्मीद है। आपको भूगोल का उपयोग करने के लिए अपने सभी डेटा को WGS84 में बदलना होगा।

यदि आप बहुत सारे माप करते हैं और उदाहरण के लिए बड़े बहुभुजों के आकार की तुलना करना है, तो यह ज्यामिति के बजाय भूगोल का उपयोग करने के लिए समझ में आता है।

मुझे निम्नलिखित उपयोगी मिले: http://postgis.net/workbooks/postgis-intro/geography.html

विषय "पोस्टगिस इन एक्शन" (आईएसबीएन: 9781935182269) में भी शामिल है।


"भूगोल द्वारा समर्थित है ..." यह आज तक है?
क्रिस एंडरसन

: सूची @ChrisAnderson अब अब है postgis.net/docs/...
UnderDark

41

मैं अपने सहज ज्ञान युक्त "अंगूठे के नियमों" का उपयोग करता हूं ... यह तेजी से निर्णय के लिए उपयोगी है,

  • आपके DATABASE के बारे में : यदि सुविधाएँ और / या स्थानिक विश्लेषण महाद्वीपीय-पैमाने के हैं , और सटीक (गंभीर अनुप्रयोगों) की आवश्यकता है तो भूगोल का उपयोग करें । अन्य ज्यामिति का उपयोग करें: जब सभी डेटाबेस समान ( शहर-स्केल ) क्षेत्र के बारे में हों, या आपको परिशुद्धता की आवश्यकता नहीं है, आदि आपको केवल ज्यामिति की आवश्यकता है। @Underdark
    के सुझाव व्याख्यान में समान नियम देखें ।

  • निष्पादन / सटीक संतुलन के संदर्भ में आपकी आवश्यकताओं के बारे में : ज्यामिति तेज है; यदि आपको प्रदर्शन की आवश्यकता है और भूगोल का उपयोग करने के लिए सोचें, तो पहले अपने बेंचमार्क करें।


प्रमुख धारणाएँ

इस पृष्ठ पर, हम कुछ कुंजी-शब्द और कुछ अवधारणाओं पर ध्यान केंद्रित करते हैं: सटीक , प्रदर्शन और लचीलापन / उपयोग की वस्तु जैसी कुछ ।

जैसा कि दूसरों द्वारा याद किया जाता है, स्टोर और गणना के लिए अंतर, ज्यामिति में भूगोल और विमान क्षेत्र में उपयोग होता है:

  • क्षेत्र (भूगोल) बेहतर, अधिक सटीक है। देखें लॉस एंजिल्स / पेरिस उदाहरण
  • भूगोल का विकास: जैसा कि @DavidF कहता है, "भूगोल प्रकार हाल ही में जोड़ा गया था, इसलिए कम कार्य समर्थित / कार्यान्वित किए जाते हैं"।

शायद वर्ष 2020 पर सभी जीआईएस डेटाबेस एक ही मानक एसआरआईडी / ईपीएसजी (आजकल 4326 कोड के बराबर, WGS84 के लिए) सेट किए जाएंगे। आज भूगोल प्रदर्शन और कार्यात्मक सीमाओं के कारण एक डिफ़ॉल्ट विकल्प नहीं है।

विचार-विमर्श

मेरी राय में यह "सर्वोत्तम प्रथाओं" का सवाल है, न कि एक गहरी तकनीकी / सैद्धांतिक समस्या का।

शुद्धता

अपने डेटा पर त्रुटि का अनुमान लगाने के बाद, अपने परीक्षण करें और परिणामों की तुलना करें: भूगोल के साथ सटीक लाभ डेटा की त्रुटि से अधिक है? ST_Distance समारोह (साथ मैक्स और एवीजी एग्रीगेटर्स ) प्रयोग इस तरह का में मुख्य संदर्भ है।

प्रदर्शन

~ 100 किमी 2 (व्यास ~ 11 किमी) के एक शहरी क्षेत्र में बेंचमार्क के उदाहरण , सभी को एक ज्यामिति के रूप में संग्रहीत किया जाता है, एक प्लानर यूटीएम समन्वय प्रणाली में। नोट: अक्सर उपयोग किए जाने वाले ज्यामिति / भूगोल रूपांतरण के साथ शुरू - अक्सर क्योंकि कुछ फ़ंक्शन मौजूद नहीं हैं और कुछ अन्य, जैसे ST_Buffer और ST_Intersection, आंतरिक रूप से रूपांतरण करते हैं।

बेंच # 1: एक तालिका ~ 87000 बहुभुज शहरी लॉट का प्रतिनिधित्व करती है, प्रत्येक पाली के साथ (औसत) ~ 13 अंक

 BEGIN; EXPLAIN ANALYSE CREATE TABLE temp_geom AS 
        SELECT gid, the_geom FROM urbanlots; ROLLBACK;
 -- time 2080 ms   ~ 2.0 s
 BEGIN; EXPLAIN ANALYSE CREATE TABLE temp_geog AS 
        SELECT gid, Geography(ST_Transform(the_geom,4326)) AS geog 
        FROM urbanlots; ROLLBACK;
 -- time 12374 ms ~ 12.4 s  ~ 6 * geometry.

इसलिए, भूगोल_ समय = 6 * ज्यामिति_टाइम।

बेंच # 2: शहरी ब्लॉक का प्रतिनिधित्व करने वाली ~ 3500 पॉलीगोन के साथ एक तालिका, प्रत्येक के साथ पाली (avg) ~ 50 अंक: 0.6s बनाम 2.7 s, भूगोल_ समय = 4.5 * ज्यामिति_टाइम।

बेंच # 3: ~ 10000 लाइनें शहरी सड़कों का प्रतिनिधित्व करती हैं, प्रत्येक ~ 5 अंक के साथ। ~ 0.87s बनाम ~ 0.36s, भूगोल_टाइम = 2.4 * ज्यामिति_टाइम।

पीठ # 2 पर जाएं, तालिकाओं का निर्माण करें और प्रश्न करें,

 EXPLAIN ANALYSE SELECT ST_Area(g.the_geom)+ST_Distance(g.the_geom,t.the_geom) 
         FROM temp_geom g, (SELECT the_geom FROM temp_geom WHERE gid=1) as t;
 -- time 182 ms   ~ 0.2 s
 EXPLAIN ANALYSE SELECT ST_Area(g.geog)+ST_Distance(g.geog,t.geog) 
         FROM temp_geog g, (SELECT geog FROM temp_geog WHERE gid=1) as t;
 -- time 58657 ms  ~ 59 s  ~  300*geometry
 -- curioselly for only distances, geography=4*geometry

निष्कर्ष: छोटे कार्यों और अच्छे हार्डवेयर के लिए, समय "स्वीकार्य-समान समय" में परिवर्तित हो जाता है, लेकिन बड़े कार्यों के लिए, विचार करने के लिए प्रदर्शन रेटिंग होती है।

सुविधा / कमोडिटी

बेंचमार्क पर मैं दिन-प्रतिदिन का काम करता हूं, अंकों की संख्या की जांच करता हूं (द्वारा ST_NPoints) ... यह ऑपरेशन का एक उदाहरण है जो भूगोल के लिए मौजूद नहीं है, कलाकारों की जरूरत है। "भूगोल / ज्योमेट्री कास्ट" प्रोग्रामर, मास्टर्स आदि के लिए एक कष्टप्रद कार्य है।

SQL और PL / pgSQL फ़ंक्शंस के पुस्तकालयों का पुन: उपयोग करते समय, भूगोल को अनुकूलन की आवश्यकता होती है। और, यदि आप कोड का अनुकूलन करना चाहते हैं, या बहुत से मध्यस्थ रूपांतरणों के साथ सटीक समस्याओं से बचना चाहते हैं, तो भूगोल के साथ बिल्ड-इन फ़ंक्शन का एक पूरा सेट की अनुपस्थिति एक और समस्या है। भूगोल के लिए कार्यक्रम, एक आसान काम नहीं है।

प्रोसेस-ओनली, डेटा इंटरचेंज इत्यादि।

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

मेरा मानना ​​है कि डेटा केंद्रीकरण एक अन्य कार्य है जहां भूगोल बेहतर है: संदर्भ में जहां इनपुट प्रारूपों और संदर्भ प्रणालियों की विविधता सामान्य है, एक मानक का उपयोग, जैसे कि भूगोल द्वारा लागू किया गया, लाभकारी है ... कॉन्फ़िगरेशन पर कन्वेंशन है एक अच्छा सिद्धांत है जब केंद्रीकरण और डेटा इंटरचेंज व्यापार पर ध्यान केंद्रित करते हैं (Google मानचित्र देखें!)।


@Peter डेटा मानकीकरण के संबंध में, क्या जियोमेट्री कई स्रोतों से डेटा के संयोजन का पसंदीदा तरीका हो सकता है, कभी-कभी एक ही डेटा प्रकार में कस्टम समन्वय संदर्भ प्रणालियों (CRS) के साथ? की तरह रूपांतरित होने वाले कार्यों ST_GeomFrom*और ST_As*बहुत आसान लगता है, विशेष रूप से, कस्टम CRSs को परिभाषित करने की क्षमता के साथ संयुक्त दे PostGIS प्रश्नों और एक भी सीआरएस में निर्यात के दौरान परिवर्तनों को संभाल?
डेविड लेबॉउर

@Peter अरे, मैं सोच रहा था, क्या कोई स्याही है जिसमें भूगोल के सभी कार्य शामिल हैं? ज्यामिति फ़ंक्शंस यहाँ हैं मुझे लगता है, लेकिन भूगोल फ़ंक्शंस कहाँ हैं? धन्यवाद। अद्भुत उत्तर btw, वास्तव में अच्छा काम
14

11

मेरा मानना ​​है कि सबसे महत्वपूर्ण अंतर यह है कि भूगोल प्रकार के साथ, गणना एक क्षेत्र पर की जाती है जो पृथ्वी का प्रतिनिधित्व करती है जैसा कि ज्यामिति प्रकार की विशेषताओं पर की गई गणना में उपयोग की गई सपाट सतह के विपरीत है।

डॉक्स बहुत अच्छे हैं: http://postgis.net/docs/manual-1.5/ch04.html#PostGIS_Geography

भूगोल प्रकार हाल ही में जोड़ा गया था, इसलिए कम कार्यों का समर्थन / कार्यान्वयन किया जाता है।


9

हो सकता है कि आपको यह सुविधा मिले - और उत्तर - बेकार है, लेकिन ज्यामितीय के साथ काम करने का एक फायदा यह है कि आप बिना किसी स्थानिक संदर्भ के काम कर सकते हैं (यानी, SRID -1 पर सेट)।

वर्तमान में मैं एक एप्लिकेशन में काम कर रहा हूं जो एयरबोर्न LiDAR डेटा को फ़िल्टर करता है, इसके डेटा स्रोतों में एक PostGIS डेटाबेस है, जो प्रथम श्रेणी स्थानिक अनुक्रमण ( GiST पर RTree ) और समस्या के बिना डेटा की उच्च मात्रा के साथ मुकाबला करता है। चूंकि उस एप्लिकेशन को भूगोल की विशेषताओं में हेरफेर या विश्लेषण करने की आवश्यकता नहीं है, इसलिए SRID की आवश्यकता नहीं है, इस प्रकार ओवरहेड से बचने से यह लाया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.