QGIS का उपयोग कर नक्शे की सीमा से बाहर उत्पन्न लाइनें प्रदर्शित करना?


12

मैंने निम्न अभिव्यक्ति का उपयोग करते हुए QGIS ज्यामिति जनरेटर का उपयोग करके एक OD प्रवाह मानचित्र तैयार किया है:

make_line( centroid( $geometry ),
centroid( geometry( get_feature( 'Layer2', 'Attribute1', attribute(
           $currentfeature, 'Attribute2') ) ) ) )

मुझे सब कुछ ठीक मिला, विशेषताओं के अनुसार अपनी लाइनों की चौड़ाई को परिभाषित करना।

लेकिन जब मैं "हब" पर ज़ूम करता हूं, तो मैप कैनवास के बाहर के स्थानों से जुड़ी लाइनें दिखाई नहीं देती हैं। मुझे लगता है कि यह इसलिए है क्योंकि सुविधाओं को मानचित्र पर दिखाई नहीं देना चाहिए।

मैंने उन्नत मेनू में "ज्यामिति जनरेटर" और "लाइन" दोनों स्तरों में "क्लिप फीचर्स टू कैनवास हद" विकल्प को अनचेक करने की कोशिश की, लेकिन यह अभी भी प्रकट नहीं होता है।

जब हब पर जूम किया

जब बिना

मैं अपनी सभी लाइनें प्रदर्शित करना चाहूंगा, यहां तक ​​कि हब पर ज़ूम करने पर भी।


यह उपयोगी नहीं होगा ... लेकिन मुझे अंडरडार्क के फ्लो मैपिंग दृष्टिकोण के साथ एक ही मुद्दा मिलता है। घनी ज्यामिति के प्रतिपादन के तरीके के बारे में कुछ होना चाहिए ... केवल सुझाव है कि स्थानीय स्तर के नक्शे के लिए विशेषता चौड़ाई के साथ खेलना है ... चौड़ाई को छोटा करें?
एंड्रयू टाइस

हो सकता है कि आप अपने डेटा (shp ...) को अपलोड कर सकें ताकि आप अपने कदमों को दोहरा सकें और उत्तर पाने का प्रयास कर सकें।
सेसर अरक्वेरो

1
शेपफाइल यहाँ से आता है: IGN और INSEE
mamouthautapis

हो सकता है कि सेगमेंटिंग लाइन मैप पर दिखाई देने के लिए एक हैक हो सकती है, यदि लाइनें केवल ib को दर्शाती हैं, दोनों छोर मैप की सीमा के करीब हैं। ग्रास-टूल 'v.split.length' शायद काम करता है।
जूलियन

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

जवाबों:


2

यहाँ समस्या यह है कि कोई वास्तविक डेटा नहीं है जो कह रहा है कि "यहाँ एक पंक्ति है"। आपकी अभिव्यक्ति लेयर स्टाइलिंग का हिस्सा है, और केवल रेंडरिंग प्रक्रिया में ही सामने आती है जब दो लागू बिंदुओं का भी प्रतिपादन किया जाता है।

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

  1. वेक्टर चयन उपकरण > विशेषता द्वारा निकालें
    • इनपुट परत: 'LAYER_1'
    • चयन विशेषता: 'ATTRIBUTE_1'
    • संचालक: =
    • मूल्य: 'मूल्य बहुभुज का जिक्र'
    • निकाला गया (विशेषता): 'HUB'

  2. वेक्टर चयन उपकरण > विशेषता द्वारा निकालें
    • इनपुट परत: 'LAYER_1'
    • चयन विशेषता: 'ATTRIBUTE_2'
    • ऑपरेटर: आवश्यकतानुसार चुना गया
    • मूल्य: 'मूल्य (एस) बोले बहुभुज का जिक्र'
    • निकाले गए (विशेषता): 'स्पोक'

  3. वेक्टर विश्लेषण उपकरण > निकटतम हब की दूरी
    • स्रोत बिंदु परत: 'स्पोक'
    • गंतव्य हब परत: 'हब'
    • हब लेयर नाम विशेषता: चुने गए विशेषता के आधार पर आउटपुट में "हब नाम" फ़ील्ड बनाता है, यदि इनपुट हब में कई हब निर्दिष्ट किए जाते हैं
    • आउटपुट आकार प्रकार: लाइन टू हब
    • मापन इकाई: मीटर
    • हब दूरी: 'OUTPUT_LAYER_NAME'

परिणामी आउटपुट 'SPOKES' लेयर इनपुट की सभी विशेषताओं को बरकरार रखता है, इसलिए लाइन स्टाइलिंग के लिए आवश्यक विशेषताएँ अभी भी मौजूद रहेंगी। अपनी स्वयं की वेक्टर परत के रूप में, लाइनें सभी ज़ूम स्तरों पर दिखाई देंगी, चाहे किसी भी बिंदु की दृश्यता हो।

यदि आप ग्राफिकल मॉडलर के साथ सहज हैं, तो आप इन चरणों का निर्माण एक एकल प्रक्रिया में भी कर सकते हैं ताकि अनावश्यक परतों के साथ अपने कार्यक्षेत्र को अव्यवस्थित न करें।


3

निम्नलिखित कार्य के आसपास मिला: लाइनों को प्रदर्शित करने के लिए एक ज्यामिति जनरेटर के बजाय एक अतिरिक्त आभासी परत का उपयोग करें ।

आभासी परत की परिभाषा:

select m.FID, make_line(.....) as geometry from my_layer m

(मूल ज्यामिति का उपयोग करके संदर्भित किया जा सकता है m.geometry)

वर्चुअल लेयर रिफ्रेश करने के लिए जब my_layer एडिट होता है, तो लेयर प्रॉपर्टीज पर जाएं निर्भरताएँ और सुनिश्चित करें कि my_layer की जाँच की गई है (जिसे डिफ़ॉल्ट रूप से बाहर निकाला गया है)।

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