मैं दो लाइनों के बीच के कोण की गणना करना चाहता हूं जहां वे PostGIS में अंतर करते हैं।
PostGIS में कोण की गणना के लिए प्रारंभिक बिंदु हो रहा है ST_Azimuth - लेकिन यह है कि इनपुट के रूप में अंक लेता है। मेरा पहला विचार अन्तर्विभाजक लाइनों के अंत बिंदुओं को लेना और उन पर एक अजीमुथ गणना करना था। यह काफी अच्छा नहीं है, क्योंकि ज्यादातर लाइन की विशेषताएं सीधी नहीं हैं, और मुझे चौराहे पर कोण में दिलचस्पी है। तो मैं एक नेस्टेड ऑपरेशन के साथ आया था जो निम्नलिखित चरणों से गुजरता है:
- दो पंक्ति सुविधा तालिकाओं के बीच के सभी चौराहों को पहचानें।
- चौराहे बिंदु के आसपास एक बहुत छोटा बफर बनाएं
- उन बिंदुओं को पहचानें जहां रेखा की विशेषताएं बफर बाहरी को काटती हैं (पहला बिंदु लेने पर अगर एक से अधिक हैं - मुझे वास्तव में केवल इस बात में दिलचस्पी है कि क्या कोण 0, 90 या 180 डिग्री के करीब है)
- उन दो बिंदुओं के लिए ST_Azimuth की गणना करें।
पूर्ण एसक्यूएल यहाँ पोस्ट करने के लिए लंबा है, लेकिन अगर आप रुचि रखते हैं, तो मैंने इसे यहाँ प्रस्तुत किया । (वैसे, क्या बयानों के साथ नीचे जाने वाले सभी क्षेत्रों को ले जाने की तुलना में बेहतर तरीका है?)
परिणाम सही नहीं लगते हैं, इसलिए मैं स्पष्ट रूप से कुछ गलत कर रहा हूं:
EDIT I की गणना EPSG: 3785 में की गई है और परिणाम थोड़े अलग हैं लेकिन फिर भी सही नहीं हैं:
मेरा सवाल है कि इस प्रक्रिया में खामियां कहां हैं। क्या मैं गलत समझ रहा हूं कि ST_Azimuth क्या करता है? क्या कोई सीआरएस मुद्दा है? कुछ और पूरी तरह से? या शायद ऐसा करने के लिए एक बहुत, बहुत सरल तरीका है?