QGIS में एक और परत द्वारा ओवरलैप किए जाने पर लेबलिंग सुविधाओं से परहेज?


16

QGIS 2.12.2 के साथ, मैं लेबल रखने से बचने के लिए लेयर लेबलिंग कैसे सेट कर सकता हूं, जहां एक और लेयर की विशेषताएँ पहले से मौजूद हैं?

उदाहरण के लिए, यदि मेरे पास एक धारा / नदी की पॉलीलाइन परत है जिसमें झील "सेंटलाइन्स" शामिल है, और मैं ड्राइंग ऑर्डर में इसके ऊपर एक "झील" बहुभुज परत रखता हूं, मैं नहीं चाहता कि नदी की परत झील के अंदर एक लेबल लगाएं। । इसके बजाय, मैं नदी को झील के बाहर लेबल कर दूंगा (आवश्यकतानुसार)। इस तरह, मैं झीलों की परत से लेबल रख सकता हूं और मैं लेबल टकरावों में नहीं चलता।

यहां एक उदाहरण है, जहां (मैंने जानबूझकर दृश्य उद्देश्यों के लिए शीर्ष पर लाइनें लगाई हैं) मैं जो हासिल करने की उम्मीद कर रहा हूं वह झील बहुभुज के अंदर दिखाए गए कोई नदी केंद्र-रेखा लेबल नहीं है: लाइनें बहुभुज के अंदर लेबल कर रही हैं


4
आपका डेटा कैसे संग्रहीत और सेवा किया जाता है? PostGIS के साथ काम करते हुए, मुझे अपनी नदियों को एक दृश्य के साथ परिभाषित करने के लिए लुभाया जाएगा, जहां झीलों को पार करने वाली नदियों के हिस्सों को पूरी तरह से बंद कर दिया जाता है। अच्छी स्वचालित लेबलिंग एक कठिन समस्या है, ज्यामिति कम है।
अल्फाबेटसअप

ये आकार-प्रकार थे, लेकिन PostGIS में जाने और मक्खी पर डेटा मुद्दों को प्रबंधित करने का आपका विचार वास्तव में अच्छा है। मेरा सुझाव है कि आप अपनी टिप्पणी को एक उत्तर में स्थानांतरित कर देंगे, क्योंकि मैं एक बहुत अच्छा तर्क दे सकता हूं कि यह एक अच्छा संकल्प है।
रयानकैल्टन

जवाबों:


9

स्वचालित लेबलिंग वास्तव में एक कठिन समस्या है, लेकिन फीचर ज्यामिति इतनी बुरी नहीं है।

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

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

* मुझे लगता है कि सुविधा के लिए, PostgreSQL / PostGIS जैसे RDBMS का उपयोग केवल डेटा के अपने आधिकारिक स्रोत को अपडेट करने और आपके हस्तक्षेप के बिना ही देखने का कार्य करने की क्षमता है। लेकिन आप स्टैटिक फाइल्स के साथ कुछ काम भी कर सकते हैं, फीचर्स को क्लिप और डिलीट करने के लिए, लेकिन अगर आप कभी मैप को रिवाइज करने की योजना बनाते हैं तो मैं इसकी सलाह नहीं देता।

उदाहरण:

नदियों और झीलों के दो शेपफाइल्स (डेटाबेस टेबल हो सकते हैं) के साथ शुरू, नदियों के साथ झीलों को काटते हुए और लेबलिंग मुद्दों के कारण जो पूरी तरह और आत्मविश्वास से हल करना मुश्किल है:

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

यदि आप shp2pgsql के साथ की जरूरत है तो Postgres में इन्हें लाएं :

shp2pgsql -s 4326 /data/lake public.lakes | psql -d mydb

shp2pgsql -s 4326 /data/river public.rivers | psql -d mydb

फिर ST_Difference के साथ एक दृश्य परिभाषित करें :

CREATE OR REPLACE VIEW rivers_clipped AS
SELECT r.id, ST_Difference(r.geom, l.geom) AS geom, r.name
FROM public.rivers AS r, public.lakes AS l;

अपने लेआउट में दृश्य जोड़ें:

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

यद्यपि मेरे उदाहरण में समस्या जानबूझकर गढ़ी गई है, दो नदी की परतों (मूल और दृश्य) में शैली समान हैं, और उन्हें ड्राइंग ऑर्डर में झील के ऊपर रखा गया है। जब आप झीलों या नदियों के ज्यामिति को अपडेट करते हैं, तो आपको रेंडरिंग को रीफ्रेश करने से ज्यादा कुछ करने की जरूरत नहीं होगी।

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


2
जब मैं सीधे एक DB परत के साथ काम नहीं कर रहा था, इस समाधान ने मुझे सबसे अधिक समझ में आता है, क्योंकि इसे प्रारंभिक डेटा स्रोतों की ज्यामिति (DB में लोड करने के अलावा) को संपादित करने की आवश्यकता नहीं थी। यह शेपफाइल्स और एप्लिकेशन सीमाओं के बॉक्स के बाहर सोचने और आवेदन और DB तर्क दोनों के संयोजन से समस्या का एक रचनात्मक समाधान खोजने का एक बड़ा उदाहरण है।
रयानKalton

