PostGIS में स्थानिक दृश्य बनाना और इसे QGIS में परत के रूप में जोड़ना?


49

PostGIS 2.0 में, मैं एक स्थानिक रूप से सक्षम दृश्य बनाने के लिए कुशल तरीका चाह रहा हूं जो QGIS में देखने योग्य हो।

मैंने @Mike Toews के भाग 2 के संदर्भ का उत्तर दिया कि पोस्टगिस डीबी में मौजूदा तालिकाओं (नया स्कीमा लागू करने) से तालिका कैसे बनाएं? , और "पोस्टजीआईएस लेयर्स" संवाद में दृश्य एक बिंदु परत (मेरे मामले में) के रूप में दिखाई देता है। लेकिन दृश्य बनाने और स्थानिक रूप से सक्षम करने के बाद, मुझे QGIS में दृश्य जोड़ने की कोशिश करते समय निम्नलिखित त्रुटि मिली:

एक परत जोड़ने के लिए आपको एक तालिका का चयन करना होगा

क्या कोई समझा सकता है कि स्थानिक दृश्य QGIS में लोड क्यों नहीं होगा, और QGIS में एक परत के रूप में इसे लोड करने योग्य बनाने के लिए मुझे क्या करने की आवश्यकता है?

मैं वर्तमान में OSGEO इंस्टॉलर से QGIS v1.8 का उपयोग कर रहा हूं

मुझे लगता है कि भू-डेटाबेस से बनाया गया है, जिसे PostGIS में लोड किया गया है। भौगोलिक तालिका / स्थानिक डेटा को QGIS में चुना / देखा जा सकता है।

जब मैं " mt_view " का चयन करने का प्रयास करता हूं , QGIS संवाद में दृश्य देखता है, लेकिन मुझे इसे चुनने नहीं देगा। यह क्षेत्र के चारों ओर एक बिंदीदार बॉक्स देता है, लेकिन दृश्य को उजागर और चयन नहीं करता है।

QGIS एक लेयर के रूप में mt_view का चयन नहीं कर सकता है


मैंने अभी देखा कि जब मैं अपनी पहली क्वेरी चलाता हूं:

CREATE OR REPLACE VIEW data.test AS
SELECT * FROM data.geoname
WHERE admin1='MT'

दृश्य QGIS ऐड लेयर डायलॉग में दिखाई देता है, लेकिन अचयनित है। फिर जब मैं दौड़ता हूं:

SELECT Populate_Geometry_Columns('data.test'::regclass);

मुझे "0" का परिणाम मिलता है, जहां प्रलेखन के अनुसार , मुझे लगता है कि इसे "1" वापस करना चाहिए।


1
मैं समस्या की पुष्टि करता हूं। QGIS 1.8, PostGIS 2.0, और प्राथमिक कुंजी के साथ तालिका से बनाया गया दृश्य के साथ, थाह दृश्य avaiable परतों में सूचीबद्ध हो जाता है, लेकिन त्रुटि संदेश "आपको एक परत जोड़ने के लिए तालिका का चयन करना होगा" प्रकट होता है।
जियोहापी

2
जब हम विचारों के साथ काम करते हैं तो Postgis Add Layer विंडो में स्वचालित रूप से डे प्राथमिक कुंजी सेट करने का एक और तरीका है? यदि आप सामान्य जीआईएस उपयोगकर्ता की कल्पना करते हैं और बहुत सारे पूर्णांक फ़ील्ड हैं, तो इस स्क्रीन में किसी भी परत / दृश्य के लिए एक प्राथमिक कुंजी फ़ील्ड का चयन करना बहुत कठिन काम है।

@Pgimenez, मैं एक नया प्रश्न शुरू करने का सुझाव दूंगा जो आपने ऊपर कहा है, और फिर इस प्रश्न को अपने आप में url संदर्भ दें। यह इसे बहुत व्यापक दृश्यता देगा।
रयानडाल्टन

कगिस 1.8 लिस्बोआ में उत्तल की कल्पना करने का कोई तरीका नहीं है? मैंने Postgis 1.5 में निम्नलिखित vievs की कोशिश की है। मुझे Qgis में प्रकाशित करने के लिए एक आईडी कॉलम का उपयोग करने के लिए कहा गया था। यदि आप एक आईडी कॉलम का उपयोग नहीं करते हैं, तो यू किसी त्रुटि के कारण इसे वैसे भी लोड नहीं कर सकता है। 1. देखें या बदलें con_hull_baeume3 (बोली) के रूप में '0' का चयन करें, ST_ConvexHull (ST_Collect (geom)) से baeume; 2. चयनित बोली के रूप में देखें con_hull_baeume4 (बोली) बनाएँ या बदलें, ST_ConvexHull (ST_Collect (geom)) बोली से baeume समूह; लेकिन यह एक ज्यामिति के प्रत्येक बिंदु पर एक उत्तलता बनाता है। मेरा मतलब है कि बस 'ST_ConvexHull (ST_Collect (geom)) FROM baeume का उपयोग करें;' काम करता है
उलान

1
स्वागत हे! कृपया इसे एक नए प्रश्न के रूप में पोस्ट करें, क्योंकि यह मूल उत्तर देने के लिए प्रतीत नहीं होता है। कम से कम अगर यह एक सवाल है, क्योंकि अंतिम कथन स्पष्ट नहीं है कि आप सफल हुए या नहीं।
lynxlynxlynx

जवाबों:


54

मैं पुष्टि कर सकता हूं कि किसी सूचीबद्ध दृश्य का चयन करना संभव नहीं है।

