Jeffrey Cross
Jeffrey Cross

अंतरिक्ष शटल डेटा से 3 डी प्रिंटिंग स्थलाकृतिक मानचित्र

फरवरी 2000 में स्पेस शटल एंडेवर ने 11 दिन के मिशन को शुरू किया, जिसे शटल रडार टोमोग्राफी मिशन (SRT) के नाम से जाना जाता है। इसका उद्देश्य पृथ्वी के एक उच्च-रिज़ॉल्यूशन डिजिटल स्थलाकृतिक डेटाबेस को उत्पन्न करने के लिए RADAR इंटरफेरोमेट्रिक डेटा एकत्र करना था। परिणामी डेटा डिजिटल एलिवेशन मॉडल (डीईएम) नामक फाइलों का एक संग्रह है। इन फाइलों में अक्षांश के 60 डिग्री से नीचे समुद्र तल से मीटर में ऊंचाई होती है। डेटा का रिज़ॉल्यूशन उत्तरी अमेरिका पर 1 आर्क सेकंड और नॉर्थ अमेरिका के 3 आर्क सेकंड (अधिकांश) पृथ्वी के बाकी भूमि द्रव्यमानों पर है।

नोट: 2014 के पतन के रूप में SRTM डेटा के लिए जिम्मेदार एजेंसी ने 1 आर्क सेकंड रिज़ॉल्यूशन पर बाकी दुनिया के लिए SRTM डेटा जारी करना शुरू कर दिया है। पहला महाद्वीप अफ्रीका जारी किया गया था जिसके बाद के महीनों में दुनिया के अन्य क्षेत्रों में जारी किया गया था।

इस परियोजना का लक्ष्य SRTM उन्नयन 3 चाप के दूसरे डेटा को एक 3 डी सतह में परिवर्तित करना है जिसका उपयोग 3D प्रिंटर का उपयोग करके Raised Relief Maps बनाने के आधार के रूप में किया जा सकता है। इस उद्देश्य के लिए बनाए गए सॉफ्टवेयर को SRTM2STL कहा जाता है। सॉफ्टवेयर एक 3 आर्क सेकंड बाइनरी SRTM फाइल को ऊँचा डेटा के साथ पढ़ता है और इसे त्रिभुजों में परिवर्तित करता है और एक मानक 3 डी फ़ाइल प्रारूप में मानक फ़ाइल को बाइनरी या टेक्स्ट फॉर्मेट में एक सामान्य 3D फ़ाइल प्रारूप में लिखता है। एसटीएल फ़ाइल उत्पन्न होने के बाद इसे आसानी से 3 डी प्रिंटर विक्रेता-प्रदान किए गए स्लाइसिंग सॉफ़्टवेयर में आयात किया जा सकता है। स्लाइसिंग सॉफ्टवेयर डेटा को जी-कोड में परिवर्तित कर देता है, प्रिंटिंग को नियंत्रित करने के लिए 3 डी प्रिंटर द्वारा उपयोग किया जाने वाला फ़ाइल प्रारूप।

SRTM डेटा

SRTM 3 चाप दूसरा डेटा 16 बिट 2 के तारीफ द्विआधारी डेटा के रूप में हस्ताक्षरित है। 3 चाप सेकंड में पृथ्वी के एक डिग्री वर्ग द्वारा एक डिग्री को 1200 में 1200 डेटा बिंदुओं से तोड़ा जाता है। SRTM डेटा 1201 के रूप में 1201 अंक द्वारा संग्रहीत किया जाता है। प्रत्येक डेटा बिंदु को बाइट्स की एक जोड़ी के रूप में संग्रहीत किया जाता है। ये बाइट जोड़े एक 2,884,802 बाइट फ़ाइल (1201 X 1201 * 2 बाइट्स प्रति बिंदु) बनाते हैं। डेटा के प्रत्येक शीर्ष और दाएं किनारे में समीपस्थ वर्ग (1200 + 1) के नीचे और बाएं किनारों के समान डेटा होते हैं। इसका उपयोग पंजीकरण सूचना के रूप में किया जा सकता है, जब फाइलें समाप्‍त हो जाती हैं।

सॉफ्टवेयर

STL फाइलें, SRTM2STL बनाने के लिए सॉफ्टवेयर, सादे (बहुत सादे) वेनिला सी में लिखा गया है। सॉफ्टवेयर को किसी भी प्लेटफॉर्म पर निष्पादन योग्य कार्यक्रम में संकलित किया जा सकता है, यानी सी कंपाइलर के साथ किसी भी मंच, उदाहरण के लिए, जीसीसी।

कलन विधि

एसआरटीएम डेटा को एसटीएल फ़ाइल में बदलने की प्रक्रिया 4 बिंदुओं के प्रत्येक समूह को दो त्रिकोणों में परिवर्तित करके शुरू होती है। प्रत्येक त्रिभुज को अंतरिक्ष में त्रिभुज के स्थान को परिभाषित करने के लिए 3 ट्रिपल पॉइंट x, y और z की आवश्यकता होती है। इसके अतिरिक्त, प्रत्येक त्रिभुज को अंतरिक्ष में अपने अभिविन्यास को परिभाषित करने के लिए एक सामान्य वेक्टर x, y और z की आवश्यकता होती है। सामान्य वेक्टर को राइट हैंड रूल (बाद में वर्णित) के अनुसार परिभाषित की जा रही वस्तु से इंगित करना चाहिए। परिणामी डेटा राहत मानचित्र की सतह बनाता है।

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

