स्वचालित रूप से बिंदुओं को स्नैप लाइनें?


19

मेरे पास दो वेक्टर शेपफाइल्स हैं: एक फ़ाइल मैनहोल का प्रतिनिधित्व करती है और दूसरी एक पॉलीलाइन फाइल है जो मैनहोल से जाने और आने वाले पाइप का प्रतिनिधित्व करती है। मुझे निकटतम मैनहोल के लिए एक निर्दिष्ट दूरी के भीतर लाइनों को स्नैप करने की आवश्यकता है।

क्या मैन्युअल रूप से ऐसा किए बिना इसे पूरा करने का एक आसान तरीका है?

तर्ज -> अंक

अपडेट करें

अलेक्जेंड्रे के अनुसार, मैंने अपने आकार-प्रकार को स्थानिक प्रारूप में निर्यात किया है। निश्चित नहीं कि आगे क्या होगा।

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

अपडेट # 2 मैंने एक नई db फाइल बनाई और स्पैटियालाइट-गुई का उपयोग करके नई db में शेपफाइल्स का आयात किया, मैंने अपनी SQL क्वेरी को समायोजित किया लेकिन जैसा कि आप देख सकते हैं कि मुझे "कोई ऐसा कॉलम नहीं मिला: f.geom"

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


एक स्थानिक स्थानिक तालिका (परत) में, विशेषताएँ ज्यामिति एक विशेषता में सहेजी जाती हैं। नाम अलग-अलग हो सकते हैं। "पाइप" तालिका में उस विशेषता को ज्यामिति कहा जाता है। मैं अपने उत्तर को अपडेट करूंगा कि यह एक ज्यामिति विशेषता के रूप में भी है।
अलेक्जेंड्रे नेटो

मुझे एक त्रुटि मिली "ऐसा कोई कार्य नहीं: ST_Snap"। मैं विंडोज 7 64 बिट पर QGIS 1.8 का उपयोग कर रहा हूं।
ग्रेहाउपो

आपके पास क्या स्थानिक है? आप इसे QGIS> हेल्प> अबाउट
अलेक्जेंड्रे नेटो

"ऐसा कोई कॉलम नहीं: f.geom" - f.Geometry
vinayan

मेरा
स्थानिक

जवाबों:


26

आप में अपने डेटा डाल करने के लिए तैयार हैं, तो PostGIS (या Spatialite ), तो आप इस्तेमाल कर सकते हैं ST_Snap आप क्या चाहते हैं क्या करना है।

इनपुट के रूप में बस लाइनों लेयर \ _ का उपयोग करें, और संदर्भ के रूप में आपकी पॉइंट्स लेयर, और सहनशीलता सेट करें। कुछ इस तरह:

SELECT
    f.gid as gid,
    ST_Snap(f.Geometry, g.Geometry, 2) as geom
FROM
    pipe as f,
    (SELECT ST_Collect(Geometry) as Geometry
     FROM mh) as g

परिणाम यह है:

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

आप तब पहचानकर्ता का उपयोग करके अपने ज्यामितीय अपडेट कर सकते हैं।


मैं कोड "Select ... From ..." कहां से डालूंगा? "फीचर आइडेंटिफायर का उपयोग" से क्या मतलब है?
ग्रेहाउपो

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

अलेक्जेंड्रे, ऊपर अद्यतन देखें। मैंने फ़ाइल को दो स्पैलेलाइट फ़ाइलों में निर्यात किया है।
ग्रेहाउपो

आपको दोनों फाइलें एक ही स्पैटियलाइट डेटाबेस में रखनी चाहिए, बस "पाइप" को "mh.sqlite" डेटाबेस में खींचें। उसके बाद "अंक" को "mh", और "लाइनों" को "पाइप" में बदलने के लिए SQL कोड को अपडेट करें। इसके अलावा "gid" को अपनी "पाइप" id में रूपांतरित करें। उसके बाद आप परिणामों को निष्पादित और लोड कर सकते हैं।
अलेक्जेंड्रे नेटो

3