पहले "प्राथमिक कुंजी कॉलम" का चयन करना आवश्यक लगता है। तब तालिका चयन योग्य हो जाती है:

यहाँ छवि विवरण दर्ज करें


1
वाह, मैंने ऐसा कभी नहीं देखा होगा। बहुत बहुत धन्यवाद! मैंने शीर्षक को QGIS के साथ दिखाने के लिए शीर्षक संपादित किया है, PostGIS दृश्य नहीं।
रयानडाल्टन

ऐसा प्रतीत होता है कि यह QGIS 1.8 (जो मैंने अभी तक इस्तेमाल नहीं किया है) के लिए एक मुद्दा है। 1.7 के लिए इन चरणों की आवश्यकता नहीं है।
माइक टी

यह सही है, 1.7 ने प्राथमिक कुंजी का अनुमान लगाने की कोशिश की। लेकिन यह अच्छी तरह से काम नहीं किया।
UnderDark

एक साइड नोट पर, @underdark, क्या QGIS अन्य प्रकार के PK को स्वीकार करता है?
जॉर्ज सिल्वा

1
QGIS3 में कॉलम "प्राथमिक आईडी" नहीं "प्राथमिक कुंजी कॉलम" और (मेरे लिए कम से कम) है, यह डिफ़ॉल्ट विंडो के किनारे से दूर है (यानी दिखाई नहीं देता) और कोई संकेत नहीं है कि अधिक कॉलम थे! मुझे लगता है कि मैं चयन के बाद इन विवरणों (यदि आवश्यक हो) के लिए प्रेरित होने वाले एक सुविधा अनुरोध को लॉग इन करूंगा। ऐसा प्रतीत होता है कि डेवलपर्स यह मानते हैं कि लोग यह सुनिश्चित करेंगे कि पहले कॉलम में एक अद्वितीय कुंजी है।
रसेल फुल्टन

5

(मेरे जवाब को थोड़ा अपडेट करते हुए)

जब तक OBJECTID (row_number) फ़ील्ड दृश्य की स्तंभ परिभाषा में पहली बार है , QGIS आपको 'वेक्टर वेक्टर जोड़ें' मेनू से जोड़ने के लिए कहे बिना उठाएगा

CREATE OR REPLACE VIEW dqmt.addressverify AS 
 SELECT row_number() OVER (ORDER BY newaddresses.addressid) AS objectid,
    newaddresses.addressid
  , geom
   FROM dqmt.newaddresses;

मैंने अभी कुछ पुराने विचार तय किए हैं जो मूल प्रश्न के अनुसार टूट गए थे, लेकिन दृश्य के प्रारंभ में OBJECTID फ़ील्ड को ले जाने से समस्या ठीक हो गई!


मैंने कई दृश्यों के लिए "row_number () over ()" सिंटैक्स का भी उपयोग किया है। मैंने आमतौर पर अपने प्राथमिक कुंजी क्षेत्र के लिए "gid" का उपयोग किया है। क्या आपके अन्य सभी विचार "ऑब्जेक्ट" को उनकी प्राथमिक कुंजी के रूप में उपयोग करते हैं?
रयानडाल्टन 21

आमतौर पर ऑब्जेक्टिड - जो ऊपर दिए गए उदाहरण में काम करता है - लेकिन gid की कोशिश करेगा ... क्या यह है कि कुछ QGIS किसी अन्य 'आईडी' फ़ील्ड से पहले पहचानता है?
DPSSpatial

GID का इस पर कोई प्रभाव नहीं है ...
DPSSpatial

बस संभावनाओं का सपना देख रहा हूं। जाँच के लिए धन्यवाद
रयानडाल्टन ३०'१६

(इस पर देर से, लेकिन ...) एक अनुमान पर, मुझे लगता है कि अगर एक मेज जिसे लोड किया जा रहा PRIMARY KEYहै, उसमें एक परिभाषित है, क्यूजीआईएस नियमित रूप से इसे उठाता है: यह मेरे किसी भी टेबल पर पीके को 'लेने' में विफल नहीं होता है पीके, हालांकि मेरे लगभग सभी पीके हैं VARCHAR। ऐसा VIEWइसलिए नहीं हो सकता क्योंकि PostgreSQL VIEWs के पास नहीं है CONSTRAINT। बहुत यकीन है कि VIEWक्यूजीआईएस को Post ऐड पोस्टजीस लेयर्स ’बटन के माध्यम से आयात करते समय हाथ से पीके का चयन करना आवश्यक है , यही कारण है कि मैं उन्हें पायथन स्क्रिप्ट का उपयोग करके आयात करता हूं।
जी.टी.

4

क्या आपका विचार geometry_columnsतालिका में दिखाई देता है ? मैनुअल के अनुसार दृश्य स्वचालित रूप से 2.0 में दिखाई देना चाहिए लेकिन मैंने इसे आज़माया नहीं है।

जाँच करने के लिए निम्नलिखित कार्य करने का प्रयास करें:

SELECT f_geometry_column As col_name, type, srid, coord_dimension As ndims 
FROM geometry_columns
WHERE f_table_name = 'my_spatial_table' AND f_table_schema = 'my_schema';

हां, मेरे विचार के खिलाफ यह जांच चल रही है: The_geom, Point, 4269,2
रयानडाल्टन

3

क्या आपके दृश्य में एक टेबल से एक "गिद" या पीके के समान एक अद्वितीय पूर्णांक फ़ील्ड का उपयोग किया गया है?

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


हां, जियोनाम्स टेबल में "जियोनामाइड" है जो एक अद्वितीय आईडी है और उस क्षेत्र में एक प्राथमिक कुंजी बाधा है।
रयानडाल्टन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.