SRTM डेटा के लिए 1201 X 1201 डेटा पॉइंट्स के साथ, जिस क्षेत्र की सतह बनाई जा रही है (पक्षों और तल के साथ) में 5759996 त्रिकोण (या पहलू / बहुभुज) होंगे।

होल्स भरना

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

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

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

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

छेद के साथ समस्या से बचने का एक और तरीका है कि आप सही फ़ाइलों को डाउनलोड करें। SRTM टीम द्वारा विभिन्न तकनीकों का उपयोग करके छिद्रों को भरने के लिए बहुत काम किया गया है। सही फ़ाइलों का लिंक संदर्भों में पाया जा सकता है।

कमांड-लाइन विकल्प

प्रोग्राम अपने व्यवहार को नियंत्रित करने के लिए कमांड लाइन विकल्पों का उपयोग करता है। कमांड लाइन का सिंटैक्स इस प्रकार है:

srtm2stl इनपुट आउटपुट [विकल्प]

विकल्प / ए - प्रवर्धन - कारक द्वारा ऊंचाइयों को गुणा करने के लिए। पूर्वाग्रह जोड़ने / घटाने से पहले इसे लागू किया जाता है। / बी - बायस - पूर्णांक होना चाहिए। नक्शा कम करने के लिए नकारात्मक (पतला)। / सी - समन्वित सबसेट - अक्षांश, देशांतर, अक्षांश, देशांतर (दशमलव मिनट)। / एफ - छेद (रैखिक भरण) को ठीक करें। / N - STL ASCII फ़ाइलों में ठोस नाम बदलें। / एच + का अर्थ है छेद के अनुपस्थित निर्देशांक (लापता डेटा) को प्रिंट करना। S | s - सबसेट - Start_Row, Start_Column, Stop_Row, Stop_Column / T + का अर्थ है आउटपुट ASCII प्रारूप / T- का अर्थ है आउटपुट बाइनरी प्रारूप। V - वर्बोज़ आउटपुट चालू करें

बहुभुज बनाना

प्रत्येक बहुभुज जो SRTM2STL द्वारा निर्मित 3 डी सतह के पहलुओं का निर्माण करता है, 3 3-आयामी निर्देशांक, X, Y और Z से बना है। X और Y निर्देशांक देशांतर और अक्षांश का प्रतिनिधित्व करते हैं जबकि Z निर्देशांक भू-तल से ऊपर की ऊंचाई का प्रतिनिधित्व करता है। या मोटे तौर पर, समुद्र तल का मतलब है। मानचित्र की शीर्ष सतह बनाने के लिए हमने 4 आसन्न बिंदुओं का उपयोग किया। उदाहरण के लिए, यदि हम मानचित्र के ऊपरी बाएं हाथ के निर्देशांक में शुरू कर रहे हैं तो हम पहली पंक्ति पर पहले दो बिंदुओं और दूसरी पंक्ति पर पहले दो बिंदुओं का उपयोग करेंगे। पहली बहुभुज पंक्ति 1 पर पहले बिंदु से और दो पंक्ति दो बिंदुओं पर बनाई गई है। दूसरी बहुभुज पहली पंक्ति पर दूसरी बिंदु से और दूसरी पंक्ति पर दो बिंदुओं से बनाई गई है। इसका तात्पर्य है कि दो बहुभुज एक साझा बढ़त रखते हैं, और वे करते हैं।

यहाँ कुछ नमूना डेटा प्रोग्राम द्वारा निर्मित किया गया है जो दो बहुभुज बनाता है। एकल बहुभुज का प्रतिनिधित्व करने वाले डेटा में तीन बिंदुओं का समावेश होता है। प्रत्येक बिंदु तीन निर्देशांक X, Y और Z से बना है। इस उदाहरण में पहला बहुभुज इन तीन बिंदुओं से बना है:

प्वाइंट 1: 0.000000, 0.000000, 223.000000 प्वाइंट 2: 0.000000, 92.408531, 219.000000 प्वाइंट 3: 68.984360, 0.000000, 182.000000

दूसरा बहुभुज निम्नलिखित तीन बिंदुओं (X, Y और Z) से बना है:

प्वाइंट 1: 68.984360, 92.408531, 180.000000 प्वाइंट 2: 0.000000, 92.408531, 219.000000 प्वाइंट 3: 68.984360, 0.000000, 182.000000