13

QGIS> = 2.12 में आप "झील" बहुभुज परत को एक लेबल बाधा के रूप में सेट कर सकते हैं। यह "लेबल" अनुभाग के तहत, "झील" परत के परत गुणों के माध्यम से किया जाता है। शीर्ष पर कॉम्बो बॉक्स को " नो लेबल " से बदलकर " अन्य लेयर्स को इस लेयर में कवरिंग फीचर्स से हतोत्साहित " करें।


1
धन्यवाद। मैं ऐसा कुछ खोज रहा था, और पहले उस ड्रॉप-डाउन विकल्प पर ध्यान नहीं दिया था। हालाँकि, मैं कहूंगा कि यह केवल मामूली सफल था। 1) यह नदी की परत से केवल "तरह-तरह के" हतोत्साहित लेबल हैं (वे अभी भी झील के भीतर दिखाई देते हैं, लेकिन कम-तो), और 2) अब मेरे पास मेरे झील के नाम लेबल नहीं हैं :( मैंने रिवर लेबल> ऑब्सटर्ल्स "कवरिंग फीचर्स (नो सक्सेस) से डिस्चार्ज लेबल्स" और कम व हाई (नो सक्सेस) सेट करने और प्लेसमेंट> प्रायोरिटी = लो एंड हाई (नो सक्सेस) सेट करने की भी कोशिश की है।
रयानकेटलन

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

1
नहीं, आप निश्चित रूप से सही रास्ते पर थे। मैंने वज़न के साथ खेला (झील के बहुभुजों पर अधिक वजन + "सुविधाओं के इंटीरियर पर लेबल कम से कम करना, नदियों पर कम वजन) और करीब पहुंच गया, लेकिन कभी भी उस बिंदु पर नहीं पहुंचा जहां नदी लेबल झील पर नहीं थे। मुद्दा था। बहुभुज के अंदर और बाहर दोनों लाइनों के साथ जुड़ा हुआ प्रतीत होता है।
रयानKalton

4
जब आप लेबलिंग की बात करते हैं तो आप उन लाइनों को क्यों नहीं हटाते (या विभाजित करते हैं)? वे वैसे भी आपके नक्शे के लिए उपयोगी नहीं हैं।
राडौक्सजू

4

मुझे सामान्य रूप से लेबलिंग बहुत कम लगती है, कम से कम ऐसे लेबल उत्पन्न करने के लिए जो मेरे कार्टोग्राफर के होश उड़ा दें। जबकि स्वचालित लेबलिंग सुविधा 80% ठीक काम करती है, आपके नदी / झील लेबलिंग समस्या जैसे मामले हैं जहां यह अच्छी लेबलिंग उत्पन्न नहीं करता है। स्वचालित लेबलिंग को अक्सर फीचर की ज्यामिति से जोड़ा जाता है, जैसे कि कितने भाग एक पंक्ति में होते हैं ताकि पहले सभी भागों को लेबल किया जा सके। बेशक QGIS का मतलब बार-बार लेबलिंग को रोकना है, जो वर्तमान मानचित्र दृश्य के पैमाने पर भी निर्भर करता है।

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

खैर, मुझे डर है कि मेरी टिप वह नहीं है जिसकी आपको उम्मीद थी, लेकिन मुझे उम्मीद है कि मेरा वैकल्पिक दृष्टिकोण मेरी मदद से आपको किसी तरह मदद करेगा।


आप एक वैध बिंदु बनाते हैं कि मैं एक नया डेटासेट बना सकता हूं (जो इस मामले में करना आसान होगा ... बस पॉलीगॉन के तहत लाइन की विशेषताओं को मिटा दें), डेटासेट को दोगुना करना बहुत आकर्षक या प्रबंधनीय नहीं लगता, जब तक कि आप उपयोग न करें @Richard Law जैसी डेटाबेस-संचालित विधि का उल्लेख किया गया है।
रयानकैल्टन

मैं आपकी बात देखता हूं और दो बार एक समान डेटासेट बनाने में आपकी हिचकिचाहट को समझता हूं। मेरे अनुभव में लेबल परत मूल डेटा परत की तुलना में अक्सर अधिक भिन्न होती है। उदाहरण के लिए, अपनी नदी के उदाहरण के साथ रहने के लिए, आप एक नदी के ज्यामिति को बदलने के लिए और फीचर भागों को विभाजित करने के लिए बदलना चाह सकते हैं ताकि एक अच्छा लेबलिंग बनाया जा सके जो कि अधिक नियमित रूप से दोहराया जाता है। कम से कम यह मेरे लिए अक्सर ऐसा होता है जब उदाहरण के लिए OSM सड़कों के साथ काम करते हैं जो कभी-कभी काफी मनमाने ढंग से व्यवस्थित होते हैं।
फ्रैंक

3

एक प्लगइन है जिसे " मास्क " कहा जाता है जिसका उपयोग बहुभुजों के आधार पर लेबल को फ़िल्टर करने के लिए किया जा सकता है।

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


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