मुझे QGIS या GRASS के बारे में ज्यादा जानकारी नहीं है, लेकिन कुछ त्वरित Googling ने उपज प्राप्त की है । GRASS ने चाल चलनी चाहिए।

इस पोस्ट और इस एक पर एक नजर है ।

QGIS और GRASS के विकल्प:

अगर मैं आर्कजीआईएस में ऐसा करने वाला था, तो मैं संभवतः अपने डेटा को फ़ाइल डेटा में एक फीचर डेटासेट में स्टोर करके जियोडेटाबेस बना सकता हूं और उन क्षेत्रों की पहचान करने के लिए एक टोपोलॉजी बना सकता हूं जहां बिंदु परत लाइनों के समापन बिंदु पर नहीं था। फिर आप त्रुटि निरीक्षक का उपयोग करके त्रुटियों को ठीक कर सकते हैं ।

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


मैंने v.clean को देखा लेकिन यह केवल एक परत का उपयोग करता है, मुझे एक परत की दूसरे से तुलना करने की आवश्यकता है। इसके अलावा, मैं क्यूजीआईएस / ओपनसोर्स विकल्प की तलाश में था।
ग्रेहिपो

1
@ ग्रेहाइपो, GRASS ओपनसोर्स है
कलाकृति 21

1
मुझे पता है कि GRASS ओपन सोर्स है लेकिन आपके अन्य विकल्प नहीं हैं।
ग्रेहाउपो


-1

मैनुअल तरीका है

Qgis -> सेटिंग्स -> तड़क विकल्प (और मुझे यकीन नहीं है लेकिन इसे CadTools एक्सटेंशन की आवश्यकता हो सकती है) और सामयिक संपादन को सक्षम करना चाहिए।

स्वचालित तरीका है

v.clean जो QGIS में SEXTANTE टूलबॉक्स में GRASS टूल्स में है। यदि आपके पास PostGIS 2.0 है तो ST_Snap और ST_SnapToGrid () (और कोई कारण नहीं है कि आप इसका उपयोग क्यों नहीं कर सकते, यह बहुत अच्छा स्थानिक उपकरण है)

वाणिज्यिक तरीका है

FME और MRF टूल (कमर्शियल एक्सटेंशन, मेरे पास इवैल्यूएशन वर्जन था। यह बहुत अच्छा है)।

इसके अलावा, मुझे ओपन सोर्स टूल्स के साथ पानी के पाइप / सीवर प्रबंधन के बारे में जानकारी है, क्या आपके पास कोई संकेत है?


मुझे लगता है कि GreyHippo का मतलब "मैन्युअल रूप से करना" है। तड़क विकल्प का उपयोग करते हुए, आप तड़क को सक्रिय करने के लिए हाथ से हर झूलने वाले नोड को स्थानांतरित करने जा रहे हैं। या क्या मैं कुछ न कुछ भूल रहा हूं?
जेक

नहीं। मैं अंधा था।
19x13

सिम्पलेक्सियो, मैं इसे मैन्युअल रूप से नहीं करना चाहता। मैं एक ऐसे प्लगइन या प्रक्रिया की उम्मीद कर रहा था जिसके बारे में मुझे जानकारी नहीं है।
ग्रेहाउपो

मुझे नहीं लगा कि आप दो परतों पर GRASS v.clean का उपयोग कर सकते हैं?
ग्रेहोपो

1
अगर मुझे याद है तो यह बहुत छोटी लाइनों को ठीक कर सकता है। आप देखते हैं, आपके पास समस्या यह नहीं है कि आपके मैनहोल सही स्थानों पर हैं, इसका मतलब है कि आपका सीवर नेटवर्क स्थैतिक रूप से सही नहीं है। और इसके लिए केवल पाइप लेयर की जरूरत है। हर उपयोगिता नेटवर्क प्रणाली जिसे मैंने देखा है कि हर सीवर चौराहे में मैनहोल है। यह ऑफकोर्स मानता है कि आप सही टोपोलॉजी रखना चाहते हैं।
सिंप्लेक्सियो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.