तो, शीर्ष सतह चयनित विकल्पों के आधार पर कार्यक्रम द्वारा उत्पन्न सभी बहुभुजों से बनाई गई है। ऊंचाई डेटा SRTM डेटा से निकाला जाता है और इसे प्रोग्राम की मेमोरी में 2 डी सरणी में संग्रहीत किया जाता है। दूरी और इसलिए निर्देशांक, अक्षांश और देशांतर डेटा के प्रत्येक दिशा में प्रति बिंदु दूरी द्वारा सरणी पंक्तियों और स्तंभों के पूर्णांक अनुक्रमित को गुणा करके बनाया जाता है।देशांतर (उत्तर और दक्षिण) की दूरी अक्षांश (पूर्व और पश्चिम) से अलग होती है क्योंकि अक्षांश से दूरी ध्रुवों पर जाते ही छोटी हो जाती है। अक्षांश (पूर्व और पश्चिम) के लिए दूरी 1 डिग्री वर्ग द्वारा 1 डिग्री के नीचे की गणना की जाती है। यह मान पुन: परिकलित करने के लिए अधिक सटीक होगा क्योंकि आप सरणी को पार करते हैं ताकि ’शंकु’ जो स्वाभाविक रूप से मौजूद है, का सही प्रतिनिधित्व हो। व्यावहारिक रूप से, इस दूरी का अंतर ज्यादातर ध्यान देने योग्य नहीं है। इसे भविष्य में एक कार्यक्रम विकल्प के रूप में जोड़ा जा सकता है।

ऊपरी सतह बनने के बाद कार्यक्रम तीन तरफ के बहुभुज जोड़े बनाकर पक्षों और नीचे को बंद कर देता है जैसा कि नीचे की आकृति में देखा जा सकता है।

गणना

आउटपुट एसटीएल फ़ाइल में आवश्यक चीजों में से एक प्रत्येक बहुभुज की सतह के लिए एक सामान्य है। यह सदिश वस्तु के निर्मित होने की ओर इशारा करता है, अर्थात सदिश वस्तु के बाहर की दिशा को इंगित करता है।

सामान्य दाएं हाथ के नियम का उपयोग करके गणना की जाती है। रेखांकन इस तरह दिखता है:

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

क्रॉस उत्पाद की गणना मानती है कि शीर्ष निर्देशांक (0,0,0) हैं। निर्देशांक के तीन सेटों से गणना करने के लिए वैक्टर a और b की गणना अंतिम बिंदु के घटक निर्देशांक से वर्टेक्स के घटक निर्देशांक को घटाकर की जाती है यानी ऊपर चित्र में उंगलियों के सुझावों के निर्देशांक। हम क्रॉस प्रोडक्ट की गणना के लिए इन सामान्यीकृत निर्देशांक का उपयोग करेंगे।

निर्देशांक के तीन सेटों को देखते हुए, जो बहुभुज को r, s और t के रूप में परिभाषित करते हैं, जहां r शीर्ष है और यह देखते हुए कि दाएं हाथ का नियम उस r-> s में सदिश का प्रतिनिधित्व करता है और r-> t सदिश b का प्रतिनिधित्व करता है, तब वैक्टर ए और बी की गणना इस प्रकार है:

ax = sx - rx ay = sy - ry az = sz - rz

bx = tx - rx by = ty - ry bz = tz - rz

क्रॉस उत्पाद, c की गणना a और b से की जाती है:

cx = (ay * bz) - (az * by) cy = (ax * bz) - (az * bx) cz = (ax * by) - (ay * bx)

क्रॉस उत्पाद बहुभुज के सिरों के निर्देशांक के साथ आउटपुट एसटीएल फ़ाइल को लिखा जाता है।

फाइल प्रारूप

एसटीएल फाइलों के लिए दो आउटपुट फाइल फॉर्मेट हैं: टेक्स्ट और बाइनरी। पाठ फ़ाइल प्रारूप पाठ के ASCII फ़ाइल के रूप में डेटा का प्रतिनिधित्व करता है। यहां एक उदाहरण दिया गया है कि एसटीएल डेटा बिंदु पाठ के रूप में क्या दिखता है:

कुछ some_name

पहलू सामान्य 61.678 -65.695 -675.324

बाहरी लूप

शीर्ष 65708.836 30.839 999.000 शीर्ष 65708.836 61.678 1002.000 शीर्ष 65 6530.734 30.839 1001.000

endloop

endfacet

endsolid

ऊपर के उदाहरण में निश्चित रूप से एक से अधिक पहलू (बहुभुज) होंगे। चेहरे की सामान्य संख्या के बाद के तीन नंबर सामान्य के निर्देशांक हैं x, y और z। प्रत्येक शीर्ष तीन बिंदुओं में से एक का एक समन्वय है जो पहलू के एक कोने का प्रतिनिधित्व करता है और इसलिए प्रत्येक में एक एक्स, वाई और एक जेड घटक होता है।

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

निष्कर्ष

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

नीचे 3 डी प्रिंटेड टुकड़ों के साथ 3 डी देखने वाले सॉफ्टवेयर से कुछ पेंचकैप हैं। प्रिंटर का रिज़ॉल्यूशन बेहतर है, बेहतर आउटपुट मॉडल से मेल खाता है।

पेरिटो मोरेनो ग्लेशियर - अर्जेंटीना

माउंट सेंट हेलेंस - ओरेगन

क्रेटर लेक ओरेगन

शेयर

एक टिप्पणी छोड़