QGIS रिटर्न "अवैध परत" संदेश जब PostGIS दृश्य जोड़ने की कोशिश कर रहा है?


14

मैं Postgis और QGIS के लिए नया हूं। मैंने एक दृश्य के रूप में परिभाषित किया

CREATE OR REPLACE VIEW pupr.vstudentmuni AS 
 SELECT m.id AS munid, m.name AS muname, m.geom, s.code, 
    (s.name::text || ' '::text) || s.lastname::text AS fullname
   FROM pupr.municipio m, pupr.student_location l, pupr.student s
  WHERE st_within(l.geom, m.geom) AND s.code = l.code;

PostgreSQL में। QGIS में इस दृश्य को जोड़ने की कोशिश करने से निम्नलिखित त्रुटि होती है ...

"Invalid layer"..."sql= is an invalid layer and cannot be loaded."

पता नहीं है कि समस्या क्या है। geommetry_columnsपोस्टजीआईएस में तालिका में तालिका का उल्लेख किया गया है , लेकिन मैं क्यूजीआईएस में एक संदेश प्रविष्टि देख सकता हूं जो कहता है कि "दृश्य के लिए कोई महत्वपूर्ण क्षेत्र नहीं"। मैं PostgreSQL 9.2 और QGIS 1.8.0 का उपयोग कर रहा हूं।


1
समस्या अद्वितीय कुंजी फ़ील्ड से संबंधित लगती है, आपके पास एक होना चाहिए। मुझे आपका डेटा नहीं पता है, हो सकता है कि आप अपनी क्वेरी के साथ जो हासिल करना चाहते हैं, उसके बारे में थोड़ा और समझा सकें। आप QGIS में परत कैसे खोल रहे हैं? क्या आपने एक कुंजी का चयन किया? आपने जो वर्णन किया है, उससे केवल s.code को अद्वितीय कुंजी के रूप में उपयोग किया जा सकता है। इसके अलावा, प्रत्येक छात्र के लिए आपके मुनिकोपियो ज्यामितीयों को कई बार दोहराया जाएगा, यह है कि आप क्या चाहते हैं?
अलेक्जेंड्रे नेटो

जवाबों:


6

जब आप PostGIS से QGIS में कोई दृश्य जोड़ते हैं, तो आपको विशिष्ट ID फ़ील्ड निर्दिष्ट करना होगा। लेयर नेम के दाईं ओर एक ड्रॉप डाउन होगा जहां आप यह निर्दिष्ट कर सकते हैं कि किस फील्ड का उपयोग करना है। यदि आपके पास एक विशिष्ट आईडी फ़ील्ड नहीं है, तो आप क्वेरी में पंक्ति_नंबर () विंडो फ़ंक्शन का उपयोग करके एक नकली आईडी फ़ील्ड बना सकते हैं जो आपके दृश्य को बनाता है।


यह प्रश्न संबंधित है और QGIS गुई में अपने विशिष्ट आईडी क्षेत्र का चयन करने पर अधिक विवरण देता है।
रयानकाल्टन 15

और यह प्रश्न आपको एक अद्वितीय आईडी के साथ एक दृश्य बनाने के तरीके के बारे में अधिक जानकारी देगा।
15:30 पर रयानकेडलटन

उत्तरों के लिए सभी को धन्यवाद। सुझाए गए फ़ंक्शन का उपयोग करके समस्या हल की गई।
ufeliciano

1

आज मैं इस त्रुटि में एक दृश्य के साथ टकरा गया, जो तालिकाओं के बीच में शामिल होने से बना था। यह दो अनोखे क्षेत्रों को समाप्त करता है जो QGis को परेशान करते हैं। प्रारंभ में दृश्य इस प्रकार था:

CREATE OR REPLACE VIEW my_view AS
SELECT *
  FROM more_data m,
       node n   
 WHERE m.id_node = n.id;

इस तरह दृश्य में दो प्राथमिक प्रमुख क्षेत्र थे। इसके बजाय, मुझे विशिष्ट पहचानकर्ता के लिए एक ही क्षेत्र के उम्मीदवार को समाप्त करने के लिए, परिणामी फ़ील्ड्स को निर्दिष्ट करना पड़ा:

CREATE OR REPLACE VIEW my_view AS
SELECT n.id,
       n.name,
       n.geom,
       m.type,
       m.other_stuff,
       m.more_stuff
  FROM more_data m,
       node n   
 WHERE m.id_node = n.id;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.