विकिपिडिया
newiki
https://ne.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A5%8D%E0%A4%AF_%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0
MediaWiki 1.47.0-wmf.16
first-letter
मीडिया
विशेष
वार्तालाप
प्रयोगकर्ता
प्रयोगकर्ता वार्ता
विकिपिडिया
विकिपिडिया वार्ता
चित्र
चित्र वार्ता
मीडियाविकि
मीडियाविकि वार्ता
ढाँचा
ढाँचा वार्ता
मद्दत
मद्दत वार्ता
श्रेणी
श्रेणी वार्ता
पोर्टल
पोर्टल वार्ता
मस्यौदा
मस्यौदा वार्ता
TimedText
TimedText talk
मोड्युल
मोड्युल वार्तालाप
Event
Event talk
उपरदाङगढी
0
6619
1372312
1357656
2026-08-25T14:54:32Z
पर्वत सुवेदी
31224
/* इतिहास */
1372312
wikitext
text/x-wiki
{{Infobox military installation
| name = {{पृष्ठको नाम}}
| native_name =
| partof =
| location = [[इच्छाकामना गाउँपालिका|इच्छाकामना]] - ७ [[दाहाखानी|दहखानी]], [[चितवन जिल्ला|चितवन]]
| image = File:उपरदाङगढीको परिचय.jpg
| image_size =
| caption =
| type = गढी
| coordinates = {{coord|27.45|84.34|type:adm2nd_region:NP_source:unmaps-enwiki|display=inline,title}}
| image_map =
| image_map_caption =
| controlledby = [[इच्छाकामना गाउँपालिका]]
| open_to_public = छ
| built = लगभग वि.सं १८००
| used =
| builder = शत्रुभन्जन शाह
| materials = ढुङ्गा
| height =
| condition =
| battles = [[नेपाल अङ्ग्रेज युद्ध]]
| website = [http://www.ctdc.org.np/np/index.php?option=com_content&view=article&id=83&Itemid=70 आधिकारिक वेबसाइट]
}}
'''उपरदाङगढी''' [[चट्टान|ढुङ्गा]]ले बनाइएको चित्तार्कषक गढी हो। यो गढी [[पृथ्वीनारायण शाह]]का कान्छा छोरा राजकुमार [[बहादुर शाह]]को छोरा शत्रुभन्जन शाहले बनाएका थिए। यो गढी भर्खरै [[नेपालको एकीकरण]] हुँदै गर्दा [[नेपाल]] र [[ब्रिटिस राज|अङ्ग्रेज]]सँग हुनसक्ने सम्भावित भिडन्तलाई ख्याल गरी बनाइएको थियो। निर्माणपछि प्रशासनिक र व्यापारिक केन्द्र बनेको उपरदाङगढी [[चितवन जिल्ला]]को पुरानो सदरमुकाम रहेको गढी हो।<ref>{{Cite web|url=https://www.kayakairan.com/archives/19785|title=उपरदाङगढी ओझेलमा, सिराइचुली बेवारिसे|author=|website=कायाकैरन|date=|accessdate=२२ साउन २०८१|language=नेपाली|work=|publisher=}}</ref> [[पहाड]]को टाकुरामा रहेको गढी र [[यातायात]]को असुविधाले गर्दा वि.सं. २०१६ सालमा यहाँबाट सदरमुकाम [[भरतपुर महानगरपालिका|भरतपुर]] सारिएको थियो।<ref>{{Cite web|url=https://www.onlinekhabar.com/2016/10/495229|title=नेपाल-अंग्रेज युद्धस्थल उपरदाङगढी ओझेलमा|author=|website=अनलाइन खबर|date=|accessdate=२२ साउन २०८१|language=नेपाली|work=|publisher=}}</ref> [[नेपालको पूर्व प्रशासनिक विभाजन]] अनुसार यो [[दाहाखानी|दहखानी]] वडा नम्बर ३ मा पर्दछ भने हाल यस क्षेत्र [[इच्छाकामना गाउँपालिका]]मा पर्दछ। यहाँबाट [[मनास्लु हिमाल|मनास्लु]], गणेश लगायतका हिमालहरू अवलोकन गर्न सकिन्छ। [[शक्तिखोर]]बाट लगभग एक घण्टामा यहाँ पुग्न सकिन्छ।
== इतिहास ==
[[चितवन जिल्ला]]को पूर्व सदरमुकाम समेत हो।
वि.सं २०१४ सालसम्म महत्वपूर्ण सरकारी अड्डा र अदालत सबै यसै क्षेत्रमा रहेका थिए।<ref>{{वेब स्रोत|शीर्षक=बदलिँदो चितवनका साक्षी, जसले देखे उपरदाङगढीको पुरानो चहलपहल|युआरएल=https://ekantipur.com/feature/2026/08/25/a-witness-to-the-changing-chitwan-who-saw-the-old-hustle-and-bustle-of-upardanggadhi-09-20.html|प्रथम=रमेशकुमार|अन्तिम=पौडेल|वेबसाइट=कान्तिपुर|भाषा=नेपाली|मिति=८ भदौ २०८३|पहुँचमिति=९ भदौ २०८३}}</ref> [[नेपालको पूर्व प्रशासनिक विभाजन]] अनुसार यो [[दाहाखानी|दहखानी]] वडा नम्बर ३ मा पर्दछ भने हाल यस क्षेत्र [[इच्छाकामना गाउँपालिका]]मा पर्दछ।
समुद्र सतह देखि १२७५ मिटरको उचाइमा पर्ने यस गढी [[नेपालको एकीकरण]] ताका अङ्ग्रेज विरुद्धको युद्धको बेलामा नेपाली भूमि रक्षा गर्नका लागि बनाइएको थियो।<ref>{{Cite web|url=https://nagariknews.nagariknetwork.com/arts/1027831-1671241590.html|title=चितवनको पुरानो छवि: उपरदाङगढी|author=|website=नागरिक दैनिक|date=|accessdate=२२ साउन २०८१|language=नेपाली|work=|publisher=}}</ref>
== चित्र दीर्घा ==
[[File:उपरदाङगढी.jpg|thumb|220px]]
== सन्दर्भ सामग्रीहरू ==
{{सन्दर्भसूची}}
[[श्रेणी:नेपालका गढीहरू]]
[[श्रेणी:चितवन जिल्लाका ठाउँहरू]]
amj1q7t1o6rgeyimzj58w58yfjmhj0f
1372313
1372312
2026-08-25T14:56:06Z
पर्वत सुवेदी
31224
/* */
1372313
wikitext
text/x-wiki
{{Infobox military installation
| name = {{पृष्ठको नाम}}
| native_name =
| partof =
| location = [[इच्छाकामना गाउँपालिका|इच्छाकामना]] - ७ [[दाहाखानी|दहखानी]], [[चितवन जिल्ला|चितवन]]
| image = File:उपरदाङगढीको परिचय.jpg
| image_size =
| caption =
| type = गढी
| coordinates = {{coord|27.76|84.58|type:adm2nd_region:NP_source:unmaps-enwiki|display=inline,title}}
| image_map =
| image_map_caption =
| controlledby = [[इच्छाकामना गाउँपालिका]]
| open_to_public = छ
| built = लगभग वि.सं १८००
| used =
| builder = शत्रुभन्जन शाह
| materials = ढुङ्गा
| height =
| condition =
| battles = [[नेपाल अङ्ग्रेज युद्ध]]
| website = [http://www.ctdc.org.np/np/index.php?option=com_content&view=article&id=83&Itemid=70 आधिकारिक वेबसाइट]
}}
'''उपरदाङगढी''' [[चट्टान|ढुङ्गा]]ले बनाइएको चित्तार्कषक गढी हो। यो गढी [[पृथ्वीनारायण शाह]]का कान्छा छोरा राजकुमार [[बहादुर शाह]]को छोरा शत्रुभन्जन शाहले बनाएका थिए। यो गढी भर्खरै [[नेपालको एकीकरण]] हुँदै गर्दा [[नेपाल]] र [[ब्रिटिस राज|अङ्ग्रेज]]सँग हुनसक्ने सम्भावित भिडन्तलाई ख्याल गरी बनाइएको थियो। निर्माणपछि प्रशासनिक र व्यापारिक केन्द्र बनेको उपरदाङगढी [[चितवन जिल्ला]]को पुरानो सदरमुकाम रहेको गढी हो।<ref>{{Cite web|url=https://www.kayakairan.com/archives/19785|title=उपरदाङगढी ओझेलमा, सिराइचुली बेवारिसे|author=|website=कायाकैरन|date=|accessdate=२२ साउन २०८१|language=नेपाली|work=|publisher=}}</ref> [[पहाड]]को टाकुरामा रहेको गढी र [[यातायात]]को असुविधाले गर्दा वि.सं. २०१६ सालमा यहाँबाट सदरमुकाम [[भरतपुर महानगरपालिका|भरतपुर]] सारिएको थियो।<ref>{{Cite web|url=https://www.onlinekhabar.com/2016/10/495229|title=नेपाल-अंग्रेज युद्धस्थल उपरदाङगढी ओझेलमा|author=|website=अनलाइन खबर|date=|accessdate=२२ साउन २०८१|language=नेपाली|work=|publisher=}}</ref> [[नेपालको पूर्व प्रशासनिक विभाजन]] अनुसार यो [[दाहाखानी|दहखानी]] वडा नम्बर ३ मा पर्दछ भने हाल यस क्षेत्र [[इच्छाकामना गाउँपालिका]]मा पर्दछ। यहाँबाट [[मनास्लु हिमाल|मनास्लु]], गणेश लगायतका हिमालहरू अवलोकन गर्न सकिन्छ। [[शक्तिखोर]]बाट लगभग एक घण्टामा यहाँ पुग्न सकिन्छ।
== इतिहास ==
[[चितवन जिल्ला]]को पूर्व सदरमुकाम समेत हो।
वि.सं २०१४ सालसम्म महत्वपूर्ण सरकारी अड्डा र अदालत सबै यसै क्षेत्रमा रहेका थिए।<ref>{{वेब स्रोत|शीर्षक=बदलिँदो चितवनका साक्षी, जसले देखे उपरदाङगढीको पुरानो चहलपहल|युआरएल=https://ekantipur.com/feature/2026/08/25/a-witness-to-the-changing-chitwan-who-saw-the-old-hustle-and-bustle-of-upardanggadhi-09-20.html|प्रथम=रमेशकुमार|अन्तिम=पौडेल|वेबसाइट=कान्तिपुर|भाषा=नेपाली|मिति=८ भदौ २०८३|पहुँचमिति=९ भदौ २०८३}}</ref> [[नेपालको पूर्व प्रशासनिक विभाजन]] अनुसार यो [[दाहाखानी|दहखानी]] वडा नम्बर ३ मा पर्दछ भने हाल यस क्षेत्र [[इच्छाकामना गाउँपालिका]]मा पर्दछ।
समुद्र सतह देखि १२७५ मिटरको उचाइमा पर्ने यस गढी [[नेपालको एकीकरण]] ताका अङ्ग्रेज विरुद्धको युद्धको बेलामा नेपाली भूमि रक्षा गर्नका लागि बनाइएको थियो।<ref>{{Cite web|url=https://nagariknews.nagariknetwork.com/arts/1027831-1671241590.html|title=चितवनको पुरानो छवि: उपरदाङगढी|author=|website=नागरिक दैनिक|date=|accessdate=२२ साउन २०८१|language=नेपाली|work=|publisher=}}</ref>
== चित्र दीर्घा ==
[[File:उपरदाङगढी.jpg|thumb|220px]]
== सन्दर्भ सामग्रीहरू ==
{{सन्दर्भसूची}}
[[श्रेणी:नेपालका गढीहरू]]
[[श्रेणी:चितवन जिल्लाका ठाउँहरू]]
m43vtagl25s7mnd8jgs7nxliu4qdw9l
1372341
1372313
2026-08-26T03:25:51Z
पर्वत सुवेदी
31224
/* */
1372341
wikitext
text/x-wiki
{{Infobox military installation
| name = {{पृष्ठको नाम}}
| native_name =
| partof =
| location = [[इच्छाकामना गाउँपालिका|इच्छाकामना]] - ७ [[दाहाखानी]], [[चितवन जिल्ला|चितवन]]
| image = File:उपरदाङगढीको परिचय.jpg
| image_size =
| caption =
| type = गढी
| coordinates = {{coord|27.76|84.58|type:adm2nd_region:NP_source:unmaps-enwiki|display=inline,title}}
| image_map =
| image_map_caption =
| controlledby = [[इच्छाकामना गाउँपालिका]]
| open_to_public = छ
| built = लगभग वि.सं १८००
| used =
| builder = शत्रुभन्जन शाह
| materials = ढुङ्गा
| height =
| condition =
| battles = [[नेपाल अङ्ग्रेज युद्ध]]
| website = [http://www.ctdc.org.np/np/index.php?option=com_content&view=article&id=83&Itemid=70 आधिकारिक वेबसाइट]
}}
'''उपरदाङगढी''' [[चट्टान|ढुङ्गा]]ले बनाइएको चित्तार्कषक गढी हो। यो गढी [[पृथ्वीनारायण शाह]]का कान्छा छोरा राजकुमार [[बहादुर शाह]]को छोरा शत्रुभन्जन शाहले बनाएका थिए। यो गढी भर्खरै [[नेपालको एकीकरण]] हुँदै गर्दा [[नेपाल]] र [[ब्रिटिस राज|अङ्ग्रेज]]सँग हुनसक्ने सम्भावित भिडन्तलाई ख्याल गरी बनाइएको थियो। निर्माणपछि प्रशासनिक र व्यापारिक केन्द्र बनेको उपरदाङगढी [[चितवन जिल्ला]]को पुरानो सदरमुकाम रहेको गढी हो।<ref>{{Cite web|url=https://www.kayakairan.com/archives/19785|title=उपरदाङगढी ओझेलमा, सिराइचुली बेवारिसे|author=|website=कायाकैरन|date=|accessdate=२२ साउन २०८१|language=नेपाली|work=|publisher=}}</ref> [[पहाड]]को टाकुरामा रहेको गढी र [[यातायात]]को असुविधाले गर्दा वि.सं. २०१६ सालमा यहाँबाट सदरमुकाम [[भरतपुर महानगरपालिका|भरतपुर]] सारिएको थियो।<ref>{{Cite web|url=https://www.onlinekhabar.com/2016/10/495229|title=नेपाल-अंग्रेज युद्धस्थल उपरदाङगढी ओझेलमा|author=|website=अनलाइन खबर|date=|accessdate=२२ साउन २०८१|language=नेपाली|work=|publisher=}}</ref> [[नेपालको पूर्व प्रशासनिक विभाजन]] अनुसार यो [[दाहाखानी]] वडा नम्बर ३ मा पर्दछ भने हाल यस क्षेत्र [[इच्छाकामना गाउँपालिका]]मा पर्दछ। यहाँबाट [[मनास्लु हिमाल|मनास्लु]], गणेश लगायतका हिमालहरू अवलोकन गर्न सकिन्छ। [[शक्तिखोर]]बाट लगभग एक घण्टामा यहाँ पुग्न सकिन्छ।
== इतिहास ==
[[चितवन जिल्ला]]को पूर्व सदरमुकाम समेत हो।
वि.सं २०१४ सालसम्म महत्वपूर्ण सरकारी अड्डा र अदालत सबै यसै क्षेत्रमा रहेका थिए।<ref>{{वेब स्रोत|शीर्षक=बदलिँदो चितवनका साक्षी, जसले देखे उपरदाङगढीको पुरानो चहलपहल|युआरएल=https://ekantipur.com/feature/2026/08/25/a-witness-to-the-changing-chitwan-who-saw-the-old-hustle-and-bustle-of-upardanggadhi-09-20.html|प्रथम=रमेशकुमार|अन्तिम=पौडेल|वेबसाइट=कान्तिपुर|भाषा=नेपाली|मिति=८ भदौ २०८३|पहुँचमिति=९ भदौ २०८३}}</ref> [[नेपालको पूर्व प्रशासनिक विभाजन]] अनुसार यो [[दाहाखानी|दहखानी]] वडा नम्बर ३ मा पर्दछ भने हाल यस क्षेत्र [[इच्छाकामना गाउँपालिका]]मा पर्दछ।
समुद्र सतह देखि १२७५ मिटरको उचाइमा पर्ने यस गढी [[नेपालको एकीकरण]] ताका अङ्ग्रेज विरुद्धको युद्धको बेलामा नेपाली भूमि रक्षा गर्नका लागि बनाइएको थियो।<ref>{{Cite web|url=https://nagariknews.nagariknetwork.com/arts/1027831-1671241590.html|title=चितवनको पुरानो छवि: उपरदाङगढी|author=|website=नागरिक दैनिक|date=|accessdate=२२ साउन २०८१|language=नेपाली|work=|publisher=}}</ref>
== चित्र दीर्घा ==
[[File:उपरदाङगढी.jpg|thumb|220px]]
== सन्दर्भ सामग्रीहरू ==
{{सन्दर्भसूची}}
[[श्रेणी:नेपालका गढीहरू]]
[[श्रेणी:चितवन जिल्लाका ठाउँहरू]]
pfev5xzdkf9wk2a2pxx2xm8yok28gh7
बडिमालिका मन्दिर
0
10918
1372323
1372300
2026-08-26T00:41:32Z
Rajeeb bastola
39875
1372323
wikitext
text/x-wiki
{{Short description|Hindu temple in Sudurpashchim, Nepal}}
{{more citations needed|date=August 2020}}
{{Infobox Mandir
|name = Badamalika temple
|image = Badi Malika.png
|
|alt = Temple premises
|caption =
|pushpin_map = Nepal
|pushpin_caption = Badimalika Temple in Nepal
|coordinates = {{coord|29.346916|81.477488|type:landmark_region:NP|display=inline,title}}
|sanskrit_translit =
|country = {{flag|Nepal}}
|state = [[Seti zone|Seti]]
|district = [[Bajura district|Bajura]]
|location = [[Kailashmandau]], [[Bajura district|Bajura]] <ref>{{cite web|URL= http://fwdc.gov.np/ne/%E0%A4%A7%E0%A4%BE%E0%A4%B0%E0%A5%8D%E0%A4%AE%E0%A4%BF%E0%A4%95-%E0%A4%B8%E0%A5%8D%E0%A4%A5%E0%A4%BE%E0%A4%A8%E0%A4%B9%E0%A4%B0%E0%A5%81 |title= धार्मिक स्थलहरु |language= Nepali |publisher= www.fwdc.gov.np}}</ref>
|elevation_m =
|deity = [[Shakti]]
|festival = [[Ganga Dussehra]], Shrwan Shukla chaturdashi
|architecture = Pagoda Style
|temple_quantity =
|monument_quantity =
|inscriptions =
|creator =
|website =
|mapframe = yes
|mapframe-zoom = 12
|mapframe-wikidata = yes
}}
== पृष्ठभूमि ==
'''बडीमालिका''' विश्वका प्रमुख हिन्दु मन्दिरहरूमध्येको एक प्रशिद्ध मन्दिर हो । यो मन्दिर नेपालको सुदूरपश्चिम प्रदेशको बाजुरा जिल्लाको त्रिवेणी नगरपालिकामा वडा नं. ६ पन्धारामा पर्दछ । यहाँ प्रत्येक वर्ष साउन शुक्ल त्रयोदशी देखि चतुर्दशीका दिन मुख्य पूजा तथा हवन गरिन्छ । गंगा दशहरामा यहाँको पाती प्रसाद खप्तडमा ल्याएर चढाउने गरिन्छ । बडीमालिकामा २ जिल्लाका पुजारीहरुले पूजा गर्छन् । यी मध्ये १ बाजुरा जिल्लाको त्रिवेणी नगरपालिका वडा नं. ९ पैमाका हुन् भने अर्को कालिकोटका हुन् । हाल बाजुराबाट मुख्य पुजारीको रुपमा नेत्र पाध्याय रहेका छन् भने कालिकोटबाट हरी धमाला रहेका छन् ।
[[File : Badimalika Temple, Bajura, Nepal.jpg|thumb|बडीमालिका मन्दिर|300px]]
सम्वत् २०८२ सालमा यहाँको पुरानो मन्दिरको जिर्णोद्वार गरी नेपाली सेनाद्वारा नयाँ मन्दिर निर्माण गरिएको छ । बडीमालिका मन्दिर समुन्द्री सतहबाट ४,२२० मीटर उचाईमा अवस्थित छ । जुन विश्वमा रहेका हिन्दु मन्दिरहरुमध्ये सबैभन्दा अग्लो स्थानमा रहेको हिन्दु मन्दिर हो ।
बडीमालिका दर्शनका लागि जाने भक्तजनहरुले त्रिवेणी हुँदै जानु पर्ने हुन्छ । त्रिवेणी बाजुरा जिल्लाको त्रिवेणी नगरपालिका र कालिकोटको रास्कोट नगरपालिकाको सिमाना हो । यसको मुख्य भाग बाजुरा जिल्लाको त्रिवेणी नगरपालिका वडा नं. ५ किम्नीमा पर्दछ । बडीमालिका, त्रिवेणी बहुमूल्य जडिबुटीको भण्डार पनि हो ।
==किंवदन्ती==
पौराणिक कथा अनुसार [[शिव|महादेव]]की पत्नी [[सतिदेवी]]का पिता [[दक्ष प्रजापति]]ले यज्ञ गर्दा महादेव र सतिदेवीलाई बोलाएनन् । आफ्ना पति र आफूलाई यज्ञमा नबोलाएपछि सतिदेविले आफ्ना पिता दक्ष प्रजापतीले सञ्चालन गरेको यज्ञ स्थलमा गएर पितासँग आफ्ना पति महादेव र आफूलाई यज्ञमा नबोलाउनुको कारण सोधिन् । दक्ष प्रजापतीले महादेव [[भाङ]], [[धतुरो]] सेवन गर्ने, शमसान घाटमा वास गर्ने, गलामा [[सर्प]]को माला लगाउने, जटाधारी भेषमा रहने, शरीरभरी [[खरानी]] घस्ने, [[बाघ]]को छालाको पहिरने हुनाले यस यज्ञमा बस्दा शोभा नदिने भएकाले नबोलाएको बताए । पिताको जवाफ सुनेपछि सतिदेवीलाई आफ्ना पतिको अपमान गरिएको महशुस भयो र अपमान सहन गर्न नसकेर यज्ञकुण्डको अग्नीमा हाम फालेर प्राण त्याग गरिन् ।
आफ्नी पत्नि सतिदेवीले दक्ष प्रजापतिले सञ्चालन गरेको यज्ञमा हाम फालेर प्राण त्याग गरेपछि महादेव रिसाएर विरभद्रादी शिवगणलाई पठाएर दक्ष प्रजापतिलाई मारी दक्ष प्रजापतिले सञ्चालन गरेको यज्ञ तहस नहस पार्न लगाए । आफू भने पत्नी वियोगमा पागल भएर सतिदेवीको मृत शरिर बोकेर पुरा [[विश्व]] घुम्न थाले । यसै बेला [[विष्णु|भगवान बिष्णु]]ले आफ्नो चक्र सुदर्शन प्रहार गरी सतिदेवीको मृत शरीरमा किरा पारेर कुहाए । सतिदेवीको मृत शरीर कुहिए पछि महादेव जहाँ जहाँ गए त्यहाँ त्यहाँ सतिदेवीको मृत शरीरको कुहिएको अङ्ग खस्दै (पतन हुँदै) गए । यसरी ठाउँ ठाउँमा सतिदेवीको शरीरका अङ्गहरू पतन हुँदै जान थालेपछि जहाँ जहाँ सतिदवीका अङ्ग पतन भए त्यहाँ त्यहाँ एक एकवटा सिद्ध पिठ (प्रसिद्ध धार्मिक स्थल) बन्दै गए । यसै क्रममा हालको बाजुरा जिल्लाको मल्लागिरी पर्वतमा सतिदेवीको बायाँ कुम पतन भयो । पछि गएर सतिदेवीको बायाँ कुम पतन भएको त्यही पर्वतलाई मालिका र हाल आएर बडीमालिका भनिन थालियो ।
मल्लागिरी पर्वतमा मल्लिका अथवा [[मालिका देवी]] शक्ति स्वरूपले रहन थालिन् ।<ref>श्री स्वस्थानी ब्रतकथा</ref> तसर्थ यस स्थानमा बडिमालिका मन्दिर स्थापना गरेर पूजा गर्न थालियो ।
भनिन्छ पौराणिक कालमा भगवतीले महिषासुर नामको दैत्यको वध गरिसकेपछि कालिकोटको "द्वारेढुंगा" भन्ने ठाउँमा विश्राम गरेकी थिइन् । पछि गएर द्वारेढुंगामा एकजना दाउरा खोज्न गएको दलित भोकले व्याकुल भई देवीसँग बहरको मासु र हिया गहुँको रोटी माग्यो । देवीले त्यो दलितको मनोरथ पूरा गरिदिइन् । दलितले पूरै बहरलाई एक्लै खान नसकिने भएकाले आफ्नो घरका मान्छेलाई बोलाएछ । उसको घरको मानिसहरूले टाढा भएका कारण सुन्न सकेनन् । तब त्यो दलितलाई रिस उठ्यो। उसले भगवतीलाई भन्यो हे! प्रमेश्वरी मेरा घरका सबै मान्छे मरुन् । देवीले पनि इच्छाअनुसार वरदान दिइन् । त्यसपछि बहरको मासु लिएर दलित घर गएछ । घरमा हेर्दा त सबै जहानहरू मरेका देख्यो । फेरि दलित रिसायर द्वारेढुंगा पुग्यो । देवी उसलाई देखेर ढोका बन्द गरी त्यहाँबाट भागिन् । दलितले बहरको फिलाले देवीको घरमा हानेको छाप अझै द्वारे ढुङ्गामा देखिन्छ । यसो भएका कारण देवी सधैँका लागि त्यो ठाउँ छोडेर त्रिवेणी, पञ्चपुरी पाटन, मल्लपुरी पाटन हुँदै बडीमालिकामा गएर बसिन् । त्यसैले दलितहरू बडिमालिका जाँदैनन् भन्ने विश्वास गरिन्छ। अन्य भक्तजनहरू जो बाटो देवी गएकी हुन् त्यही बाटो भएर जान्छन् । <ref>जन जिब्रोमा प्रचलित कथा</ref>
==सरकारी पूजा==
बडीमालिका मन्दिरमा सरकारका तर्फबाट एकजना मुख्य पूजारी बनाइएका छन् । हाल बाजुरा जिल्ला त्रिवेणी नगरपालिका वडा नं. ९ पैमाका नेत्र पाध्याय मुख्य पुजारीका रुपमा रहेका छन् । पैमाका पुजारी नेत्र पाध्याय र उनका दाजुभाइहरू छोराहरूले सरकारी पूजा गराउँछन् । सरकारी पुजा गर्दा सबैभन्दा पहिले डोटी जिल्लाबाट पठाईएको गोरखनाथको टोलीको तर्फबाट सरकारी पुजा हुने गर्दछ भने त्यसपछि जुम्ला जिल्लाबाट चन्दननाथको टोलीको तर्फबाट सरकारी पुजा हुने गर्दछ । त्यसपछि क्रमश: [[अछाम जिल्ला|अछाम]], [[बाजुरा जिल्ला|बाजुरा]] र [[कालिकोट जिल्ला|कालिकोट]] जिल्लाका प्रमुख जिल्ला अधिकारी तथा निजका प्रतिनिधिहरु लगायत अन्य कर्मचारीहरूको हातबाट देवीको सरकारी पूजा सम्पन्न हुन्छ।
पछिल्लो समयमा कालिकोट, जुम्ला, मुगु, अछाम, बाजुरा, कैलाली जिल्लाका स्थानीय सरकारका तर्फबाट समेत बडीमालिका मन्दिरमा सरकारी पुजा गर्ने प्रचलन रहेको छ । कैलाली जिल्लामा रहेको सुदूरपश्चिम प्रदेशको एक मात्र उपमहानगरपालिका धनगढी उपमहानगरपालिकाको तर्फबाट सम्वत् २०८२ साल साउन २३ गतेका दिन पहिलो पटक सरकारी पुजा गरिएको छ । धनगढी उपमहानगरपालिका नगर प्रमुख श्री गोपाल हमालको पहलमा २०८२ सालदेखि बडीमालिका मन्दिरमा सरकारी पुजाको थालनी गरिएको हो ।
==प्राकृतिक सौन्दर्य==
बडीमालिका धार्मिक मात्र नभएर पर्यटकीय हिसाबले पनि महत्त्वपूर्ण मानिन्छ । नजिकै देखिने सुन्दर हिमाल, हिउँ कुल्चन पाउने सौभाग्य र मनोरम प्राकृतिक दृश्यहरू बडीमालिकाका गहना हुन् । बडीमालिकाको सौन्दर्य भनेकै विशाल फाँटहरू हुन् । बडमालिका क्षेत्रका ती विशाल फाँटहरुलाई स्थानीय भाषामा पाटन भनिन्छ । तर अचेल यी फाँटहरू बिस्तारै मासिँदै छन् । यी फाँटमा अनावश्यक चरन र जडीबुडी चोरी निकासीका कारण यसको सौन्दर्य मासिएको जिल्लाबासीको गुनासो छ ।
बडीमालिकामा प्रत्येक वर्ष [[श्रावण शुक्ल पूर्णिमा|जनै पूर्णिमा]]को अघिल्ला दिनहरु साउन त्रयोदशी देखि चतुर्दशीका दिन ठूलो मेला लाग्दछ । त्यो समयमा केही स्थानीय व्यापारीले खाजा नास्ताका पसल राख्ने गर्छन् । अन्य समयमा त्यहाँ खाजा नास्ताका कुनै पसलहरू खासै भेटिँदैनन् ।
बडीमालिका मन्दिरमा दर्शन गरेपछि आफ्नो मनोकांक्षा पूरा हुने जनविश्वास छ । मन्दिर परिसरबाट आँखै अगाडी देखिने [[साइपाल हिमाल|सैपाल]] हिमालको मनोरम दृश्यले यहाँको सौन्दर्यलाई झनै तिखारेको छ । बडीमालीका पुग्नका लागि उचित बास बस्ने स्थान नभएका कारण भक्तजन तथा पर्यटकले खानपिन तथा बासको जोहो आफै गर्नुपर्छ । यद्दपि साउन महिनामा लाग्ने मेलाको अवसरका बाटोमा त्रिपाल टाँगेर खान बस्नका लागि अस्थायी पसलहरु भने राखिएका भेटिन्छन् । तर ती पसलहरुले भक्तजनहरुको घुईंचोलाई धान्न भने सकेका हुँदैनन् ।
नेपालको विभिन्न जिल्लाका साथै भारतबाट पनि तीर्थालुहरू यहाँ मेला भर्न आउँछन् । भक्तजनहरूले आफूले मागेको वरदान पूरा हुन्छ भन्ने विश्वास गर्छन् । हालसम्म [[गङ्गा दशहरा|गंगा दशहरा]] र साउन त्रयोदशी देखि चतुर्शीसम्म गरी वर्षको दुईपटक मात्र लाग्दै आएको औपचारिक मेलाका कारण बडीमालिकाको महत्त्व सीमित छ । भक्तजनहरुको घुईंचो गंगा दशहरा भन्दा साउन चतुर्दशीमा बढी हुने गर्दछ ।
बडिमालिका मन्दिरसम्म पुग्नका लागि कालिकोट र बाजुरा जिल्लाका विभिन्न बाटोहरु प्रयोग गर्न सकिन्छ । कर्णाली प्रदेश र बाजुरा जिल्लाको नजिकको क्षेत्र बाहेक अन्य स्थानबाट बडीमालिका मन्दिर सम्म पुग्नका लागि सबै भन्दा सजिलो बाटो मार्तडी हुँदै जाने बाटो हो । नेपालको राजधानी काठमाण्डौं लगायतका क्षेत्रबाट यो बाटो हुँदै बडीमालिका जानका लागि सुदूरपश्चिम प्रदेशको धनगढीबाट बाजुरा जिल्लाको मार्तडीसम्म सडक यातायातको सुविधा छ । धनगढीबाट दिवा तथा रात्री सेवाका बसहरु वा आफ्नै निजी सवारी साधनको प्रयोग गरेर एक दिनमा पुग्न सकिन्छ । मार्तडीबाट पैदल हिडेर अर्को दिन फुल चढाउने ठाउँमा पुगेर बास बस्नु पर्ने हुन्छ । फुल चढाउने ठाउँमा एउटा सानो धर्मशाला त छ तर त्यो यात्रुका लागि पर्याप्त हुँदैन । तसर्थ आफैले टेण्ट बोकेर लैजानु बुद्धिमानी हुन्छ । त्यसको भोलीपल्ट भितीचिर्ना बास बस्न सकिन्छ भने पर्सि पल्ट त्रिवेणी पाटनमा बास बस्न सकिन्छ । त्रयोदशीको दिन बिहानै त्रिवेणीमा स्नान गरि बडीमालिका तर्फ लाग्ने हो भने बडीमालिका पुगिन्छ । त्यसैदिन वा भोली पल्ट बडिमालिका देवीकझ दर्शन तथा पुजा गरेर नाटेश्वरी तर्फ हिड्न सकिन्छ । नाटेश्वरी तर्फको बाटो साह्रै भिरालो र अत्यधिक चिप्लो भएकोले विहान र दिउँसोको समयम पारेर हिड्नु पर्छ । विहानै हिड्ने हो भने सोही दिन नाटेश्वरी पुगिन्छ भने दिउँसो हिड्दा ठूलागडासम्म बास बस्ने गरी पुग्न सकिन्छ । नाटेश्वरी तर्फ जाँदा विष्णुपानीका अस्थायी होटलमा खाना खान पाईन्छ । ठूलागडा बस्ने हो भने भोलीपल्ट १० बजेसम्म नाटेश्वरी पुगिन्छ । नाटेश्वरीमा जनैपूर्णिका दिन नाटेश्वरी माईंको दर्शन गरी नजिकै रहेको कालिका मन्दिरमा बलि पुजा गर्ने प्रचलन छ । नाटेश्वरीमा जनै फेर्ने र रक्षा बन्धनको काम पनि गरिन्छ । बलि पुजा गर्नेहरुले भातसँग बोकाको मासु प्रसादको रुपमा खाएर सोही दिन बुढीगंगा नगरपालिकाको बाम्का बजार तर्फ लाग्दछन् । बाम्का बजारबाट धनगढीका लागि बसहरु भेटिन्छन् । त्यही बस वा आफ्नै सवारी साधनबाट धनगढीको यात्रा गर्न सकिन्छ । यसरी यो रुटबाट यात्रा गर्दा कम्तिमा ६ दिन लाग्दछ । तर त्रिवेणी र बडीमालिकाका सुन्दर दृश्यहरु हेर्नका लागि २ दिन थप गरेर ८ दिन लगाउने हो भने १ दिन त्रिवेणी र १ दिन बडीमालिकामा रहेर थप आनन्द लिन सकिन्छ ।
हवाई मार्गको प्रयोग गर्ने हो भने नेपालगञ्जबाट बाजुराको बुढीगंगा नगरपालिकाको कोल्टी एअरपोर्टसम्म गएर त्यहाँबाट १ दिनमा बाजुराको सदरमुकाम मार्तडी पुग्न सकिन्छ । मार्तडीबाट माथि भनिए झैं यात्रा गर्न सकिन्छ । कोल्टीबाटै फर्कने हो भने फर्कदा बडीमालिका-त्रिवेणी-भितिचिर्ना-फुल चढाउने-मार्तडी- कोल्टी हुँदै फर्कन सकिन्छ ।
बाजुराबाट कोर्ध-बुढाकोर्ध-भितिचिर्ना-त्रिवेणी-बडीमालिकाको बाटो पनि प्रयोग गर्न सकिन्छ । त्यस्तै बल्दे-पैमा पुजारीको घर हुँदै बडीमालिका जान पनि सकिन्छ । बाम्का बजार-मौरे-नाटेश्वरी हुँदै पनि बडीमालिका जान मिल्दछ । त्यस्तै बाम्का बजार-तोली-छतारा-पञ्चपुरी हुँदै पनि बडीमालिका जान सकिन्छ । बल्दे, बाम्का, पञ्चपुरीको बाटो प्रयोग गर्दा बडीमालिका पुगेर त्रिवेणी जानु पर्ने हुन्छ, त्रिवेणीमा नुहाएर फेरी बडीमालिका आउनु पर्ने हुन्छ ।
बडीमालिका ४,२२० मिटर उचाईंमा रहेको, बाटोहरु भिरालो रहेको, लेकाली विशालु जडिबुटीहरु फुलेर विश लाग्ने, लेक लाग्ने जस्ता कारणले बडीमालिका पुग्न जो कोहीलाई हम्मे हम्मे पर्दछ । तर पनि देवीको अनुकम्पाले अधिकाँश भक्तजनहरुले यात्रा पुरा गरेका हुन्छन् ।
बडीमालिकाको यात्रा गर्दा आजकाल ठाउँमा त्रिपाल राखेर खानाका लागि अस्थायी होटेलहरु राखिएका हुनाले खानाका लागि त्यति समस्या हुँदैन । तैपनि बाटोमा भोक लागेको बेला खानका लागि र बास बस्ने ठाउँमा खानेकुरा नपाएको अवस्थामा खानका लागि सातु वा आफुलाई मन पर्ने शुद्ध शाकाहारी ड्राई फुड बोकेर लैजान सकिन्छ । यसरी बोक्ने सामान भारी (गह्रौं) भने हुनु हुँदैन । भारी भयो भने बोकेर हिड्नलाई धेरै गाह्रो हुन सक्छ । लेक लाग्दा सुँघ्नका लागि पुजा गर्ने कपुर बोकिराख्नु भयो भने फाईदाजनक हुन्छ । पोलेको अदुवा, नुन खुर्शानी र टिम्मुर मिश्रित धुलो साथमा राखेर बेला बेलामा खानाले पनि लेक लाग्नबाट बच्न सकिन्छ । धेरै जसो ठाउँमा पानी नपाउने हुँदा पानीमा लागि बोटल साथमा राखेर हमेशा त्यसमा पानी भरिराख्नु पर्दछ । शौच सफा गर्न, मुख पुछ्न ट्वाइलेट पेपर, वेट टिस्यु पेपर साथमा लैजाँदा राम्रो हुन्छ । चिसोबाट जोगिन भिक्स, लिप गार्ड, इन्हेलर, कोल्ड क्रिम साथमा राखेर बेला बेला प्रयोग गर्नु बुद्धिमानी हुन्छ । जीउको दुखाई कम गर्न मुभ, सिटामोल जस्ता औषधी साथमा राखिराख्नु पर्दछ । रात्री सुत्नका लागि सिलिपिङ व्याग, टेण्ट, ज्याकेट, थर्मकोल लिनु भयो भने राम्रो हुन्छ ।
बडीमालिका क्षेत्रका सुन्दर दृश्यहरु कैद गर्नका लागि मोबाईल वा क्यामेराको साथमा पावर व्याकअप लैजानु पर्ने हुन्छ । पावर व्याकअप लिंदा कम्तिमा ६ दिनसम्म चार्ज गर्न मिल्ने क्षमता भएको पावर व्याकअप लैजानु पर्दछ।
==सञ्चार सेवा==
धार्मिक तथा पर्यटकीय दृष्टिले महत्वपूर्ण [[बाजुरा जिल्ला|बाजुरा]]को बडीमालिका क्षेत्रमा दूरसञ्चार तथा इन्टरनेट सेवाको पहुँच विस्तार भएको छ। नेपाल टेलिकमले बडीमालिका क्षेत्रमा फोर-जी सेवा विस्तार गरेपछि ८ भाद्र, २०८३ सोमबारदेखि उक्त क्षेत्रमा मोबाइल फोन तथा इन्टरनेट सेवा सञ्चालनमा आएको हो।<ref>{{वेब स्रोत|लेखक=गोरखापत्र अनलाइन|शीर्षक=बडीमालिका क्षेत्रमा पुग्यो टेलिफोन र इन्टरनेट सेवा|युआरएल=https://gorkhapatraonline.com/news/219713|कार्य=|प्रकाशक=|वेबसाइट=गोरखापत्र अनलाइन|भाषा=नेपाली)|अभिलेखमिति=|अभिलेखयुआरएल=|मिति=|पहुँचमिति=२४ अगस्ट २०२६}}</ref>
जनैपूर्णिमाका अवसरमा बडीमालिका क्षेत्रमा आयोजना हुने धार्मिक मेलाको पूर्वसन्ध्यामा सञ्चार सेवा सञ्चालनमा आएको हो। समुद्री सतहबाट करिब ४,२०० मिटरको उचाइमा रहेको यस क्षेत्रमा सञ्चार सेवा विस्तार भएपछि स्थानीयवासी, तीर्थयात्री, पर्यटक तथा विभिन्न सरकारी तथा गैरसरकारी निकायलाई सञ्चार सम्पर्कमा सहजता हुने अपेक्षा गरिएको छ।
यसअघि दुर्गम तथा उच्च हिमाली क्षेत्रमा अवस्थित बडीमालिका क्षेत्रमा मोबाइल तथा इन्टरनेट सेवाको पहुँच सीमित थियो। फोर-जी सेवा विस्तारसँगै मोबाइल फोन तथा इन्टरनेट प्रयोग गर्न सहज भएको छ। यसले धार्मिक तथा पर्यटकीय गतिविधिका साथै सूचना आदानप्रदान र आपत्कालीन अवस्थामा सञ्चार सम्पर्क कायम गर्न समेत सहयोग पुग्ने अपेक्षा गरिएको छ।<ref>{{वेब स्रोत|लेखक=दिलबहादुर छत्याल|शीर्षक=बडीमालिकामा पुग्यो इन्टरनेट|युआरएल=https://nagariknews.nagariknetwork.com/technology/internet-reaches-badimalika-38-72.html|कार्य=|प्रकाशक=|वेबसाइट=नागरिक अनलाइन|भाषा=नेपाली)|अभिलेखमिति=|अभिलेखयुआरएल=|मिति=|पहुँचमिति=२४ अगस्ट २०२६}}</ref>
==तस्विर ग्यालरी==
<gallery>
File:बडिमालिका मन्दिर.JPG|बडिमालिका मन्दिर
File:बडिमालिका मन्दिरको बाटो.JPG|बडिमालिका मन्दिरको बाटो
File:बडिमालिका मन्दिर रहेको पहाड.JPG|बडिमालिका मन्दिर अवस्थीत पहाड
File:बडिमालिका मन्दिरमा पूजा गर्दे.JPG|बडिमालिका मन्दिरमा पूजा गर्दै
File:बडिमालिका मन्दिरबाट फर्केका मानिसहरु.JPG|बडिमालिका मन्दिरबाट फर्केका मानिसहरू
File:बडिमालिका मन्दिर अवस्थीत पहाड.JPG|बडिमालिका मन्दिर अवस्थीत पहाड
File:बडिमालिका मन्दिरबाट देखिने दृष्य.JPG|बडिमालिका मन्दिरबाट देखिने दृष्य
File:बडिमालिका मन्दिरबाट देखिने एक दृष्य.JPG|बडिमालिका मन्दिरबाट देखिने एक दृष्य
</gallery>
==श्रोत==
{{reflist|}}
==बाह्य कडीहरू==
*[http://m.ujyaaloonline.com/index.php?pआageName=news_details&id=10177&catId=21 पर्यटक पर्खदै बाजुराको बडिमालिका]{{Dead link|date=November 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[http://www.ekantipur.com/kantipur/news/news-detail.php?news_id=260067 सुरु भएन बडिमालिका संरक्षण योजना]
*[http://www.bbc.com/nepali/multimedia/2016/09/160902_badimalika_nepal?ocid=socialflow_facebook बडिमालिका यात्रा]
*[http://www.hamrogorkha.com/नियमित-स्तम्भ/पर्यटन/सौन्दर्यले-भरिएको-बाजुराको-बडिमालिका-(फोटोफिचर).htm बडिमालिका फोटो फिचर]{{Dead link|date=September 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[http://www.sidhadrishti.com/2016/05/108.html?m=1 स्वर्गको टुक्रा बडिमालिका] {{Webarchive|url=https://web.archive.org/web/20220117221717/http://www.sidhadrishti.com/2016/05/108.html?m=1 |date=2022-01-17 }}
==यी पनि हेर्नुहोस्==
{{सुदूर-पश्चिमकी नौ भगवती}}
{{नेपालका मन्दिरहरू}}
[[श्रेणी:नेपालका मन्दिरहरू]]
[[श्रेणी:बाजुरा जिल्लाका धार्मिक ठाउँहरू]]
75l87i01apkq983acsji4h7swnos1uy
1372324
1372323
2026-08-26T00:42:44Z
Rajeeb bastola
39875
1372324
wikitext
text/x-wiki
{{Short description|Hindu temple in Sudurpashchim, Nepal}}
{{more citations needed|date=August 2020}}
{{Infobox Mandir
|name = बडिमालिका मन्दिर
|image = Badi Malika.png
|
|alt = Temple premises
|caption =
|pushpin_map = Nepal
|pushpin_caption = Badimalika Temple in Nepal
|coordinates = {{coord|29.346916|81.477488|type:landmark_region:NP|display=inline,title}}
|sanskrit_translit =
|country = {{flag|Nepal}}
|state = [[Seti zone|Seti]]
|district = [[Bajura district|Bajura]]
|location = [[Kailashmandau]], [[Bajura district|Bajura]] <ref>{{cite web|URL= http://fwdc.gov.np/ne/%E0%A4%A7%E0%A4%BE%E0%A4%B0%E0%A5%8D%E0%A4%AE%E0%A4%BF%E0%A4%95-%E0%A4%B8%E0%A5%8D%E0%A4%A5%E0%A4%BE%E0%A4%A8%E0%A4%B9%E0%A4%B0%E0%A5%81 |title= धार्मिक स्थलहरु |language= Nepali |publisher= www.fwdc.gov.np}}</ref>
|elevation_m =
|deity = [[Shakti]]
|festival = [[Ganga Dussehra]], Shrwan Shukla chaturdashi
|architecture = Pagoda Style
|temple_quantity =
|monument_quantity =
|inscriptions =
|creator =
|website =
|mapframe = yes
|mapframe-zoom = 12
|mapframe-wikidata = yes
}}
== पृष्ठभूमि ==
'''बडीमालिका''' विश्वका प्रमुख हिन्दु मन्दिरहरूमध्येको एक प्रशिद्ध मन्दिर हो । यो मन्दिर नेपालको सुदूरपश्चिम प्रदेशको बाजुरा जिल्लाको त्रिवेणी नगरपालिकामा वडा नं. ६ पन्धारामा पर्दछ । यहाँ प्रत्येक वर्ष साउन शुक्ल त्रयोदशी देखि चतुर्दशीका दिन मुख्य पूजा तथा हवन गरिन्छ । गंगा दशहरामा यहाँको पाती प्रसाद खप्तडमा ल्याएर चढाउने गरिन्छ । बडीमालिकामा २ जिल्लाका पुजारीहरुले पूजा गर्छन् । यी मध्ये १ बाजुरा जिल्लाको त्रिवेणी नगरपालिका वडा नं. ९ पैमाका हुन् भने अर्को कालिकोटका हुन् । हाल बाजुराबाट मुख्य पुजारीको रुपमा नेत्र पाध्याय रहेका छन् भने कालिकोटबाट हरी धमाला रहेका छन् ।
[[File : Badimalika Temple, Bajura, Nepal.jpg|thumb|बडीमालिका मन्दिर|300px]]
सम्वत् २०८२ सालमा यहाँको पुरानो मन्दिरको जिर्णोद्वार गरी नेपाली सेनाद्वारा नयाँ मन्दिर निर्माण गरिएको छ । बडीमालिका मन्दिर समुन्द्री सतहबाट ४,२२० मीटर उचाईमा अवस्थित छ । जुन विश्वमा रहेका हिन्दु मन्दिरहरुमध्ये सबैभन्दा अग्लो स्थानमा रहेको हिन्दु मन्दिर हो ।
बडीमालिका दर्शनका लागि जाने भक्तजनहरुले त्रिवेणी हुँदै जानु पर्ने हुन्छ । त्रिवेणी बाजुरा जिल्लाको त्रिवेणी नगरपालिका र कालिकोटको रास्कोट नगरपालिकाको सिमाना हो । यसको मुख्य भाग बाजुरा जिल्लाको त्रिवेणी नगरपालिका वडा नं. ५ किम्नीमा पर्दछ । बडीमालिका, त्रिवेणी बहुमूल्य जडिबुटीको भण्डार पनि हो ।
==किंवदन्ती==
पौराणिक कथा अनुसार [[शिव|महादेव]]की पत्नी [[सतिदेवी]]का पिता [[दक्ष प्रजापति]]ले यज्ञ गर्दा महादेव र सतिदेवीलाई बोलाएनन् । आफ्ना पति र आफूलाई यज्ञमा नबोलाएपछि सतिदेविले आफ्ना पिता दक्ष प्रजापतीले सञ्चालन गरेको यज्ञ स्थलमा गएर पितासँग आफ्ना पति महादेव र आफूलाई यज्ञमा नबोलाउनुको कारण सोधिन् । दक्ष प्रजापतीले महादेव [[भाङ]], [[धतुरो]] सेवन गर्ने, शमसान घाटमा वास गर्ने, गलामा [[सर्प]]को माला लगाउने, जटाधारी भेषमा रहने, शरीरभरी [[खरानी]] घस्ने, [[बाघ]]को छालाको पहिरने हुनाले यस यज्ञमा बस्दा शोभा नदिने भएकाले नबोलाएको बताए । पिताको जवाफ सुनेपछि सतिदेवीलाई आफ्ना पतिको अपमान गरिएको महशुस भयो र अपमान सहन गर्न नसकेर यज्ञकुण्डको अग्नीमा हाम फालेर प्राण त्याग गरिन् ।
आफ्नी पत्नि सतिदेवीले दक्ष प्रजापतिले सञ्चालन गरेको यज्ञमा हाम फालेर प्राण त्याग गरेपछि महादेव रिसाएर विरभद्रादी शिवगणलाई पठाएर दक्ष प्रजापतिलाई मारी दक्ष प्रजापतिले सञ्चालन गरेको यज्ञ तहस नहस पार्न लगाए । आफू भने पत्नी वियोगमा पागल भएर सतिदेवीको मृत शरिर बोकेर पुरा [[विश्व]] घुम्न थाले । यसै बेला [[विष्णु|भगवान बिष्णु]]ले आफ्नो चक्र सुदर्शन प्रहार गरी सतिदेवीको मृत शरीरमा किरा पारेर कुहाए । सतिदेवीको मृत शरीर कुहिए पछि महादेव जहाँ जहाँ गए त्यहाँ त्यहाँ सतिदेवीको मृत शरीरको कुहिएको अङ्ग खस्दै (पतन हुँदै) गए । यसरी ठाउँ ठाउँमा सतिदेवीको शरीरका अङ्गहरू पतन हुँदै जान थालेपछि जहाँ जहाँ सतिदवीका अङ्ग पतन भए त्यहाँ त्यहाँ एक एकवटा सिद्ध पिठ (प्रसिद्ध धार्मिक स्थल) बन्दै गए । यसै क्रममा हालको बाजुरा जिल्लाको मल्लागिरी पर्वतमा सतिदेवीको बायाँ कुम पतन भयो । पछि गएर सतिदेवीको बायाँ कुम पतन भएको त्यही पर्वतलाई मालिका र हाल आएर बडीमालिका भनिन थालियो ।
मल्लागिरी पर्वतमा मल्लिका अथवा [[मालिका देवी]] शक्ति स्वरूपले रहन थालिन् ।<ref>श्री स्वस्थानी ब्रतकथा</ref> तसर्थ यस स्थानमा बडिमालिका मन्दिर स्थापना गरेर पूजा गर्न थालियो ।
भनिन्छ पौराणिक कालमा भगवतीले महिषासुर नामको दैत्यको वध गरिसकेपछि कालिकोटको "द्वारेढुंगा" भन्ने ठाउँमा विश्राम गरेकी थिइन् । पछि गएर द्वारेढुंगामा एकजना दाउरा खोज्न गएको दलित भोकले व्याकुल भई देवीसँग बहरको मासु र हिया गहुँको रोटी माग्यो । देवीले त्यो दलितको मनोरथ पूरा गरिदिइन् । दलितले पूरै बहरलाई एक्लै खान नसकिने भएकाले आफ्नो घरका मान्छेलाई बोलाएछ । उसको घरको मानिसहरूले टाढा भएका कारण सुन्न सकेनन् । तब त्यो दलितलाई रिस उठ्यो। उसले भगवतीलाई भन्यो हे! प्रमेश्वरी मेरा घरका सबै मान्छे मरुन् । देवीले पनि इच्छाअनुसार वरदान दिइन् । त्यसपछि बहरको मासु लिएर दलित घर गएछ । घरमा हेर्दा त सबै जहानहरू मरेका देख्यो । फेरि दलित रिसायर द्वारेढुंगा पुग्यो । देवी उसलाई देखेर ढोका बन्द गरी त्यहाँबाट भागिन् । दलितले बहरको फिलाले देवीको घरमा हानेको छाप अझै द्वारे ढुङ्गामा देखिन्छ । यसो भएका कारण देवी सधैँका लागि त्यो ठाउँ छोडेर त्रिवेणी, पञ्चपुरी पाटन, मल्लपुरी पाटन हुँदै बडीमालिकामा गएर बसिन् । त्यसैले दलितहरू बडिमालिका जाँदैनन् भन्ने विश्वास गरिन्छ। अन्य भक्तजनहरू जो बाटो देवी गएकी हुन् त्यही बाटो भएर जान्छन् । <ref>जन जिब्रोमा प्रचलित कथा</ref>
==सरकारी पूजा==
बडीमालिका मन्दिरमा सरकारका तर्फबाट एकजना मुख्य पूजारी बनाइएका छन् । हाल बाजुरा जिल्ला त्रिवेणी नगरपालिका वडा नं. ९ पैमाका नेत्र पाध्याय मुख्य पुजारीका रुपमा रहेका छन् । पैमाका पुजारी नेत्र पाध्याय र उनका दाजुभाइहरू छोराहरूले सरकारी पूजा गराउँछन् । सरकारी पुजा गर्दा सबैभन्दा पहिले डोटी जिल्लाबाट पठाईएको गोरखनाथको टोलीको तर्फबाट सरकारी पुजा हुने गर्दछ भने त्यसपछि जुम्ला जिल्लाबाट चन्दननाथको टोलीको तर्फबाट सरकारी पुजा हुने गर्दछ । त्यसपछि क्रमश: [[अछाम जिल्ला|अछाम]], [[बाजुरा जिल्ला|बाजुरा]] र [[कालिकोट जिल्ला|कालिकोट]] जिल्लाका प्रमुख जिल्ला अधिकारी तथा निजका प्रतिनिधिहरु लगायत अन्य कर्मचारीहरूको हातबाट देवीको सरकारी पूजा सम्पन्न हुन्छ।
पछिल्लो समयमा कालिकोट, जुम्ला, मुगु, अछाम, बाजुरा, कैलाली जिल्लाका स्थानीय सरकारका तर्फबाट समेत बडीमालिका मन्दिरमा सरकारी पुजा गर्ने प्रचलन रहेको छ । कैलाली जिल्लामा रहेको सुदूरपश्चिम प्रदेशको एक मात्र उपमहानगरपालिका धनगढी उपमहानगरपालिकाको तर्फबाट सम्वत् २०८२ साल साउन २३ गतेका दिन पहिलो पटक सरकारी पुजा गरिएको छ । धनगढी उपमहानगरपालिका नगर प्रमुख श्री गोपाल हमालको पहलमा २०८२ सालदेखि बडीमालिका मन्दिरमा सरकारी पुजाको थालनी गरिएको हो ।
==प्राकृतिक सौन्दर्य==
बडीमालिका धार्मिक मात्र नभएर पर्यटकीय हिसाबले पनि महत्त्वपूर्ण मानिन्छ । नजिकै देखिने सुन्दर हिमाल, हिउँ कुल्चन पाउने सौभाग्य र मनोरम प्राकृतिक दृश्यहरू बडीमालिकाका गहना हुन् । बडीमालिकाको सौन्दर्य भनेकै विशाल फाँटहरू हुन् । बडमालिका क्षेत्रका ती विशाल फाँटहरुलाई स्थानीय भाषामा पाटन भनिन्छ । तर अचेल यी फाँटहरू बिस्तारै मासिँदै छन् । यी फाँटमा अनावश्यक चरन र जडीबुडी चोरी निकासीका कारण यसको सौन्दर्य मासिएको जिल्लाबासीको गुनासो छ ।
बडीमालिकामा प्रत्येक वर्ष [[श्रावण शुक्ल पूर्णिमा|जनै पूर्णिमा]]को अघिल्ला दिनहरु साउन त्रयोदशी देखि चतुर्दशीका दिन ठूलो मेला लाग्दछ । त्यो समयमा केही स्थानीय व्यापारीले खाजा नास्ताका पसल राख्ने गर्छन् । अन्य समयमा त्यहाँ खाजा नास्ताका कुनै पसलहरू खासै भेटिँदैनन् ।
बडीमालिका मन्दिरमा दर्शन गरेपछि आफ्नो मनोकांक्षा पूरा हुने जनविश्वास छ । मन्दिर परिसरबाट आँखै अगाडी देखिने [[साइपाल हिमाल|सैपाल]] हिमालको मनोरम दृश्यले यहाँको सौन्दर्यलाई झनै तिखारेको छ । बडीमालीका पुग्नका लागि उचित बास बस्ने स्थान नभएका कारण भक्तजन तथा पर्यटकले खानपिन तथा बासको जोहो आफै गर्नुपर्छ । यद्दपि साउन महिनामा लाग्ने मेलाको अवसरका बाटोमा त्रिपाल टाँगेर खान बस्नका लागि अस्थायी पसलहरु भने राखिएका भेटिन्छन् । तर ती पसलहरुले भक्तजनहरुको घुईंचोलाई धान्न भने सकेका हुँदैनन् ।
नेपालको विभिन्न जिल्लाका साथै भारतबाट पनि तीर्थालुहरू यहाँ मेला भर्न आउँछन् । भक्तजनहरूले आफूले मागेको वरदान पूरा हुन्छ भन्ने विश्वास गर्छन् । हालसम्म [[गङ्गा दशहरा|गंगा दशहरा]] र साउन त्रयोदशी देखि चतुर्शीसम्म गरी वर्षको दुईपटक मात्र लाग्दै आएको औपचारिक मेलाका कारण बडीमालिकाको महत्त्व सीमित छ । भक्तजनहरुको घुईंचो गंगा दशहरा भन्दा साउन चतुर्दशीमा बढी हुने गर्दछ ।
बडिमालिका मन्दिरसम्म पुग्नका लागि कालिकोट र बाजुरा जिल्लाका विभिन्न बाटोहरु प्रयोग गर्न सकिन्छ । कर्णाली प्रदेश र बाजुरा जिल्लाको नजिकको क्षेत्र बाहेक अन्य स्थानबाट बडीमालिका मन्दिर सम्म पुग्नका लागि सबै भन्दा सजिलो बाटो मार्तडी हुँदै जाने बाटो हो । नेपालको राजधानी काठमाण्डौं लगायतका क्षेत्रबाट यो बाटो हुँदै बडीमालिका जानका लागि सुदूरपश्चिम प्रदेशको धनगढीबाट बाजुरा जिल्लाको मार्तडीसम्म सडक यातायातको सुविधा छ । धनगढीबाट दिवा तथा रात्री सेवाका बसहरु वा आफ्नै निजी सवारी साधनको प्रयोग गरेर एक दिनमा पुग्न सकिन्छ । मार्तडीबाट पैदल हिडेर अर्को दिन फुल चढाउने ठाउँमा पुगेर बास बस्नु पर्ने हुन्छ । फुल चढाउने ठाउँमा एउटा सानो धर्मशाला त छ तर त्यो यात्रुका लागि पर्याप्त हुँदैन । तसर्थ आफैले टेण्ट बोकेर लैजानु बुद्धिमानी हुन्छ । त्यसको भोलीपल्ट भितीचिर्ना बास बस्न सकिन्छ भने पर्सि पल्ट त्रिवेणी पाटनमा बास बस्न सकिन्छ । त्रयोदशीको दिन बिहानै त्रिवेणीमा स्नान गरि बडीमालिका तर्फ लाग्ने हो भने बडीमालिका पुगिन्छ । त्यसैदिन वा भोली पल्ट बडिमालिका देवीकझ दर्शन तथा पुजा गरेर नाटेश्वरी तर्फ हिड्न सकिन्छ । नाटेश्वरी तर्फको बाटो साह्रै भिरालो र अत्यधिक चिप्लो भएकोले विहान र दिउँसोको समयम पारेर हिड्नु पर्छ । विहानै हिड्ने हो भने सोही दिन नाटेश्वरी पुगिन्छ भने दिउँसो हिड्दा ठूलागडासम्म बास बस्ने गरी पुग्न सकिन्छ । नाटेश्वरी तर्फ जाँदा विष्णुपानीका अस्थायी होटलमा खाना खान पाईन्छ । ठूलागडा बस्ने हो भने भोलीपल्ट १० बजेसम्म नाटेश्वरी पुगिन्छ । नाटेश्वरीमा जनैपूर्णिका दिन नाटेश्वरी माईंको दर्शन गरी नजिकै रहेको कालिका मन्दिरमा बलि पुजा गर्ने प्रचलन छ । नाटेश्वरीमा जनै फेर्ने र रक्षा बन्धनको काम पनि गरिन्छ । बलि पुजा गर्नेहरुले भातसँग बोकाको मासु प्रसादको रुपमा खाएर सोही दिन बुढीगंगा नगरपालिकाको बाम्का बजार तर्फ लाग्दछन् । बाम्का बजारबाट धनगढीका लागि बसहरु भेटिन्छन् । त्यही बस वा आफ्नै सवारी साधनबाट धनगढीको यात्रा गर्न सकिन्छ । यसरी यो रुटबाट यात्रा गर्दा कम्तिमा ६ दिन लाग्दछ । तर त्रिवेणी र बडीमालिकाका सुन्दर दृश्यहरु हेर्नका लागि २ दिन थप गरेर ८ दिन लगाउने हो भने १ दिन त्रिवेणी र १ दिन बडीमालिकामा रहेर थप आनन्द लिन सकिन्छ ।
हवाई मार्गको प्रयोग गर्ने हो भने नेपालगञ्जबाट बाजुराको बुढीगंगा नगरपालिकाको कोल्टी एअरपोर्टसम्म गएर त्यहाँबाट १ दिनमा बाजुराको सदरमुकाम मार्तडी पुग्न सकिन्छ । मार्तडीबाट माथि भनिए झैं यात्रा गर्न सकिन्छ । कोल्टीबाटै फर्कने हो भने फर्कदा बडीमालिका-त्रिवेणी-भितिचिर्ना-फुल चढाउने-मार्तडी- कोल्टी हुँदै फर्कन सकिन्छ ।
बाजुराबाट कोर्ध-बुढाकोर्ध-भितिचिर्ना-त्रिवेणी-बडीमालिकाको बाटो पनि प्रयोग गर्न सकिन्छ । त्यस्तै बल्दे-पैमा पुजारीको घर हुँदै बडीमालिका जान पनि सकिन्छ । बाम्का बजार-मौरे-नाटेश्वरी हुँदै पनि बडीमालिका जान मिल्दछ । त्यस्तै बाम्का बजार-तोली-छतारा-पञ्चपुरी हुँदै पनि बडीमालिका जान सकिन्छ । बल्दे, बाम्का, पञ्चपुरीको बाटो प्रयोग गर्दा बडीमालिका पुगेर त्रिवेणी जानु पर्ने हुन्छ, त्रिवेणीमा नुहाएर फेरी बडीमालिका आउनु पर्ने हुन्छ ।
बडीमालिका ४,२२० मिटर उचाईंमा रहेको, बाटोहरु भिरालो रहेको, लेकाली विशालु जडिबुटीहरु फुलेर विश लाग्ने, लेक लाग्ने जस्ता कारणले बडीमालिका पुग्न जो कोहीलाई हम्मे हम्मे पर्दछ । तर पनि देवीको अनुकम्पाले अधिकाँश भक्तजनहरुले यात्रा पुरा गरेका हुन्छन् ।
बडीमालिकाको यात्रा गर्दा आजकाल ठाउँमा त्रिपाल राखेर खानाका लागि अस्थायी होटेलहरु राखिएका हुनाले खानाका लागि त्यति समस्या हुँदैन । तैपनि बाटोमा भोक लागेको बेला खानका लागि र बास बस्ने ठाउँमा खानेकुरा नपाएको अवस्थामा खानका लागि सातु वा आफुलाई मन पर्ने शुद्ध शाकाहारी ड्राई फुड बोकेर लैजान सकिन्छ । यसरी बोक्ने सामान भारी (गह्रौं) भने हुनु हुँदैन । भारी भयो भने बोकेर हिड्नलाई धेरै गाह्रो हुन सक्छ । लेक लाग्दा सुँघ्नका लागि पुजा गर्ने कपुर बोकिराख्नु भयो भने फाईदाजनक हुन्छ । पोलेको अदुवा, नुन खुर्शानी र टिम्मुर मिश्रित धुलो साथमा राखेर बेला बेलामा खानाले पनि लेक लाग्नबाट बच्न सकिन्छ । धेरै जसो ठाउँमा पानी नपाउने हुँदा पानीमा लागि बोटल साथमा राखेर हमेशा त्यसमा पानी भरिराख्नु पर्दछ । शौच सफा गर्न, मुख पुछ्न ट्वाइलेट पेपर, वेट टिस्यु पेपर साथमा लैजाँदा राम्रो हुन्छ । चिसोबाट जोगिन भिक्स, लिप गार्ड, इन्हेलर, कोल्ड क्रिम साथमा राखेर बेला बेला प्रयोग गर्नु बुद्धिमानी हुन्छ । जीउको दुखाई कम गर्न मुभ, सिटामोल जस्ता औषधी साथमा राखिराख्नु पर्दछ । रात्री सुत्नका लागि सिलिपिङ व्याग, टेण्ट, ज्याकेट, थर्मकोल लिनु भयो भने राम्रो हुन्छ ।
बडीमालिका क्षेत्रका सुन्दर दृश्यहरु कैद गर्नका लागि मोबाईल वा क्यामेराको साथमा पावर व्याकअप लैजानु पर्ने हुन्छ । पावर व्याकअप लिंदा कम्तिमा ६ दिनसम्म चार्ज गर्न मिल्ने क्षमता भएको पावर व्याकअप लैजानु पर्दछ।
==सञ्चार सेवा==
धार्मिक तथा पर्यटकीय दृष्टिले महत्वपूर्ण [[बाजुरा जिल्ला|बाजुरा]]को बडीमालिका क्षेत्रमा दूरसञ्चार तथा इन्टरनेट सेवाको पहुँच विस्तार भएको छ। नेपाल टेलिकमले बडीमालिका क्षेत्रमा फोर-जी सेवा विस्तार गरेपछि ८ भाद्र, २०८३ सोमबारदेखि उक्त क्षेत्रमा मोबाइल फोन तथा इन्टरनेट सेवा सञ्चालनमा आएको हो।<ref>{{वेब स्रोत|लेखक=गोरखापत्र अनलाइन|शीर्षक=बडीमालिका क्षेत्रमा पुग्यो टेलिफोन र इन्टरनेट सेवा|युआरएल=https://gorkhapatraonline.com/news/219713|कार्य=|प्रकाशक=|वेबसाइट=गोरखापत्र अनलाइन|भाषा=नेपाली)|अभिलेखमिति=|अभिलेखयुआरएल=|मिति=|पहुँचमिति=२४ अगस्ट २०२६}}</ref>
जनैपूर्णिमाका अवसरमा बडीमालिका क्षेत्रमा आयोजना हुने धार्मिक मेलाको पूर्वसन्ध्यामा सञ्चार सेवा सञ्चालनमा आएको हो। समुद्री सतहबाट करिब ४,२०० मिटरको उचाइमा रहेको यस क्षेत्रमा सञ्चार सेवा विस्तार भएपछि स्थानीयवासी, तीर्थयात्री, पर्यटक तथा विभिन्न सरकारी तथा गैरसरकारी निकायलाई सञ्चार सम्पर्कमा सहजता हुने अपेक्षा गरिएको छ।
यसअघि दुर्गम तथा उच्च हिमाली क्षेत्रमा अवस्थित बडीमालिका क्षेत्रमा मोबाइल तथा इन्टरनेट सेवाको पहुँच सीमित थियो। फोर-जी सेवा विस्तारसँगै मोबाइल फोन तथा इन्टरनेट प्रयोग गर्न सहज भएको छ। यसले धार्मिक तथा पर्यटकीय गतिविधिका साथै सूचना आदानप्रदान र आपत्कालीन अवस्थामा सञ्चार सम्पर्क कायम गर्न समेत सहयोग पुग्ने अपेक्षा गरिएको छ।<ref>{{वेब स्रोत|लेखक=दिलबहादुर छत्याल|शीर्षक=बडीमालिकामा पुग्यो इन्टरनेट|युआरएल=https://nagariknews.nagariknetwork.com/technology/internet-reaches-badimalika-38-72.html|कार्य=|प्रकाशक=|वेबसाइट=नागरिक अनलाइन|भाषा=नेपाली)|अभिलेखमिति=|अभिलेखयुआरएल=|मिति=|पहुँचमिति=२४ अगस्ट २०२६}}</ref>
==तस्विर ग्यालरी==
<gallery>
File:बडिमालिका मन्दिर.JPG|बडिमालिका मन्दिर
File:बडिमालिका मन्दिरको बाटो.JPG|बडिमालिका मन्दिरको बाटो
File:बडिमालिका मन्दिर रहेको पहाड.JPG|बडिमालिका मन्दिर अवस्थीत पहाड
File:बडिमालिका मन्दिरमा पूजा गर्दे.JPG|बडिमालिका मन्दिरमा पूजा गर्दै
File:बडिमालिका मन्दिरबाट फर्केका मानिसहरु.JPG|बडिमालिका मन्दिरबाट फर्केका मानिसहरू
File:बडिमालिका मन्दिर अवस्थीत पहाड.JPG|बडिमालिका मन्दिर अवस्थीत पहाड
File:बडिमालिका मन्दिरबाट देखिने दृष्य.JPG|बडिमालिका मन्दिरबाट देखिने दृष्य
File:बडिमालिका मन्दिरबाट देखिने एक दृष्य.JPG|बडिमालिका मन्दिरबाट देखिने एक दृष्य
</gallery>
==श्रोत==
{{reflist|}}
==बाह्य कडीहरू==
*[http://m.ujyaaloonline.com/index.php?pआageName=news_details&id=10177&catId=21 पर्यटक पर्खदै बाजुराको बडिमालिका]{{Dead link|date=November 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[http://www.ekantipur.com/kantipur/news/news-detail.php?news_id=260067 सुरु भएन बडिमालिका संरक्षण योजना]
*[http://www.bbc.com/nepali/multimedia/2016/09/160902_badimalika_nepal?ocid=socialflow_facebook बडिमालिका यात्रा]
*[http://www.hamrogorkha.com/नियमित-स्तम्भ/पर्यटन/सौन्दर्यले-भरिएको-बाजुराको-बडिमालिका-(फोटोफिचर).htm बडिमालिका फोटो फिचर]{{Dead link|date=September 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[http://www.sidhadrishti.com/2016/05/108.html?m=1 स्वर्गको टुक्रा बडिमालिका] {{Webarchive|url=https://web.archive.org/web/20220117221717/http://www.sidhadrishti.com/2016/05/108.html?m=1 |date=2022-01-17 }}
==यी पनि हेर्नुहोस्==
{{सुदूर-पश्चिमकी नौ भगवती}}
{{नेपालका मन्दिरहरू}}
[[श्रेणी:नेपालका मन्दिरहरू]]
[[श्रेणी:बाजुरा जिल्लाका धार्मिक ठाउँहरू]]
8jek1ylua575l659ob8iydas179301e
1372325
1372324
2026-08-26T00:44:05Z
Rajeeb bastola
39875
1372325
wikitext
text/x-wiki
{{Short description|Hindu temple in Sudurpashchim, Nepal}}
{{more citations needed|date=August 2020}}
{{Infobox Mandir
|name = बडिमालिका मन्दिर
|image = Badi Malika.png
|
|alt = Temple premises
|caption =
|pushpin_map = Nepal
|pushpin_caption = Badimalika Temple in Nepal
|coordinates = {{coord|29.346916|81.477488|type:landmark_region:NP|display=inline,title}}
|sanskrit_translit =
|country = {{flag|Nepal}}
|state = [[Seti zone|Seti]]
|district = [[बाजुरा जिल्ला|बाजुरा]]
|location = [[Kailashmandau]], [[Bajura district|Bajura]] <ref>{{cite web|URL= http://fwdc.gov.np/ne/%E0%A4%A7%E0%A4%BE%E0%A4%B0%E0%A5%8D%E0%A4%AE%E0%A4%BF%E0%A4%95-%E0%A4%B8%E0%A5%8D%E0%A4%A5%E0%A4%BE%E0%A4%A8%E0%A4%B9%E0%A4%B0%E0%A5%81 |title= धार्मिक स्थलहरु |language= Nepali |publisher= www.fwdc.gov.np}}</ref>
|elevation_m =
|deity = [[Shakti]]
|festival = [[Ganga Dussehra]], Shrwan Shukla chaturdashi
|architecture = Pagoda Style
|temple_quantity =
|monument_quantity =
|inscriptions =
|creator =
|website =
|mapframe = yes
|mapframe-zoom = 12
|mapframe-wikidata = yes
}}
== पृष्ठभूमि ==
'''बडीमालिका''' विश्वका प्रमुख हिन्दु मन्दिरहरूमध्येको एक प्रशिद्ध मन्दिर हो । यो मन्दिर नेपालको सुदूरपश्चिम प्रदेशको बाजुरा जिल्लाको त्रिवेणी नगरपालिकामा वडा नं. ६ पन्धारामा पर्दछ । यहाँ प्रत्येक वर्ष साउन शुक्ल त्रयोदशी देखि चतुर्दशीका दिन मुख्य पूजा तथा हवन गरिन्छ । गंगा दशहरामा यहाँको पाती प्रसाद खप्तडमा ल्याएर चढाउने गरिन्छ । बडीमालिकामा २ जिल्लाका पुजारीहरुले पूजा गर्छन् । यी मध्ये १ बाजुरा जिल्लाको त्रिवेणी नगरपालिका वडा नं. ९ पैमाका हुन् भने अर्को कालिकोटका हुन् । हाल बाजुराबाट मुख्य पुजारीको रुपमा नेत्र पाध्याय रहेका छन् भने कालिकोटबाट हरी धमाला रहेका छन् ।
[[File : Badimalika Temple, Bajura, Nepal.jpg|thumb|बडीमालिका मन्दिर|300px]]
सम्वत् २०८२ सालमा यहाँको पुरानो मन्दिरको जिर्णोद्वार गरी नेपाली सेनाद्वारा नयाँ मन्दिर निर्माण गरिएको छ । बडीमालिका मन्दिर समुन्द्री सतहबाट ४,२२० मीटर उचाईमा अवस्थित छ । जुन विश्वमा रहेका हिन्दु मन्दिरहरुमध्ये सबैभन्दा अग्लो स्थानमा रहेको हिन्दु मन्दिर हो ।
बडीमालिका दर्शनका लागि जाने भक्तजनहरुले त्रिवेणी हुँदै जानु पर्ने हुन्छ । त्रिवेणी बाजुरा जिल्लाको त्रिवेणी नगरपालिका र कालिकोटको रास्कोट नगरपालिकाको सिमाना हो । यसको मुख्य भाग बाजुरा जिल्लाको त्रिवेणी नगरपालिका वडा नं. ५ किम्नीमा पर्दछ । बडीमालिका, त्रिवेणी बहुमूल्य जडिबुटीको भण्डार पनि हो ।
==किंवदन्ती==
पौराणिक कथा अनुसार [[शिव|महादेव]]की पत्नी [[सतिदेवी]]का पिता [[दक्ष प्रजापति]]ले यज्ञ गर्दा महादेव र सतिदेवीलाई बोलाएनन् । आफ्ना पति र आफूलाई यज्ञमा नबोलाएपछि सतिदेविले आफ्ना पिता दक्ष प्रजापतीले सञ्चालन गरेको यज्ञ स्थलमा गएर पितासँग आफ्ना पति महादेव र आफूलाई यज्ञमा नबोलाउनुको कारण सोधिन् । दक्ष प्रजापतीले महादेव [[भाङ]], [[धतुरो]] सेवन गर्ने, शमसान घाटमा वास गर्ने, गलामा [[सर्प]]को माला लगाउने, जटाधारी भेषमा रहने, शरीरभरी [[खरानी]] घस्ने, [[बाघ]]को छालाको पहिरने हुनाले यस यज्ञमा बस्दा शोभा नदिने भएकाले नबोलाएको बताए । पिताको जवाफ सुनेपछि सतिदेवीलाई आफ्ना पतिको अपमान गरिएको महशुस भयो र अपमान सहन गर्न नसकेर यज्ञकुण्डको अग्नीमा हाम फालेर प्राण त्याग गरिन् ।
आफ्नी पत्नि सतिदेवीले दक्ष प्रजापतिले सञ्चालन गरेको यज्ञमा हाम फालेर प्राण त्याग गरेपछि महादेव रिसाएर विरभद्रादी शिवगणलाई पठाएर दक्ष प्रजापतिलाई मारी दक्ष प्रजापतिले सञ्चालन गरेको यज्ञ तहस नहस पार्न लगाए । आफू भने पत्नी वियोगमा पागल भएर सतिदेवीको मृत शरिर बोकेर पुरा [[विश्व]] घुम्न थाले । यसै बेला [[विष्णु|भगवान बिष्णु]]ले आफ्नो चक्र सुदर्शन प्रहार गरी सतिदेवीको मृत शरीरमा किरा पारेर कुहाए । सतिदेवीको मृत शरीर कुहिए पछि महादेव जहाँ जहाँ गए त्यहाँ त्यहाँ सतिदेवीको मृत शरीरको कुहिएको अङ्ग खस्दै (पतन हुँदै) गए । यसरी ठाउँ ठाउँमा सतिदेवीको शरीरका अङ्गहरू पतन हुँदै जान थालेपछि जहाँ जहाँ सतिदवीका अङ्ग पतन भए त्यहाँ त्यहाँ एक एकवटा सिद्ध पिठ (प्रसिद्ध धार्मिक स्थल) बन्दै गए । यसै क्रममा हालको बाजुरा जिल्लाको मल्लागिरी पर्वतमा सतिदेवीको बायाँ कुम पतन भयो । पछि गएर सतिदेवीको बायाँ कुम पतन भएको त्यही पर्वतलाई मालिका र हाल आएर बडीमालिका भनिन थालियो ।
मल्लागिरी पर्वतमा मल्लिका अथवा [[मालिका देवी]] शक्ति स्वरूपले रहन थालिन् ।<ref>श्री स्वस्थानी ब्रतकथा</ref> तसर्थ यस स्थानमा बडिमालिका मन्दिर स्थापना गरेर पूजा गर्न थालियो ।
भनिन्छ पौराणिक कालमा भगवतीले महिषासुर नामको दैत्यको वध गरिसकेपछि कालिकोटको "द्वारेढुंगा" भन्ने ठाउँमा विश्राम गरेकी थिइन् । पछि गएर द्वारेढुंगामा एकजना दाउरा खोज्न गएको दलित भोकले व्याकुल भई देवीसँग बहरको मासु र हिया गहुँको रोटी माग्यो । देवीले त्यो दलितको मनोरथ पूरा गरिदिइन् । दलितले पूरै बहरलाई एक्लै खान नसकिने भएकाले आफ्नो घरका मान्छेलाई बोलाएछ । उसको घरको मानिसहरूले टाढा भएका कारण सुन्न सकेनन् । तब त्यो दलितलाई रिस उठ्यो। उसले भगवतीलाई भन्यो हे! प्रमेश्वरी मेरा घरका सबै मान्छे मरुन् । देवीले पनि इच्छाअनुसार वरदान दिइन् । त्यसपछि बहरको मासु लिएर दलित घर गएछ । घरमा हेर्दा त सबै जहानहरू मरेका देख्यो । फेरि दलित रिसायर द्वारेढुंगा पुग्यो । देवी उसलाई देखेर ढोका बन्द गरी त्यहाँबाट भागिन् । दलितले बहरको फिलाले देवीको घरमा हानेको छाप अझै द्वारे ढुङ्गामा देखिन्छ । यसो भएका कारण देवी सधैँका लागि त्यो ठाउँ छोडेर त्रिवेणी, पञ्चपुरी पाटन, मल्लपुरी पाटन हुँदै बडीमालिकामा गएर बसिन् । त्यसैले दलितहरू बडिमालिका जाँदैनन् भन्ने विश्वास गरिन्छ। अन्य भक्तजनहरू जो बाटो देवी गएकी हुन् त्यही बाटो भएर जान्छन् । <ref>जन जिब्रोमा प्रचलित कथा</ref>
==सरकारी पूजा==
बडीमालिका मन्दिरमा सरकारका तर्फबाट एकजना मुख्य पूजारी बनाइएका छन् । हाल बाजुरा जिल्ला त्रिवेणी नगरपालिका वडा नं. ९ पैमाका नेत्र पाध्याय मुख्य पुजारीका रुपमा रहेका छन् । पैमाका पुजारी नेत्र पाध्याय र उनका दाजुभाइहरू छोराहरूले सरकारी पूजा गराउँछन् । सरकारी पुजा गर्दा सबैभन्दा पहिले डोटी जिल्लाबाट पठाईएको गोरखनाथको टोलीको तर्फबाट सरकारी पुजा हुने गर्दछ भने त्यसपछि जुम्ला जिल्लाबाट चन्दननाथको टोलीको तर्फबाट सरकारी पुजा हुने गर्दछ । त्यसपछि क्रमश: [[अछाम जिल्ला|अछाम]], [[बाजुरा जिल्ला|बाजुरा]] र [[कालिकोट जिल्ला|कालिकोट]] जिल्लाका प्रमुख जिल्ला अधिकारी तथा निजका प्रतिनिधिहरु लगायत अन्य कर्मचारीहरूको हातबाट देवीको सरकारी पूजा सम्पन्न हुन्छ।
पछिल्लो समयमा कालिकोट, जुम्ला, मुगु, अछाम, बाजुरा, कैलाली जिल्लाका स्थानीय सरकारका तर्फबाट समेत बडीमालिका मन्दिरमा सरकारी पुजा गर्ने प्रचलन रहेको छ । कैलाली जिल्लामा रहेको सुदूरपश्चिम प्रदेशको एक मात्र उपमहानगरपालिका धनगढी उपमहानगरपालिकाको तर्फबाट सम्वत् २०८२ साल साउन २३ गतेका दिन पहिलो पटक सरकारी पुजा गरिएको छ । धनगढी उपमहानगरपालिका नगर प्रमुख श्री गोपाल हमालको पहलमा २०८२ सालदेखि बडीमालिका मन्दिरमा सरकारी पुजाको थालनी गरिएको हो ।
==प्राकृतिक सौन्दर्य==
बडीमालिका धार्मिक मात्र नभएर पर्यटकीय हिसाबले पनि महत्त्वपूर्ण मानिन्छ । नजिकै देखिने सुन्दर हिमाल, हिउँ कुल्चन पाउने सौभाग्य र मनोरम प्राकृतिक दृश्यहरू बडीमालिकाका गहना हुन् । बडीमालिकाको सौन्दर्य भनेकै विशाल फाँटहरू हुन् । बडमालिका क्षेत्रका ती विशाल फाँटहरुलाई स्थानीय भाषामा पाटन भनिन्छ । तर अचेल यी फाँटहरू बिस्तारै मासिँदै छन् । यी फाँटमा अनावश्यक चरन र जडीबुडी चोरी निकासीका कारण यसको सौन्दर्य मासिएको जिल्लाबासीको गुनासो छ ।
बडीमालिकामा प्रत्येक वर्ष [[श्रावण शुक्ल पूर्णिमा|जनै पूर्णिमा]]को अघिल्ला दिनहरु साउन त्रयोदशी देखि चतुर्दशीका दिन ठूलो मेला लाग्दछ । त्यो समयमा केही स्थानीय व्यापारीले खाजा नास्ताका पसल राख्ने गर्छन् । अन्य समयमा त्यहाँ खाजा नास्ताका कुनै पसलहरू खासै भेटिँदैनन् ।
बडीमालिका मन्दिरमा दर्शन गरेपछि आफ्नो मनोकांक्षा पूरा हुने जनविश्वास छ । मन्दिर परिसरबाट आँखै अगाडी देखिने [[साइपाल हिमाल|सैपाल]] हिमालको मनोरम दृश्यले यहाँको सौन्दर्यलाई झनै तिखारेको छ । बडीमालीका पुग्नका लागि उचित बास बस्ने स्थान नभएका कारण भक्तजन तथा पर्यटकले खानपिन तथा बासको जोहो आफै गर्नुपर्छ । यद्दपि साउन महिनामा लाग्ने मेलाको अवसरका बाटोमा त्रिपाल टाँगेर खान बस्नका लागि अस्थायी पसलहरु भने राखिएका भेटिन्छन् । तर ती पसलहरुले भक्तजनहरुको घुईंचोलाई धान्न भने सकेका हुँदैनन् ।
नेपालको विभिन्न जिल्लाका साथै भारतबाट पनि तीर्थालुहरू यहाँ मेला भर्न आउँछन् । भक्तजनहरूले आफूले मागेको वरदान पूरा हुन्छ भन्ने विश्वास गर्छन् । हालसम्म [[गङ्गा दशहरा|गंगा दशहरा]] र साउन त्रयोदशी देखि चतुर्शीसम्म गरी वर्षको दुईपटक मात्र लाग्दै आएको औपचारिक मेलाका कारण बडीमालिकाको महत्त्व सीमित छ । भक्तजनहरुको घुईंचो गंगा दशहरा भन्दा साउन चतुर्दशीमा बढी हुने गर्दछ ।
बडिमालिका मन्दिरसम्म पुग्नका लागि कालिकोट र बाजुरा जिल्लाका विभिन्न बाटोहरु प्रयोग गर्न सकिन्छ । कर्णाली प्रदेश र बाजुरा जिल्लाको नजिकको क्षेत्र बाहेक अन्य स्थानबाट बडीमालिका मन्दिर सम्म पुग्नका लागि सबै भन्दा सजिलो बाटो मार्तडी हुँदै जाने बाटो हो । नेपालको राजधानी काठमाण्डौं लगायतका क्षेत्रबाट यो बाटो हुँदै बडीमालिका जानका लागि सुदूरपश्चिम प्रदेशको धनगढीबाट बाजुरा जिल्लाको मार्तडीसम्म सडक यातायातको सुविधा छ । धनगढीबाट दिवा तथा रात्री सेवाका बसहरु वा आफ्नै निजी सवारी साधनको प्रयोग गरेर एक दिनमा पुग्न सकिन्छ । मार्तडीबाट पैदल हिडेर अर्को दिन फुल चढाउने ठाउँमा पुगेर बास बस्नु पर्ने हुन्छ । फुल चढाउने ठाउँमा एउटा सानो धर्मशाला त छ तर त्यो यात्रुका लागि पर्याप्त हुँदैन । तसर्थ आफैले टेण्ट बोकेर लैजानु बुद्धिमानी हुन्छ । त्यसको भोलीपल्ट भितीचिर्ना बास बस्न सकिन्छ भने पर्सि पल्ट त्रिवेणी पाटनमा बास बस्न सकिन्छ । त्रयोदशीको दिन बिहानै त्रिवेणीमा स्नान गरि बडीमालिका तर्फ लाग्ने हो भने बडीमालिका पुगिन्छ । त्यसैदिन वा भोली पल्ट बडिमालिका देवीकझ दर्शन तथा पुजा गरेर नाटेश्वरी तर्फ हिड्न सकिन्छ । नाटेश्वरी तर्फको बाटो साह्रै भिरालो र अत्यधिक चिप्लो भएकोले विहान र दिउँसोको समयम पारेर हिड्नु पर्छ । विहानै हिड्ने हो भने सोही दिन नाटेश्वरी पुगिन्छ भने दिउँसो हिड्दा ठूलागडासम्म बास बस्ने गरी पुग्न सकिन्छ । नाटेश्वरी तर्फ जाँदा विष्णुपानीका अस्थायी होटलमा खाना खान पाईन्छ । ठूलागडा बस्ने हो भने भोलीपल्ट १० बजेसम्म नाटेश्वरी पुगिन्छ । नाटेश्वरीमा जनैपूर्णिका दिन नाटेश्वरी माईंको दर्शन गरी नजिकै रहेको कालिका मन्दिरमा बलि पुजा गर्ने प्रचलन छ । नाटेश्वरीमा जनै फेर्ने र रक्षा बन्धनको काम पनि गरिन्छ । बलि पुजा गर्नेहरुले भातसँग बोकाको मासु प्रसादको रुपमा खाएर सोही दिन बुढीगंगा नगरपालिकाको बाम्का बजार तर्फ लाग्दछन् । बाम्का बजारबाट धनगढीका लागि बसहरु भेटिन्छन् । त्यही बस वा आफ्नै सवारी साधनबाट धनगढीको यात्रा गर्न सकिन्छ । यसरी यो रुटबाट यात्रा गर्दा कम्तिमा ६ दिन लाग्दछ । तर त्रिवेणी र बडीमालिकाका सुन्दर दृश्यहरु हेर्नका लागि २ दिन थप गरेर ८ दिन लगाउने हो भने १ दिन त्रिवेणी र १ दिन बडीमालिकामा रहेर थप आनन्द लिन सकिन्छ ।
हवाई मार्गको प्रयोग गर्ने हो भने नेपालगञ्जबाट बाजुराको बुढीगंगा नगरपालिकाको कोल्टी एअरपोर्टसम्म गएर त्यहाँबाट १ दिनमा बाजुराको सदरमुकाम मार्तडी पुग्न सकिन्छ । मार्तडीबाट माथि भनिए झैं यात्रा गर्न सकिन्छ । कोल्टीबाटै फर्कने हो भने फर्कदा बडीमालिका-त्रिवेणी-भितिचिर्ना-फुल चढाउने-मार्तडी- कोल्टी हुँदै फर्कन सकिन्छ ।
बाजुराबाट कोर्ध-बुढाकोर्ध-भितिचिर्ना-त्रिवेणी-बडीमालिकाको बाटो पनि प्रयोग गर्न सकिन्छ । त्यस्तै बल्दे-पैमा पुजारीको घर हुँदै बडीमालिका जान पनि सकिन्छ । बाम्का बजार-मौरे-नाटेश्वरी हुँदै पनि बडीमालिका जान मिल्दछ । त्यस्तै बाम्का बजार-तोली-छतारा-पञ्चपुरी हुँदै पनि बडीमालिका जान सकिन्छ । बल्दे, बाम्का, पञ्चपुरीको बाटो प्रयोग गर्दा बडीमालिका पुगेर त्रिवेणी जानु पर्ने हुन्छ, त्रिवेणीमा नुहाएर फेरी बडीमालिका आउनु पर्ने हुन्छ ।
बडीमालिका ४,२२० मिटर उचाईंमा रहेको, बाटोहरु भिरालो रहेको, लेकाली विशालु जडिबुटीहरु फुलेर विश लाग्ने, लेक लाग्ने जस्ता कारणले बडीमालिका पुग्न जो कोहीलाई हम्मे हम्मे पर्दछ । तर पनि देवीको अनुकम्पाले अधिकाँश भक्तजनहरुले यात्रा पुरा गरेका हुन्छन् ।
बडीमालिकाको यात्रा गर्दा आजकाल ठाउँमा त्रिपाल राखेर खानाका लागि अस्थायी होटेलहरु राखिएका हुनाले खानाका लागि त्यति समस्या हुँदैन । तैपनि बाटोमा भोक लागेको बेला खानका लागि र बास बस्ने ठाउँमा खानेकुरा नपाएको अवस्थामा खानका लागि सातु वा आफुलाई मन पर्ने शुद्ध शाकाहारी ड्राई फुड बोकेर लैजान सकिन्छ । यसरी बोक्ने सामान भारी (गह्रौं) भने हुनु हुँदैन । भारी भयो भने बोकेर हिड्नलाई धेरै गाह्रो हुन सक्छ । लेक लाग्दा सुँघ्नका लागि पुजा गर्ने कपुर बोकिराख्नु भयो भने फाईदाजनक हुन्छ । पोलेको अदुवा, नुन खुर्शानी र टिम्मुर मिश्रित धुलो साथमा राखेर बेला बेलामा खानाले पनि लेक लाग्नबाट बच्न सकिन्छ । धेरै जसो ठाउँमा पानी नपाउने हुँदा पानीमा लागि बोटल साथमा राखेर हमेशा त्यसमा पानी भरिराख्नु पर्दछ । शौच सफा गर्न, मुख पुछ्न ट्वाइलेट पेपर, वेट टिस्यु पेपर साथमा लैजाँदा राम्रो हुन्छ । चिसोबाट जोगिन भिक्स, लिप गार्ड, इन्हेलर, कोल्ड क्रिम साथमा राखेर बेला बेला प्रयोग गर्नु बुद्धिमानी हुन्छ । जीउको दुखाई कम गर्न मुभ, सिटामोल जस्ता औषधी साथमा राखिराख्नु पर्दछ । रात्री सुत्नका लागि सिलिपिङ व्याग, टेण्ट, ज्याकेट, थर्मकोल लिनु भयो भने राम्रो हुन्छ ।
बडीमालिका क्षेत्रका सुन्दर दृश्यहरु कैद गर्नका लागि मोबाईल वा क्यामेराको साथमा पावर व्याकअप लैजानु पर्ने हुन्छ । पावर व्याकअप लिंदा कम्तिमा ६ दिनसम्म चार्ज गर्न मिल्ने क्षमता भएको पावर व्याकअप लैजानु पर्दछ।
==सञ्चार सेवा==
धार्मिक तथा पर्यटकीय दृष्टिले महत्वपूर्ण [[बाजुरा जिल्ला|बाजुरा]]को बडीमालिका क्षेत्रमा दूरसञ्चार तथा इन्टरनेट सेवाको पहुँच विस्तार भएको छ। नेपाल टेलिकमले बडीमालिका क्षेत्रमा फोर-जी सेवा विस्तार गरेपछि ८ भाद्र, २०८३ सोमबारदेखि उक्त क्षेत्रमा मोबाइल फोन तथा इन्टरनेट सेवा सञ्चालनमा आएको हो।<ref>{{वेब स्रोत|लेखक=गोरखापत्र अनलाइन|शीर्षक=बडीमालिका क्षेत्रमा पुग्यो टेलिफोन र इन्टरनेट सेवा|युआरएल=https://gorkhapatraonline.com/news/219713|कार्य=|प्रकाशक=|वेबसाइट=गोरखापत्र अनलाइन|भाषा=नेपाली)|अभिलेखमिति=|अभिलेखयुआरएल=|मिति=|पहुँचमिति=२४ अगस्ट २०२६}}</ref>
जनैपूर्णिमाका अवसरमा बडीमालिका क्षेत्रमा आयोजना हुने धार्मिक मेलाको पूर्वसन्ध्यामा सञ्चार सेवा सञ्चालनमा आएको हो। समुद्री सतहबाट करिब ४,२०० मिटरको उचाइमा रहेको यस क्षेत्रमा सञ्चार सेवा विस्तार भएपछि स्थानीयवासी, तीर्थयात्री, पर्यटक तथा विभिन्न सरकारी तथा गैरसरकारी निकायलाई सञ्चार सम्पर्कमा सहजता हुने अपेक्षा गरिएको छ।
यसअघि दुर्गम तथा उच्च हिमाली क्षेत्रमा अवस्थित बडीमालिका क्षेत्रमा मोबाइल तथा इन्टरनेट सेवाको पहुँच सीमित थियो। फोर-जी सेवा विस्तारसँगै मोबाइल फोन तथा इन्टरनेट प्रयोग गर्न सहज भएको छ। यसले धार्मिक तथा पर्यटकीय गतिविधिका साथै सूचना आदानप्रदान र आपत्कालीन अवस्थामा सञ्चार सम्पर्क कायम गर्न समेत सहयोग पुग्ने अपेक्षा गरिएको छ।<ref>{{वेब स्रोत|लेखक=दिलबहादुर छत्याल|शीर्षक=बडीमालिकामा पुग्यो इन्टरनेट|युआरएल=https://nagariknews.nagariknetwork.com/technology/internet-reaches-badimalika-38-72.html|कार्य=|प्रकाशक=|वेबसाइट=नागरिक अनलाइन|भाषा=नेपाली)|अभिलेखमिति=|अभिलेखयुआरएल=|मिति=|पहुँचमिति=२४ अगस्ट २०२६}}</ref>
==तस्विर ग्यालरी==
<gallery>
File:बडिमालिका मन्दिर.JPG|बडिमालिका मन्दिर
File:बडिमालिका मन्दिरको बाटो.JPG|बडिमालिका मन्दिरको बाटो
File:बडिमालिका मन्दिर रहेको पहाड.JPG|बडिमालिका मन्दिर अवस्थीत पहाड
File:बडिमालिका मन्दिरमा पूजा गर्दे.JPG|बडिमालिका मन्दिरमा पूजा गर्दै
File:बडिमालिका मन्दिरबाट फर्केका मानिसहरु.JPG|बडिमालिका मन्दिरबाट फर्केका मानिसहरू
File:बडिमालिका मन्दिर अवस्थीत पहाड.JPG|बडिमालिका मन्दिर अवस्थीत पहाड
File:बडिमालिका मन्दिरबाट देखिने दृष्य.JPG|बडिमालिका मन्दिरबाट देखिने दृष्य
File:बडिमालिका मन्दिरबाट देखिने एक दृष्य.JPG|बडिमालिका मन्दिरबाट देखिने एक दृष्य
</gallery>
==श्रोत==
{{reflist|}}
==बाह्य कडीहरू==
*[http://m.ujyaaloonline.com/index.php?pआageName=news_details&id=10177&catId=21 पर्यटक पर्खदै बाजुराको बडिमालिका]{{Dead link|date=November 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[http://www.ekantipur.com/kantipur/news/news-detail.php?news_id=260067 सुरु भएन बडिमालिका संरक्षण योजना]
*[http://www.bbc.com/nepali/multimedia/2016/09/160902_badimalika_nepal?ocid=socialflow_facebook बडिमालिका यात्रा]
*[http://www.hamrogorkha.com/नियमित-स्तम्भ/पर्यटन/सौन्दर्यले-भरिएको-बाजुराको-बडिमालिका-(फोटोफिचर).htm बडिमालिका फोटो फिचर]{{Dead link|date=September 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[http://www.sidhadrishti.com/2016/05/108.html?m=1 स्वर्गको टुक्रा बडिमालिका] {{Webarchive|url=https://web.archive.org/web/20220117221717/http://www.sidhadrishti.com/2016/05/108.html?m=1 |date=2022-01-17 }}
==यी पनि हेर्नुहोस्==
{{सुदूर-पश्चिमकी नौ भगवती}}
{{नेपालका मन्दिरहरू}}
[[श्रेणी:नेपालका मन्दिरहरू]]
[[श्रेणी:बाजुरा जिल्लाका धार्मिक ठाउँहरू]]
4h9kxe6r3hg7u0nb1dalumx7p2gnxze
1372326
1372325
2026-08-26T00:45:03Z
Rajeeb bastola
39875
1372326
wikitext
text/x-wiki
{{Short description|Hindu temple in Sudurpashchim, Nepal}}
{{more citations needed|date=August 2020}}
{{Infobox Mandir
|name = बडिमालिका मन्दिर
|image = Badi Malika.png
|
|alt = Temple premises
|caption =
|pushpin_map = Nepal
|pushpin_caption = Badimalika Temple in Nepal
|coordinates = {{coord|29.346916|81.477488|type:landmark_region:NP|display=inline,title}}
|sanskrit_translit =
|country = {{flag|नेपाल}}
|state = [[Seti zone|Seti]]
|district = [[बाजुरा जिल्ला|बाजुरा]]
|location = [[Kailashmandau]], [[Bajura district|Bajura]] <ref>{{cite web|URL= http://fwdc.gov.np/ne/%E0%A4%A7%E0%A4%BE%E0%A4%B0%E0%A5%8D%E0%A4%AE%E0%A4%BF%E0%A4%95-%E0%A4%B8%E0%A5%8D%E0%A4%A5%E0%A4%BE%E0%A4%A8%E0%A4%B9%E0%A4%B0%E0%A5%81 |title= धार्मिक स्थलहरु |language= Nepali |publisher= www.fwdc.gov.np}}</ref>
|elevation_m =
|deity = [[Shakti]]
|festival = [[Ganga Dussehra]], Shrwan Shukla chaturdashi
|architecture = Pagoda Style
|temple_quantity =
|monument_quantity =
|inscriptions =
|creator =
|website =
|mapframe = yes
|mapframe-zoom = 12
|mapframe-wikidata = yes
}}
== पृष्ठभूमि ==
'''बडीमालिका''' विश्वका प्रमुख हिन्दु मन्दिरहरूमध्येको एक प्रशिद्ध मन्दिर हो । यो मन्दिर नेपालको सुदूरपश्चिम प्रदेशको बाजुरा जिल्लाको त्रिवेणी नगरपालिकामा वडा नं. ६ पन्धारामा पर्दछ । यहाँ प्रत्येक वर्ष साउन शुक्ल त्रयोदशी देखि चतुर्दशीका दिन मुख्य पूजा तथा हवन गरिन्छ । गंगा दशहरामा यहाँको पाती प्रसाद खप्तडमा ल्याएर चढाउने गरिन्छ । बडीमालिकामा २ जिल्लाका पुजारीहरुले पूजा गर्छन् । यी मध्ये १ बाजुरा जिल्लाको त्रिवेणी नगरपालिका वडा नं. ९ पैमाका हुन् भने अर्को कालिकोटका हुन् । हाल बाजुराबाट मुख्य पुजारीको रुपमा नेत्र पाध्याय रहेका छन् भने कालिकोटबाट हरी धमाला रहेका छन् ।
[[File : Badimalika Temple, Bajura, Nepal.jpg|thumb|बडीमालिका मन्दिर|300px]]
सम्वत् २०८२ सालमा यहाँको पुरानो मन्दिरको जिर्णोद्वार गरी नेपाली सेनाद्वारा नयाँ मन्दिर निर्माण गरिएको छ । बडीमालिका मन्दिर समुन्द्री सतहबाट ४,२२० मीटर उचाईमा अवस्थित छ । जुन विश्वमा रहेका हिन्दु मन्दिरहरुमध्ये सबैभन्दा अग्लो स्थानमा रहेको हिन्दु मन्दिर हो ।
बडीमालिका दर्शनका लागि जाने भक्तजनहरुले त्रिवेणी हुँदै जानु पर्ने हुन्छ । त्रिवेणी बाजुरा जिल्लाको त्रिवेणी नगरपालिका र कालिकोटको रास्कोट नगरपालिकाको सिमाना हो । यसको मुख्य भाग बाजुरा जिल्लाको त्रिवेणी नगरपालिका वडा नं. ५ किम्नीमा पर्दछ । बडीमालिका, त्रिवेणी बहुमूल्य जडिबुटीको भण्डार पनि हो ।
==किंवदन्ती==
पौराणिक कथा अनुसार [[शिव|महादेव]]की पत्नी [[सतिदेवी]]का पिता [[दक्ष प्रजापति]]ले यज्ञ गर्दा महादेव र सतिदेवीलाई बोलाएनन् । आफ्ना पति र आफूलाई यज्ञमा नबोलाएपछि सतिदेविले आफ्ना पिता दक्ष प्रजापतीले सञ्चालन गरेको यज्ञ स्थलमा गएर पितासँग आफ्ना पति महादेव र आफूलाई यज्ञमा नबोलाउनुको कारण सोधिन् । दक्ष प्रजापतीले महादेव [[भाङ]], [[धतुरो]] सेवन गर्ने, शमसान घाटमा वास गर्ने, गलामा [[सर्प]]को माला लगाउने, जटाधारी भेषमा रहने, शरीरभरी [[खरानी]] घस्ने, [[बाघ]]को छालाको पहिरने हुनाले यस यज्ञमा बस्दा शोभा नदिने भएकाले नबोलाएको बताए । पिताको जवाफ सुनेपछि सतिदेवीलाई आफ्ना पतिको अपमान गरिएको महशुस भयो र अपमान सहन गर्न नसकेर यज्ञकुण्डको अग्नीमा हाम फालेर प्राण त्याग गरिन् ।
आफ्नी पत्नि सतिदेवीले दक्ष प्रजापतिले सञ्चालन गरेको यज्ञमा हाम फालेर प्राण त्याग गरेपछि महादेव रिसाएर विरभद्रादी शिवगणलाई पठाएर दक्ष प्रजापतिलाई मारी दक्ष प्रजापतिले सञ्चालन गरेको यज्ञ तहस नहस पार्न लगाए । आफू भने पत्नी वियोगमा पागल भएर सतिदेवीको मृत शरिर बोकेर पुरा [[विश्व]] घुम्न थाले । यसै बेला [[विष्णु|भगवान बिष्णु]]ले आफ्नो चक्र सुदर्शन प्रहार गरी सतिदेवीको मृत शरीरमा किरा पारेर कुहाए । सतिदेवीको मृत शरीर कुहिए पछि महादेव जहाँ जहाँ गए त्यहाँ त्यहाँ सतिदेवीको मृत शरीरको कुहिएको अङ्ग खस्दै (पतन हुँदै) गए । यसरी ठाउँ ठाउँमा सतिदेवीको शरीरका अङ्गहरू पतन हुँदै जान थालेपछि जहाँ जहाँ सतिदवीका अङ्ग पतन भए त्यहाँ त्यहाँ एक एकवटा सिद्ध पिठ (प्रसिद्ध धार्मिक स्थल) बन्दै गए । यसै क्रममा हालको बाजुरा जिल्लाको मल्लागिरी पर्वतमा सतिदेवीको बायाँ कुम पतन भयो । पछि गएर सतिदेवीको बायाँ कुम पतन भएको त्यही पर्वतलाई मालिका र हाल आएर बडीमालिका भनिन थालियो ।
मल्लागिरी पर्वतमा मल्लिका अथवा [[मालिका देवी]] शक्ति स्वरूपले रहन थालिन् ।<ref>श्री स्वस्थानी ब्रतकथा</ref> तसर्थ यस स्थानमा बडिमालिका मन्दिर स्थापना गरेर पूजा गर्न थालियो ।
भनिन्छ पौराणिक कालमा भगवतीले महिषासुर नामको दैत्यको वध गरिसकेपछि कालिकोटको "द्वारेढुंगा" भन्ने ठाउँमा विश्राम गरेकी थिइन् । पछि गएर द्वारेढुंगामा एकजना दाउरा खोज्न गएको दलित भोकले व्याकुल भई देवीसँग बहरको मासु र हिया गहुँको रोटी माग्यो । देवीले त्यो दलितको मनोरथ पूरा गरिदिइन् । दलितले पूरै बहरलाई एक्लै खान नसकिने भएकाले आफ्नो घरका मान्छेलाई बोलाएछ । उसको घरको मानिसहरूले टाढा भएका कारण सुन्न सकेनन् । तब त्यो दलितलाई रिस उठ्यो। उसले भगवतीलाई भन्यो हे! प्रमेश्वरी मेरा घरका सबै मान्छे मरुन् । देवीले पनि इच्छाअनुसार वरदान दिइन् । त्यसपछि बहरको मासु लिएर दलित घर गएछ । घरमा हेर्दा त सबै जहानहरू मरेका देख्यो । फेरि दलित रिसायर द्वारेढुंगा पुग्यो । देवी उसलाई देखेर ढोका बन्द गरी त्यहाँबाट भागिन् । दलितले बहरको फिलाले देवीको घरमा हानेको छाप अझै द्वारे ढुङ्गामा देखिन्छ । यसो भएका कारण देवी सधैँका लागि त्यो ठाउँ छोडेर त्रिवेणी, पञ्चपुरी पाटन, मल्लपुरी पाटन हुँदै बडीमालिकामा गएर बसिन् । त्यसैले दलितहरू बडिमालिका जाँदैनन् भन्ने विश्वास गरिन्छ। अन्य भक्तजनहरू जो बाटो देवी गएकी हुन् त्यही बाटो भएर जान्छन् । <ref>जन जिब्रोमा प्रचलित कथा</ref>
==सरकारी पूजा==
बडीमालिका मन्दिरमा सरकारका तर्फबाट एकजना मुख्य पूजारी बनाइएका छन् । हाल बाजुरा जिल्ला त्रिवेणी नगरपालिका वडा नं. ९ पैमाका नेत्र पाध्याय मुख्य पुजारीका रुपमा रहेका छन् । पैमाका पुजारी नेत्र पाध्याय र उनका दाजुभाइहरू छोराहरूले सरकारी पूजा गराउँछन् । सरकारी पुजा गर्दा सबैभन्दा पहिले डोटी जिल्लाबाट पठाईएको गोरखनाथको टोलीको तर्फबाट सरकारी पुजा हुने गर्दछ भने त्यसपछि जुम्ला जिल्लाबाट चन्दननाथको टोलीको तर्फबाट सरकारी पुजा हुने गर्दछ । त्यसपछि क्रमश: [[अछाम जिल्ला|अछाम]], [[बाजुरा जिल्ला|बाजुरा]] र [[कालिकोट जिल्ला|कालिकोट]] जिल्लाका प्रमुख जिल्ला अधिकारी तथा निजका प्रतिनिधिहरु लगायत अन्य कर्मचारीहरूको हातबाट देवीको सरकारी पूजा सम्पन्न हुन्छ।
पछिल्लो समयमा कालिकोट, जुम्ला, मुगु, अछाम, बाजुरा, कैलाली जिल्लाका स्थानीय सरकारका तर्फबाट समेत बडीमालिका मन्दिरमा सरकारी पुजा गर्ने प्रचलन रहेको छ । कैलाली जिल्लामा रहेको सुदूरपश्चिम प्रदेशको एक मात्र उपमहानगरपालिका धनगढी उपमहानगरपालिकाको तर्फबाट सम्वत् २०८२ साल साउन २३ गतेका दिन पहिलो पटक सरकारी पुजा गरिएको छ । धनगढी उपमहानगरपालिका नगर प्रमुख श्री गोपाल हमालको पहलमा २०८२ सालदेखि बडीमालिका मन्दिरमा सरकारी पुजाको थालनी गरिएको हो ।
==प्राकृतिक सौन्दर्य==
बडीमालिका धार्मिक मात्र नभएर पर्यटकीय हिसाबले पनि महत्त्वपूर्ण मानिन्छ । नजिकै देखिने सुन्दर हिमाल, हिउँ कुल्चन पाउने सौभाग्य र मनोरम प्राकृतिक दृश्यहरू बडीमालिकाका गहना हुन् । बडीमालिकाको सौन्दर्य भनेकै विशाल फाँटहरू हुन् । बडमालिका क्षेत्रका ती विशाल फाँटहरुलाई स्थानीय भाषामा पाटन भनिन्छ । तर अचेल यी फाँटहरू बिस्तारै मासिँदै छन् । यी फाँटमा अनावश्यक चरन र जडीबुडी चोरी निकासीका कारण यसको सौन्दर्य मासिएको जिल्लाबासीको गुनासो छ ।
बडीमालिकामा प्रत्येक वर्ष [[श्रावण शुक्ल पूर्णिमा|जनै पूर्णिमा]]को अघिल्ला दिनहरु साउन त्रयोदशी देखि चतुर्दशीका दिन ठूलो मेला लाग्दछ । त्यो समयमा केही स्थानीय व्यापारीले खाजा नास्ताका पसल राख्ने गर्छन् । अन्य समयमा त्यहाँ खाजा नास्ताका कुनै पसलहरू खासै भेटिँदैनन् ।
बडीमालिका मन्दिरमा दर्शन गरेपछि आफ्नो मनोकांक्षा पूरा हुने जनविश्वास छ । मन्दिर परिसरबाट आँखै अगाडी देखिने [[साइपाल हिमाल|सैपाल]] हिमालको मनोरम दृश्यले यहाँको सौन्दर्यलाई झनै तिखारेको छ । बडीमालीका पुग्नका लागि उचित बास बस्ने स्थान नभएका कारण भक्तजन तथा पर्यटकले खानपिन तथा बासको जोहो आफै गर्नुपर्छ । यद्दपि साउन महिनामा लाग्ने मेलाको अवसरका बाटोमा त्रिपाल टाँगेर खान बस्नका लागि अस्थायी पसलहरु भने राखिएका भेटिन्छन् । तर ती पसलहरुले भक्तजनहरुको घुईंचोलाई धान्न भने सकेका हुँदैनन् ।
नेपालको विभिन्न जिल्लाका साथै भारतबाट पनि तीर्थालुहरू यहाँ मेला भर्न आउँछन् । भक्तजनहरूले आफूले मागेको वरदान पूरा हुन्छ भन्ने विश्वास गर्छन् । हालसम्म [[गङ्गा दशहरा|गंगा दशहरा]] र साउन त्रयोदशी देखि चतुर्शीसम्म गरी वर्षको दुईपटक मात्र लाग्दै आएको औपचारिक मेलाका कारण बडीमालिकाको महत्त्व सीमित छ । भक्तजनहरुको घुईंचो गंगा दशहरा भन्दा साउन चतुर्दशीमा बढी हुने गर्दछ ।
बडिमालिका मन्दिरसम्म पुग्नका लागि कालिकोट र बाजुरा जिल्लाका विभिन्न बाटोहरु प्रयोग गर्न सकिन्छ । कर्णाली प्रदेश र बाजुरा जिल्लाको नजिकको क्षेत्र बाहेक अन्य स्थानबाट बडीमालिका मन्दिर सम्म पुग्नका लागि सबै भन्दा सजिलो बाटो मार्तडी हुँदै जाने बाटो हो । नेपालको राजधानी काठमाण्डौं लगायतका क्षेत्रबाट यो बाटो हुँदै बडीमालिका जानका लागि सुदूरपश्चिम प्रदेशको धनगढीबाट बाजुरा जिल्लाको मार्तडीसम्म सडक यातायातको सुविधा छ । धनगढीबाट दिवा तथा रात्री सेवाका बसहरु वा आफ्नै निजी सवारी साधनको प्रयोग गरेर एक दिनमा पुग्न सकिन्छ । मार्तडीबाट पैदल हिडेर अर्को दिन फुल चढाउने ठाउँमा पुगेर बास बस्नु पर्ने हुन्छ । फुल चढाउने ठाउँमा एउटा सानो धर्मशाला त छ तर त्यो यात्रुका लागि पर्याप्त हुँदैन । तसर्थ आफैले टेण्ट बोकेर लैजानु बुद्धिमानी हुन्छ । त्यसको भोलीपल्ट भितीचिर्ना बास बस्न सकिन्छ भने पर्सि पल्ट त्रिवेणी पाटनमा बास बस्न सकिन्छ । त्रयोदशीको दिन बिहानै त्रिवेणीमा स्नान गरि बडीमालिका तर्फ लाग्ने हो भने बडीमालिका पुगिन्छ । त्यसैदिन वा भोली पल्ट बडिमालिका देवीकझ दर्शन तथा पुजा गरेर नाटेश्वरी तर्फ हिड्न सकिन्छ । नाटेश्वरी तर्फको बाटो साह्रै भिरालो र अत्यधिक चिप्लो भएकोले विहान र दिउँसोको समयम पारेर हिड्नु पर्छ । विहानै हिड्ने हो भने सोही दिन नाटेश्वरी पुगिन्छ भने दिउँसो हिड्दा ठूलागडासम्म बास बस्ने गरी पुग्न सकिन्छ । नाटेश्वरी तर्फ जाँदा विष्णुपानीका अस्थायी होटलमा खाना खान पाईन्छ । ठूलागडा बस्ने हो भने भोलीपल्ट १० बजेसम्म नाटेश्वरी पुगिन्छ । नाटेश्वरीमा जनैपूर्णिका दिन नाटेश्वरी माईंको दर्शन गरी नजिकै रहेको कालिका मन्दिरमा बलि पुजा गर्ने प्रचलन छ । नाटेश्वरीमा जनै फेर्ने र रक्षा बन्धनको काम पनि गरिन्छ । बलि पुजा गर्नेहरुले भातसँग बोकाको मासु प्रसादको रुपमा खाएर सोही दिन बुढीगंगा नगरपालिकाको बाम्का बजार तर्फ लाग्दछन् । बाम्का बजारबाट धनगढीका लागि बसहरु भेटिन्छन् । त्यही बस वा आफ्नै सवारी साधनबाट धनगढीको यात्रा गर्न सकिन्छ । यसरी यो रुटबाट यात्रा गर्दा कम्तिमा ६ दिन लाग्दछ । तर त्रिवेणी र बडीमालिकाका सुन्दर दृश्यहरु हेर्नका लागि २ दिन थप गरेर ८ दिन लगाउने हो भने १ दिन त्रिवेणी र १ दिन बडीमालिकामा रहेर थप आनन्द लिन सकिन्छ ।
हवाई मार्गको प्रयोग गर्ने हो भने नेपालगञ्जबाट बाजुराको बुढीगंगा नगरपालिकाको कोल्टी एअरपोर्टसम्म गएर त्यहाँबाट १ दिनमा बाजुराको सदरमुकाम मार्तडी पुग्न सकिन्छ । मार्तडीबाट माथि भनिए झैं यात्रा गर्न सकिन्छ । कोल्टीबाटै फर्कने हो भने फर्कदा बडीमालिका-त्रिवेणी-भितिचिर्ना-फुल चढाउने-मार्तडी- कोल्टी हुँदै फर्कन सकिन्छ ।
बाजुराबाट कोर्ध-बुढाकोर्ध-भितिचिर्ना-त्रिवेणी-बडीमालिकाको बाटो पनि प्रयोग गर्न सकिन्छ । त्यस्तै बल्दे-पैमा पुजारीको घर हुँदै बडीमालिका जान पनि सकिन्छ । बाम्का बजार-मौरे-नाटेश्वरी हुँदै पनि बडीमालिका जान मिल्दछ । त्यस्तै बाम्का बजार-तोली-छतारा-पञ्चपुरी हुँदै पनि बडीमालिका जान सकिन्छ । बल्दे, बाम्का, पञ्चपुरीको बाटो प्रयोग गर्दा बडीमालिका पुगेर त्रिवेणी जानु पर्ने हुन्छ, त्रिवेणीमा नुहाएर फेरी बडीमालिका आउनु पर्ने हुन्छ ।
बडीमालिका ४,२२० मिटर उचाईंमा रहेको, बाटोहरु भिरालो रहेको, लेकाली विशालु जडिबुटीहरु फुलेर विश लाग्ने, लेक लाग्ने जस्ता कारणले बडीमालिका पुग्न जो कोहीलाई हम्मे हम्मे पर्दछ । तर पनि देवीको अनुकम्पाले अधिकाँश भक्तजनहरुले यात्रा पुरा गरेका हुन्छन् ।
बडीमालिकाको यात्रा गर्दा आजकाल ठाउँमा त्रिपाल राखेर खानाका लागि अस्थायी होटेलहरु राखिएका हुनाले खानाका लागि त्यति समस्या हुँदैन । तैपनि बाटोमा भोक लागेको बेला खानका लागि र बास बस्ने ठाउँमा खानेकुरा नपाएको अवस्थामा खानका लागि सातु वा आफुलाई मन पर्ने शुद्ध शाकाहारी ड्राई फुड बोकेर लैजान सकिन्छ । यसरी बोक्ने सामान भारी (गह्रौं) भने हुनु हुँदैन । भारी भयो भने बोकेर हिड्नलाई धेरै गाह्रो हुन सक्छ । लेक लाग्दा सुँघ्नका लागि पुजा गर्ने कपुर बोकिराख्नु भयो भने फाईदाजनक हुन्छ । पोलेको अदुवा, नुन खुर्शानी र टिम्मुर मिश्रित धुलो साथमा राखेर बेला बेलामा खानाले पनि लेक लाग्नबाट बच्न सकिन्छ । धेरै जसो ठाउँमा पानी नपाउने हुँदा पानीमा लागि बोटल साथमा राखेर हमेशा त्यसमा पानी भरिराख्नु पर्दछ । शौच सफा गर्न, मुख पुछ्न ट्वाइलेट पेपर, वेट टिस्यु पेपर साथमा लैजाँदा राम्रो हुन्छ । चिसोबाट जोगिन भिक्स, लिप गार्ड, इन्हेलर, कोल्ड क्रिम साथमा राखेर बेला बेला प्रयोग गर्नु बुद्धिमानी हुन्छ । जीउको दुखाई कम गर्न मुभ, सिटामोल जस्ता औषधी साथमा राखिराख्नु पर्दछ । रात्री सुत्नका लागि सिलिपिङ व्याग, टेण्ट, ज्याकेट, थर्मकोल लिनु भयो भने राम्रो हुन्छ ।
बडीमालिका क्षेत्रका सुन्दर दृश्यहरु कैद गर्नका लागि मोबाईल वा क्यामेराको साथमा पावर व्याकअप लैजानु पर्ने हुन्छ । पावर व्याकअप लिंदा कम्तिमा ६ दिनसम्म चार्ज गर्न मिल्ने क्षमता भएको पावर व्याकअप लैजानु पर्दछ।
==सञ्चार सेवा==
धार्मिक तथा पर्यटकीय दृष्टिले महत्वपूर्ण [[बाजुरा जिल्ला|बाजुरा]]को बडीमालिका क्षेत्रमा दूरसञ्चार तथा इन्टरनेट सेवाको पहुँच विस्तार भएको छ। नेपाल टेलिकमले बडीमालिका क्षेत्रमा फोर-जी सेवा विस्तार गरेपछि ८ भाद्र, २०८३ सोमबारदेखि उक्त क्षेत्रमा मोबाइल फोन तथा इन्टरनेट सेवा सञ्चालनमा आएको हो।<ref>{{वेब स्रोत|लेखक=गोरखापत्र अनलाइन|शीर्षक=बडीमालिका क्षेत्रमा पुग्यो टेलिफोन र इन्टरनेट सेवा|युआरएल=https://gorkhapatraonline.com/news/219713|कार्य=|प्रकाशक=|वेबसाइट=गोरखापत्र अनलाइन|भाषा=नेपाली)|अभिलेखमिति=|अभिलेखयुआरएल=|मिति=|पहुँचमिति=२४ अगस्ट २०२६}}</ref>
जनैपूर्णिमाका अवसरमा बडीमालिका क्षेत्रमा आयोजना हुने धार्मिक मेलाको पूर्वसन्ध्यामा सञ्चार सेवा सञ्चालनमा आएको हो। समुद्री सतहबाट करिब ४,२०० मिटरको उचाइमा रहेको यस क्षेत्रमा सञ्चार सेवा विस्तार भएपछि स्थानीयवासी, तीर्थयात्री, पर्यटक तथा विभिन्न सरकारी तथा गैरसरकारी निकायलाई सञ्चार सम्पर्कमा सहजता हुने अपेक्षा गरिएको छ।
यसअघि दुर्गम तथा उच्च हिमाली क्षेत्रमा अवस्थित बडीमालिका क्षेत्रमा मोबाइल तथा इन्टरनेट सेवाको पहुँच सीमित थियो। फोर-जी सेवा विस्तारसँगै मोबाइल फोन तथा इन्टरनेट प्रयोग गर्न सहज भएको छ। यसले धार्मिक तथा पर्यटकीय गतिविधिका साथै सूचना आदानप्रदान र आपत्कालीन अवस्थामा सञ्चार सम्पर्क कायम गर्न समेत सहयोग पुग्ने अपेक्षा गरिएको छ।<ref>{{वेब स्रोत|लेखक=दिलबहादुर छत्याल|शीर्षक=बडीमालिकामा पुग्यो इन्टरनेट|युआरएल=https://nagariknews.nagariknetwork.com/technology/internet-reaches-badimalika-38-72.html|कार्य=|प्रकाशक=|वेबसाइट=नागरिक अनलाइन|भाषा=नेपाली)|अभिलेखमिति=|अभिलेखयुआरएल=|मिति=|पहुँचमिति=२४ अगस्ट २०२६}}</ref>
==तस्विर ग्यालरी==
<gallery>
File:बडिमालिका मन्दिर.JPG|बडिमालिका मन्दिर
File:बडिमालिका मन्दिरको बाटो.JPG|बडिमालिका मन्दिरको बाटो
File:बडिमालिका मन्दिर रहेको पहाड.JPG|बडिमालिका मन्दिर अवस्थीत पहाड
File:बडिमालिका मन्दिरमा पूजा गर्दे.JPG|बडिमालिका मन्दिरमा पूजा गर्दै
File:बडिमालिका मन्दिरबाट फर्केका मानिसहरु.JPG|बडिमालिका मन्दिरबाट फर्केका मानिसहरू
File:बडिमालिका मन्दिर अवस्थीत पहाड.JPG|बडिमालिका मन्दिर अवस्थीत पहाड
File:बडिमालिका मन्दिरबाट देखिने दृष्य.JPG|बडिमालिका मन्दिरबाट देखिने दृष्य
File:बडिमालिका मन्दिरबाट देखिने एक दृष्य.JPG|बडिमालिका मन्दिरबाट देखिने एक दृष्य
</gallery>
==श्रोत==
{{reflist|}}
==बाह्य कडीहरू==
*[http://m.ujyaaloonline.com/index.php?pआageName=news_details&id=10177&catId=21 पर्यटक पर्खदै बाजुराको बडिमालिका]{{Dead link|date=November 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[http://www.ekantipur.com/kantipur/news/news-detail.php?news_id=260067 सुरु भएन बडिमालिका संरक्षण योजना]
*[http://www.bbc.com/nepali/multimedia/2016/09/160902_badimalika_nepal?ocid=socialflow_facebook बडिमालिका यात्रा]
*[http://www.hamrogorkha.com/नियमित-स्तम्भ/पर्यटन/सौन्दर्यले-भरिएको-बाजुराको-बडिमालिका-(फोटोफिचर).htm बडिमालिका फोटो फिचर]{{Dead link|date=September 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[http://www.sidhadrishti.com/2016/05/108.html?m=1 स्वर्गको टुक्रा बडिमालिका] {{Webarchive|url=https://web.archive.org/web/20220117221717/http://www.sidhadrishti.com/2016/05/108.html?m=1 |date=2022-01-17 }}
==यी पनि हेर्नुहोस्==
{{सुदूर-पश्चिमकी नौ भगवती}}
{{नेपालका मन्दिरहरू}}
[[श्रेणी:नेपालका मन्दिरहरू]]
[[श्रेणी:बाजुरा जिल्लाका धार्मिक ठाउँहरू]]
aosizwhcm6kp4qf8c7gx6wfwzcx0zme
1372327
1372326
2026-08-26T00:46:10Z
Rajeeb bastola
39875
1372327
wikitext
text/x-wiki
{{Short description|Hindu temple in Sudurpashchim, Nepal}}
{{more citations needed|date=August 2020}}
{{Infobox Mandir
|name = बडिमालिका मन्दिर
|image = Badi Malika.png
|
|alt = Temple premises
|caption =
|pushpin_map = Nepal
|pushpin_caption = Badimalika Temple in Nepal
|coordinates = {{coord|29.346916|81.477488|type:landmark_region:NP|display=inline,title}}
|sanskrit_translit =
|country = {{flag|नेपाल}}
|state = [[सुदूरपश्चिम प्रदेश|सुदूरपश्चिम]]
|district = [[बाजुरा जिल्ला|बाजुरा]]
|location = [[Kailashmandau]], [[Bajura district|Bajura]] <ref>{{cite web|URL= http://fwdc.gov.np/ne/%E0%A4%A7%E0%A4%BE%E0%A4%B0%E0%A5%8D%E0%A4%AE%E0%A4%BF%E0%A4%95-%E0%A4%B8%E0%A5%8D%E0%A4%A5%E0%A4%BE%E0%A4%A8%E0%A4%B9%E0%A4%B0%E0%A5%81 |title= धार्मिक स्थलहरु |language= Nepali |publisher= www.fwdc.gov.np}}</ref>
|elevation_m =
|deity = [[Shakti]]
|festival = [[Ganga Dussehra]], Shrwan Shukla chaturdashi
|architecture = Pagoda Style
|temple_quantity =
|monument_quantity =
|inscriptions =
|creator =
|website =
|mapframe = yes
|mapframe-zoom = 12
|mapframe-wikidata = yes
}}
== पृष्ठभूमि ==
'''बडीमालिका''' विश्वका प्रमुख हिन्दु मन्दिरहरूमध्येको एक प्रशिद्ध मन्दिर हो । यो मन्दिर नेपालको सुदूरपश्चिम प्रदेशको बाजुरा जिल्लाको त्रिवेणी नगरपालिकामा वडा नं. ६ पन्धारामा पर्दछ । यहाँ प्रत्येक वर्ष साउन शुक्ल त्रयोदशी देखि चतुर्दशीका दिन मुख्य पूजा तथा हवन गरिन्छ । गंगा दशहरामा यहाँको पाती प्रसाद खप्तडमा ल्याएर चढाउने गरिन्छ । बडीमालिकामा २ जिल्लाका पुजारीहरुले पूजा गर्छन् । यी मध्ये १ बाजुरा जिल्लाको त्रिवेणी नगरपालिका वडा नं. ९ पैमाका हुन् भने अर्को कालिकोटका हुन् । हाल बाजुराबाट मुख्य पुजारीको रुपमा नेत्र पाध्याय रहेका छन् भने कालिकोटबाट हरी धमाला रहेका छन् ।
[[File : Badimalika Temple, Bajura, Nepal.jpg|thumb|बडीमालिका मन्दिर|300px]]
सम्वत् २०८२ सालमा यहाँको पुरानो मन्दिरको जिर्णोद्वार गरी नेपाली सेनाद्वारा नयाँ मन्दिर निर्माण गरिएको छ । बडीमालिका मन्दिर समुन्द्री सतहबाट ४,२२० मीटर उचाईमा अवस्थित छ । जुन विश्वमा रहेका हिन्दु मन्दिरहरुमध्ये सबैभन्दा अग्लो स्थानमा रहेको हिन्दु मन्दिर हो ।
बडीमालिका दर्शनका लागि जाने भक्तजनहरुले त्रिवेणी हुँदै जानु पर्ने हुन्छ । त्रिवेणी बाजुरा जिल्लाको त्रिवेणी नगरपालिका र कालिकोटको रास्कोट नगरपालिकाको सिमाना हो । यसको मुख्य भाग बाजुरा जिल्लाको त्रिवेणी नगरपालिका वडा नं. ५ किम्नीमा पर्दछ । बडीमालिका, त्रिवेणी बहुमूल्य जडिबुटीको भण्डार पनि हो ।
==किंवदन्ती==
पौराणिक कथा अनुसार [[शिव|महादेव]]की पत्नी [[सतिदेवी]]का पिता [[दक्ष प्रजापति]]ले यज्ञ गर्दा महादेव र सतिदेवीलाई बोलाएनन् । आफ्ना पति र आफूलाई यज्ञमा नबोलाएपछि सतिदेविले आफ्ना पिता दक्ष प्रजापतीले सञ्चालन गरेको यज्ञ स्थलमा गएर पितासँग आफ्ना पति महादेव र आफूलाई यज्ञमा नबोलाउनुको कारण सोधिन् । दक्ष प्रजापतीले महादेव [[भाङ]], [[धतुरो]] सेवन गर्ने, शमसान घाटमा वास गर्ने, गलामा [[सर्प]]को माला लगाउने, जटाधारी भेषमा रहने, शरीरभरी [[खरानी]] घस्ने, [[बाघ]]को छालाको पहिरने हुनाले यस यज्ञमा बस्दा शोभा नदिने भएकाले नबोलाएको बताए । पिताको जवाफ सुनेपछि सतिदेवीलाई आफ्ना पतिको अपमान गरिएको महशुस भयो र अपमान सहन गर्न नसकेर यज्ञकुण्डको अग्नीमा हाम फालेर प्राण त्याग गरिन् ।
आफ्नी पत्नि सतिदेवीले दक्ष प्रजापतिले सञ्चालन गरेको यज्ञमा हाम फालेर प्राण त्याग गरेपछि महादेव रिसाएर विरभद्रादी शिवगणलाई पठाएर दक्ष प्रजापतिलाई मारी दक्ष प्रजापतिले सञ्चालन गरेको यज्ञ तहस नहस पार्न लगाए । आफू भने पत्नी वियोगमा पागल भएर सतिदेवीको मृत शरिर बोकेर पुरा [[विश्व]] घुम्न थाले । यसै बेला [[विष्णु|भगवान बिष्णु]]ले आफ्नो चक्र सुदर्शन प्रहार गरी सतिदेवीको मृत शरीरमा किरा पारेर कुहाए । सतिदेवीको मृत शरीर कुहिए पछि महादेव जहाँ जहाँ गए त्यहाँ त्यहाँ सतिदेवीको मृत शरीरको कुहिएको अङ्ग खस्दै (पतन हुँदै) गए । यसरी ठाउँ ठाउँमा सतिदेवीको शरीरका अङ्गहरू पतन हुँदै जान थालेपछि जहाँ जहाँ सतिदवीका अङ्ग पतन भए त्यहाँ त्यहाँ एक एकवटा सिद्ध पिठ (प्रसिद्ध धार्मिक स्थल) बन्दै गए । यसै क्रममा हालको बाजुरा जिल्लाको मल्लागिरी पर्वतमा सतिदेवीको बायाँ कुम पतन भयो । पछि गएर सतिदेवीको बायाँ कुम पतन भएको त्यही पर्वतलाई मालिका र हाल आएर बडीमालिका भनिन थालियो ।
मल्लागिरी पर्वतमा मल्लिका अथवा [[मालिका देवी]] शक्ति स्वरूपले रहन थालिन् ।<ref>श्री स्वस्थानी ब्रतकथा</ref> तसर्थ यस स्थानमा बडिमालिका मन्दिर स्थापना गरेर पूजा गर्न थालियो ।
भनिन्छ पौराणिक कालमा भगवतीले महिषासुर नामको दैत्यको वध गरिसकेपछि कालिकोटको "द्वारेढुंगा" भन्ने ठाउँमा विश्राम गरेकी थिइन् । पछि गएर द्वारेढुंगामा एकजना दाउरा खोज्न गएको दलित भोकले व्याकुल भई देवीसँग बहरको मासु र हिया गहुँको रोटी माग्यो । देवीले त्यो दलितको मनोरथ पूरा गरिदिइन् । दलितले पूरै बहरलाई एक्लै खान नसकिने भएकाले आफ्नो घरका मान्छेलाई बोलाएछ । उसको घरको मानिसहरूले टाढा भएका कारण सुन्न सकेनन् । तब त्यो दलितलाई रिस उठ्यो। उसले भगवतीलाई भन्यो हे! प्रमेश्वरी मेरा घरका सबै मान्छे मरुन् । देवीले पनि इच्छाअनुसार वरदान दिइन् । त्यसपछि बहरको मासु लिएर दलित घर गएछ । घरमा हेर्दा त सबै जहानहरू मरेका देख्यो । फेरि दलित रिसायर द्वारेढुंगा पुग्यो । देवी उसलाई देखेर ढोका बन्द गरी त्यहाँबाट भागिन् । दलितले बहरको फिलाले देवीको घरमा हानेको छाप अझै द्वारे ढुङ्गामा देखिन्छ । यसो भएका कारण देवी सधैँका लागि त्यो ठाउँ छोडेर त्रिवेणी, पञ्चपुरी पाटन, मल्लपुरी पाटन हुँदै बडीमालिकामा गएर बसिन् । त्यसैले दलितहरू बडिमालिका जाँदैनन् भन्ने विश्वास गरिन्छ। अन्य भक्तजनहरू जो बाटो देवी गएकी हुन् त्यही बाटो भएर जान्छन् । <ref>जन जिब्रोमा प्रचलित कथा</ref>
==सरकारी पूजा==
बडीमालिका मन्दिरमा सरकारका तर्फबाट एकजना मुख्य पूजारी बनाइएका छन् । हाल बाजुरा जिल्ला त्रिवेणी नगरपालिका वडा नं. ९ पैमाका नेत्र पाध्याय मुख्य पुजारीका रुपमा रहेका छन् । पैमाका पुजारी नेत्र पाध्याय र उनका दाजुभाइहरू छोराहरूले सरकारी पूजा गराउँछन् । सरकारी पुजा गर्दा सबैभन्दा पहिले डोटी जिल्लाबाट पठाईएको गोरखनाथको टोलीको तर्फबाट सरकारी पुजा हुने गर्दछ भने त्यसपछि जुम्ला जिल्लाबाट चन्दननाथको टोलीको तर्फबाट सरकारी पुजा हुने गर्दछ । त्यसपछि क्रमश: [[अछाम जिल्ला|अछाम]], [[बाजुरा जिल्ला|बाजुरा]] र [[कालिकोट जिल्ला|कालिकोट]] जिल्लाका प्रमुख जिल्ला अधिकारी तथा निजका प्रतिनिधिहरु लगायत अन्य कर्मचारीहरूको हातबाट देवीको सरकारी पूजा सम्पन्न हुन्छ।
पछिल्लो समयमा कालिकोट, जुम्ला, मुगु, अछाम, बाजुरा, कैलाली जिल्लाका स्थानीय सरकारका तर्फबाट समेत बडीमालिका मन्दिरमा सरकारी पुजा गर्ने प्रचलन रहेको छ । कैलाली जिल्लामा रहेको सुदूरपश्चिम प्रदेशको एक मात्र उपमहानगरपालिका धनगढी उपमहानगरपालिकाको तर्फबाट सम्वत् २०८२ साल साउन २३ गतेका दिन पहिलो पटक सरकारी पुजा गरिएको छ । धनगढी उपमहानगरपालिका नगर प्रमुख श्री गोपाल हमालको पहलमा २०८२ सालदेखि बडीमालिका मन्दिरमा सरकारी पुजाको थालनी गरिएको हो ।
==प्राकृतिक सौन्दर्य==
बडीमालिका धार्मिक मात्र नभएर पर्यटकीय हिसाबले पनि महत्त्वपूर्ण मानिन्छ । नजिकै देखिने सुन्दर हिमाल, हिउँ कुल्चन पाउने सौभाग्य र मनोरम प्राकृतिक दृश्यहरू बडीमालिकाका गहना हुन् । बडीमालिकाको सौन्दर्य भनेकै विशाल फाँटहरू हुन् । बडमालिका क्षेत्रका ती विशाल फाँटहरुलाई स्थानीय भाषामा पाटन भनिन्छ । तर अचेल यी फाँटहरू बिस्तारै मासिँदै छन् । यी फाँटमा अनावश्यक चरन र जडीबुडी चोरी निकासीका कारण यसको सौन्दर्य मासिएको जिल्लाबासीको गुनासो छ ।
बडीमालिकामा प्रत्येक वर्ष [[श्रावण शुक्ल पूर्णिमा|जनै पूर्णिमा]]को अघिल्ला दिनहरु साउन त्रयोदशी देखि चतुर्दशीका दिन ठूलो मेला लाग्दछ । त्यो समयमा केही स्थानीय व्यापारीले खाजा नास्ताका पसल राख्ने गर्छन् । अन्य समयमा त्यहाँ खाजा नास्ताका कुनै पसलहरू खासै भेटिँदैनन् ।
बडीमालिका मन्दिरमा दर्शन गरेपछि आफ्नो मनोकांक्षा पूरा हुने जनविश्वास छ । मन्दिर परिसरबाट आँखै अगाडी देखिने [[साइपाल हिमाल|सैपाल]] हिमालको मनोरम दृश्यले यहाँको सौन्दर्यलाई झनै तिखारेको छ । बडीमालीका पुग्नका लागि उचित बास बस्ने स्थान नभएका कारण भक्तजन तथा पर्यटकले खानपिन तथा बासको जोहो आफै गर्नुपर्छ । यद्दपि साउन महिनामा लाग्ने मेलाको अवसरका बाटोमा त्रिपाल टाँगेर खान बस्नका लागि अस्थायी पसलहरु भने राखिएका भेटिन्छन् । तर ती पसलहरुले भक्तजनहरुको घुईंचोलाई धान्न भने सकेका हुँदैनन् ।
नेपालको विभिन्न जिल्लाका साथै भारतबाट पनि तीर्थालुहरू यहाँ मेला भर्न आउँछन् । भक्तजनहरूले आफूले मागेको वरदान पूरा हुन्छ भन्ने विश्वास गर्छन् । हालसम्म [[गङ्गा दशहरा|गंगा दशहरा]] र साउन त्रयोदशी देखि चतुर्शीसम्म गरी वर्षको दुईपटक मात्र लाग्दै आएको औपचारिक मेलाका कारण बडीमालिकाको महत्त्व सीमित छ । भक्तजनहरुको घुईंचो गंगा दशहरा भन्दा साउन चतुर्दशीमा बढी हुने गर्दछ ।
बडिमालिका मन्दिरसम्म पुग्नका लागि कालिकोट र बाजुरा जिल्लाका विभिन्न बाटोहरु प्रयोग गर्न सकिन्छ । कर्णाली प्रदेश र बाजुरा जिल्लाको नजिकको क्षेत्र बाहेक अन्य स्थानबाट बडीमालिका मन्दिर सम्म पुग्नका लागि सबै भन्दा सजिलो बाटो मार्तडी हुँदै जाने बाटो हो । नेपालको राजधानी काठमाण्डौं लगायतका क्षेत्रबाट यो बाटो हुँदै बडीमालिका जानका लागि सुदूरपश्चिम प्रदेशको धनगढीबाट बाजुरा जिल्लाको मार्तडीसम्म सडक यातायातको सुविधा छ । धनगढीबाट दिवा तथा रात्री सेवाका बसहरु वा आफ्नै निजी सवारी साधनको प्रयोग गरेर एक दिनमा पुग्न सकिन्छ । मार्तडीबाट पैदल हिडेर अर्को दिन फुल चढाउने ठाउँमा पुगेर बास बस्नु पर्ने हुन्छ । फुल चढाउने ठाउँमा एउटा सानो धर्मशाला त छ तर त्यो यात्रुका लागि पर्याप्त हुँदैन । तसर्थ आफैले टेण्ट बोकेर लैजानु बुद्धिमानी हुन्छ । त्यसको भोलीपल्ट भितीचिर्ना बास बस्न सकिन्छ भने पर्सि पल्ट त्रिवेणी पाटनमा बास बस्न सकिन्छ । त्रयोदशीको दिन बिहानै त्रिवेणीमा स्नान गरि बडीमालिका तर्फ लाग्ने हो भने बडीमालिका पुगिन्छ । त्यसैदिन वा भोली पल्ट बडिमालिका देवीकझ दर्शन तथा पुजा गरेर नाटेश्वरी तर्फ हिड्न सकिन्छ । नाटेश्वरी तर्फको बाटो साह्रै भिरालो र अत्यधिक चिप्लो भएकोले विहान र दिउँसोको समयम पारेर हिड्नु पर्छ । विहानै हिड्ने हो भने सोही दिन नाटेश्वरी पुगिन्छ भने दिउँसो हिड्दा ठूलागडासम्म बास बस्ने गरी पुग्न सकिन्छ । नाटेश्वरी तर्फ जाँदा विष्णुपानीका अस्थायी होटलमा खाना खान पाईन्छ । ठूलागडा बस्ने हो भने भोलीपल्ट १० बजेसम्म नाटेश्वरी पुगिन्छ । नाटेश्वरीमा जनैपूर्णिका दिन नाटेश्वरी माईंको दर्शन गरी नजिकै रहेको कालिका मन्दिरमा बलि पुजा गर्ने प्रचलन छ । नाटेश्वरीमा जनै फेर्ने र रक्षा बन्धनको काम पनि गरिन्छ । बलि पुजा गर्नेहरुले भातसँग बोकाको मासु प्रसादको रुपमा खाएर सोही दिन बुढीगंगा नगरपालिकाको बाम्का बजार तर्फ लाग्दछन् । बाम्का बजारबाट धनगढीका लागि बसहरु भेटिन्छन् । त्यही बस वा आफ्नै सवारी साधनबाट धनगढीको यात्रा गर्न सकिन्छ । यसरी यो रुटबाट यात्रा गर्दा कम्तिमा ६ दिन लाग्दछ । तर त्रिवेणी र बडीमालिकाका सुन्दर दृश्यहरु हेर्नका लागि २ दिन थप गरेर ८ दिन लगाउने हो भने १ दिन त्रिवेणी र १ दिन बडीमालिकामा रहेर थप आनन्द लिन सकिन्छ ।
हवाई मार्गको प्रयोग गर्ने हो भने नेपालगञ्जबाट बाजुराको बुढीगंगा नगरपालिकाको कोल्टी एअरपोर्टसम्म गएर त्यहाँबाट १ दिनमा बाजुराको सदरमुकाम मार्तडी पुग्न सकिन्छ । मार्तडीबाट माथि भनिए झैं यात्रा गर्न सकिन्छ । कोल्टीबाटै फर्कने हो भने फर्कदा बडीमालिका-त्रिवेणी-भितिचिर्ना-फुल चढाउने-मार्तडी- कोल्टी हुँदै फर्कन सकिन्छ ।
बाजुराबाट कोर्ध-बुढाकोर्ध-भितिचिर्ना-त्रिवेणी-बडीमालिकाको बाटो पनि प्रयोग गर्न सकिन्छ । त्यस्तै बल्दे-पैमा पुजारीको घर हुँदै बडीमालिका जान पनि सकिन्छ । बाम्का बजार-मौरे-नाटेश्वरी हुँदै पनि बडीमालिका जान मिल्दछ । त्यस्तै बाम्का बजार-तोली-छतारा-पञ्चपुरी हुँदै पनि बडीमालिका जान सकिन्छ । बल्दे, बाम्का, पञ्चपुरीको बाटो प्रयोग गर्दा बडीमालिका पुगेर त्रिवेणी जानु पर्ने हुन्छ, त्रिवेणीमा नुहाएर फेरी बडीमालिका आउनु पर्ने हुन्छ ।
बडीमालिका ४,२२० मिटर उचाईंमा रहेको, बाटोहरु भिरालो रहेको, लेकाली विशालु जडिबुटीहरु फुलेर विश लाग्ने, लेक लाग्ने जस्ता कारणले बडीमालिका पुग्न जो कोहीलाई हम्मे हम्मे पर्दछ । तर पनि देवीको अनुकम्पाले अधिकाँश भक्तजनहरुले यात्रा पुरा गरेका हुन्छन् ।
बडीमालिकाको यात्रा गर्दा आजकाल ठाउँमा त्रिपाल राखेर खानाका लागि अस्थायी होटेलहरु राखिएका हुनाले खानाका लागि त्यति समस्या हुँदैन । तैपनि बाटोमा भोक लागेको बेला खानका लागि र बास बस्ने ठाउँमा खानेकुरा नपाएको अवस्थामा खानका लागि सातु वा आफुलाई मन पर्ने शुद्ध शाकाहारी ड्राई फुड बोकेर लैजान सकिन्छ । यसरी बोक्ने सामान भारी (गह्रौं) भने हुनु हुँदैन । भारी भयो भने बोकेर हिड्नलाई धेरै गाह्रो हुन सक्छ । लेक लाग्दा सुँघ्नका लागि पुजा गर्ने कपुर बोकिराख्नु भयो भने फाईदाजनक हुन्छ । पोलेको अदुवा, नुन खुर्शानी र टिम्मुर मिश्रित धुलो साथमा राखेर बेला बेलामा खानाले पनि लेक लाग्नबाट बच्न सकिन्छ । धेरै जसो ठाउँमा पानी नपाउने हुँदा पानीमा लागि बोटल साथमा राखेर हमेशा त्यसमा पानी भरिराख्नु पर्दछ । शौच सफा गर्न, मुख पुछ्न ट्वाइलेट पेपर, वेट टिस्यु पेपर साथमा लैजाँदा राम्रो हुन्छ । चिसोबाट जोगिन भिक्स, लिप गार्ड, इन्हेलर, कोल्ड क्रिम साथमा राखेर बेला बेला प्रयोग गर्नु बुद्धिमानी हुन्छ । जीउको दुखाई कम गर्न मुभ, सिटामोल जस्ता औषधी साथमा राखिराख्नु पर्दछ । रात्री सुत्नका लागि सिलिपिङ व्याग, टेण्ट, ज्याकेट, थर्मकोल लिनु भयो भने राम्रो हुन्छ ।
बडीमालिका क्षेत्रका सुन्दर दृश्यहरु कैद गर्नका लागि मोबाईल वा क्यामेराको साथमा पावर व्याकअप लैजानु पर्ने हुन्छ । पावर व्याकअप लिंदा कम्तिमा ६ दिनसम्म चार्ज गर्न मिल्ने क्षमता भएको पावर व्याकअप लैजानु पर्दछ।
==सञ्चार सेवा==
धार्मिक तथा पर्यटकीय दृष्टिले महत्वपूर्ण [[बाजुरा जिल्ला|बाजुरा]]को बडीमालिका क्षेत्रमा दूरसञ्चार तथा इन्टरनेट सेवाको पहुँच विस्तार भएको छ। नेपाल टेलिकमले बडीमालिका क्षेत्रमा फोर-जी सेवा विस्तार गरेपछि ८ भाद्र, २०८३ सोमबारदेखि उक्त क्षेत्रमा मोबाइल फोन तथा इन्टरनेट सेवा सञ्चालनमा आएको हो।<ref>{{वेब स्रोत|लेखक=गोरखापत्र अनलाइन|शीर्षक=बडीमालिका क्षेत्रमा पुग्यो टेलिफोन र इन्टरनेट सेवा|युआरएल=https://gorkhapatraonline.com/news/219713|कार्य=|प्रकाशक=|वेबसाइट=गोरखापत्र अनलाइन|भाषा=नेपाली)|अभिलेखमिति=|अभिलेखयुआरएल=|मिति=|पहुँचमिति=२४ अगस्ट २०२६}}</ref>
जनैपूर्णिमाका अवसरमा बडीमालिका क्षेत्रमा आयोजना हुने धार्मिक मेलाको पूर्वसन्ध्यामा सञ्चार सेवा सञ्चालनमा आएको हो। समुद्री सतहबाट करिब ४,२०० मिटरको उचाइमा रहेको यस क्षेत्रमा सञ्चार सेवा विस्तार भएपछि स्थानीयवासी, तीर्थयात्री, पर्यटक तथा विभिन्न सरकारी तथा गैरसरकारी निकायलाई सञ्चार सम्पर्कमा सहजता हुने अपेक्षा गरिएको छ।
यसअघि दुर्गम तथा उच्च हिमाली क्षेत्रमा अवस्थित बडीमालिका क्षेत्रमा मोबाइल तथा इन्टरनेट सेवाको पहुँच सीमित थियो। फोर-जी सेवा विस्तारसँगै मोबाइल फोन तथा इन्टरनेट प्रयोग गर्न सहज भएको छ। यसले धार्मिक तथा पर्यटकीय गतिविधिका साथै सूचना आदानप्रदान र आपत्कालीन अवस्थामा सञ्चार सम्पर्क कायम गर्न समेत सहयोग पुग्ने अपेक्षा गरिएको छ।<ref>{{वेब स्रोत|लेखक=दिलबहादुर छत्याल|शीर्षक=बडीमालिकामा पुग्यो इन्टरनेट|युआरएल=https://nagariknews.nagariknetwork.com/technology/internet-reaches-badimalika-38-72.html|कार्य=|प्रकाशक=|वेबसाइट=नागरिक अनलाइन|भाषा=नेपाली)|अभिलेखमिति=|अभिलेखयुआरएल=|मिति=|पहुँचमिति=२४ अगस्ट २०२६}}</ref>
==तस्विर ग्यालरी==
<gallery>
File:बडिमालिका मन्दिर.JPG|बडिमालिका मन्दिर
File:बडिमालिका मन्दिरको बाटो.JPG|बडिमालिका मन्दिरको बाटो
File:बडिमालिका मन्दिर रहेको पहाड.JPG|बडिमालिका मन्दिर अवस्थीत पहाड
File:बडिमालिका मन्दिरमा पूजा गर्दे.JPG|बडिमालिका मन्दिरमा पूजा गर्दै
File:बडिमालिका मन्दिरबाट फर्केका मानिसहरु.JPG|बडिमालिका मन्दिरबाट फर्केका मानिसहरू
File:बडिमालिका मन्दिर अवस्थीत पहाड.JPG|बडिमालिका मन्दिर अवस्थीत पहाड
File:बडिमालिका मन्दिरबाट देखिने दृष्य.JPG|बडिमालिका मन्दिरबाट देखिने दृष्य
File:बडिमालिका मन्दिरबाट देखिने एक दृष्य.JPG|बडिमालिका मन्दिरबाट देखिने एक दृष्य
</gallery>
==श्रोत==
{{reflist|}}
==बाह्य कडीहरू==
*[http://m.ujyaaloonline.com/index.php?pआageName=news_details&id=10177&catId=21 पर्यटक पर्खदै बाजुराको बडिमालिका]{{Dead link|date=November 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[http://www.ekantipur.com/kantipur/news/news-detail.php?news_id=260067 सुरु भएन बडिमालिका संरक्षण योजना]
*[http://www.bbc.com/nepali/multimedia/2016/09/160902_badimalika_nepal?ocid=socialflow_facebook बडिमालिका यात्रा]
*[http://www.hamrogorkha.com/नियमित-स्तम्भ/पर्यटन/सौन्दर्यले-भरिएको-बाजुराको-बडिमालिका-(फोटोफिचर).htm बडिमालिका फोटो फिचर]{{Dead link|date=September 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[http://www.sidhadrishti.com/2016/05/108.html?m=1 स्वर्गको टुक्रा बडिमालिका] {{Webarchive|url=https://web.archive.org/web/20220117221717/http://www.sidhadrishti.com/2016/05/108.html?m=1 |date=2022-01-17 }}
==यी पनि हेर्नुहोस्==
{{सुदूर-पश्चिमकी नौ भगवती}}
{{नेपालका मन्दिरहरू}}
[[श्रेणी:नेपालका मन्दिरहरू]]
[[श्रेणी:बाजुरा जिल्लाका धार्मिक ठाउँहरू]]
53vs9legb9hwyyonar2qkfvzje962jj
1372328
1372327
2026-08-26T00:47:19Z
Rajeeb bastola
39875
1372328
wikitext
text/x-wiki
{{Short description|Hindu temple in Sudurpashchim, Nepal}}
{{more citations needed|date=August 2020}}
{{Infobox Mandir
|name = बडिमालिका मन्दिर
|image = Badi Malika.png
|
|alt = Temple premises
|caption =
|pushpin_map = Nepal
|pushpin_caption = Badimalika Temple in Nepal
|coordinates = {{coord|29.346916|81.477488|type:landmark_region:NP|display=inline,title}}
|sanskrit_translit =
|country = {{flag|नेपाल}}
|state = [[सुदूरपश्चिम प्रदेश|सुदूरपश्चिम]]
|district = [[बाजुरा जिल्ला|बाजुरा]]
|location = [[Kailashmandau]], [[Bajura district|Bajura]] <ref>{{cite web|URL= http://fwdc.gov.np/ne/%E0%A4%A7%E0%A4%BE%E0%A4%B0%E0%A5%8D%E0%A4%AE%E0%A4%BF%E0%A4%95-%E0%A4%B8%E0%A5%8D%E0%A4%A5%E0%A4%BE%E0%A4%A8%E0%A4%B9%E0%A4%B0%E0%A5%81 |title= धार्मिक स्थलहरु |language= Nepali |publisher= www.fwdc.gov.np}}</ref>
|elevation_m =
|deity = [[Shakti]]
|festival = [[Ganga Dussehra]], Shrwan Shukla chaturdashi
|architecture = प्यागोडा शैली
|temple_quantity =
|monument_quantity =
|inscriptions =
|creator =
|website =
|mapframe = yes
|mapframe-zoom = 12
|mapframe-wikidata = yes
}}
== पृष्ठभूमि ==
'''बडीमालिका''' विश्वका प्रमुख हिन्दु मन्दिरहरूमध्येको एक प्रशिद्ध मन्दिर हो । यो मन्दिर नेपालको सुदूरपश्चिम प्रदेशको बाजुरा जिल्लाको त्रिवेणी नगरपालिकामा वडा नं. ६ पन्धारामा पर्दछ । यहाँ प्रत्येक वर्ष साउन शुक्ल त्रयोदशी देखि चतुर्दशीका दिन मुख्य पूजा तथा हवन गरिन्छ । गंगा दशहरामा यहाँको पाती प्रसाद खप्तडमा ल्याएर चढाउने गरिन्छ । बडीमालिकामा २ जिल्लाका पुजारीहरुले पूजा गर्छन् । यी मध्ये १ बाजुरा जिल्लाको त्रिवेणी नगरपालिका वडा नं. ९ पैमाका हुन् भने अर्को कालिकोटका हुन् । हाल बाजुराबाट मुख्य पुजारीको रुपमा नेत्र पाध्याय रहेका छन् भने कालिकोटबाट हरी धमाला रहेका छन् ।
[[File : Badimalika Temple, Bajura, Nepal.jpg|thumb|बडीमालिका मन्दिर|300px]]
सम्वत् २०८२ सालमा यहाँको पुरानो मन्दिरको जिर्णोद्वार गरी नेपाली सेनाद्वारा नयाँ मन्दिर निर्माण गरिएको छ । बडीमालिका मन्दिर समुन्द्री सतहबाट ४,२२० मीटर उचाईमा अवस्थित छ । जुन विश्वमा रहेका हिन्दु मन्दिरहरुमध्ये सबैभन्दा अग्लो स्थानमा रहेको हिन्दु मन्दिर हो ।
बडीमालिका दर्शनका लागि जाने भक्तजनहरुले त्रिवेणी हुँदै जानु पर्ने हुन्छ । त्रिवेणी बाजुरा जिल्लाको त्रिवेणी नगरपालिका र कालिकोटको रास्कोट नगरपालिकाको सिमाना हो । यसको मुख्य भाग बाजुरा जिल्लाको त्रिवेणी नगरपालिका वडा नं. ५ किम्नीमा पर्दछ । बडीमालिका, त्रिवेणी बहुमूल्य जडिबुटीको भण्डार पनि हो ।
==किंवदन्ती==
पौराणिक कथा अनुसार [[शिव|महादेव]]की पत्नी [[सतिदेवी]]का पिता [[दक्ष प्रजापति]]ले यज्ञ गर्दा महादेव र सतिदेवीलाई बोलाएनन् । आफ्ना पति र आफूलाई यज्ञमा नबोलाएपछि सतिदेविले आफ्ना पिता दक्ष प्रजापतीले सञ्चालन गरेको यज्ञ स्थलमा गएर पितासँग आफ्ना पति महादेव र आफूलाई यज्ञमा नबोलाउनुको कारण सोधिन् । दक्ष प्रजापतीले महादेव [[भाङ]], [[धतुरो]] सेवन गर्ने, शमसान घाटमा वास गर्ने, गलामा [[सर्प]]को माला लगाउने, जटाधारी भेषमा रहने, शरीरभरी [[खरानी]] घस्ने, [[बाघ]]को छालाको पहिरने हुनाले यस यज्ञमा बस्दा शोभा नदिने भएकाले नबोलाएको बताए । पिताको जवाफ सुनेपछि सतिदेवीलाई आफ्ना पतिको अपमान गरिएको महशुस भयो र अपमान सहन गर्न नसकेर यज्ञकुण्डको अग्नीमा हाम फालेर प्राण त्याग गरिन् ।
आफ्नी पत्नि सतिदेवीले दक्ष प्रजापतिले सञ्चालन गरेको यज्ञमा हाम फालेर प्राण त्याग गरेपछि महादेव रिसाएर विरभद्रादी शिवगणलाई पठाएर दक्ष प्रजापतिलाई मारी दक्ष प्रजापतिले सञ्चालन गरेको यज्ञ तहस नहस पार्न लगाए । आफू भने पत्नी वियोगमा पागल भएर सतिदेवीको मृत शरिर बोकेर पुरा [[विश्व]] घुम्न थाले । यसै बेला [[विष्णु|भगवान बिष्णु]]ले आफ्नो चक्र सुदर्शन प्रहार गरी सतिदेवीको मृत शरीरमा किरा पारेर कुहाए । सतिदेवीको मृत शरीर कुहिए पछि महादेव जहाँ जहाँ गए त्यहाँ त्यहाँ सतिदेवीको मृत शरीरको कुहिएको अङ्ग खस्दै (पतन हुँदै) गए । यसरी ठाउँ ठाउँमा सतिदेवीको शरीरका अङ्गहरू पतन हुँदै जान थालेपछि जहाँ जहाँ सतिदवीका अङ्ग पतन भए त्यहाँ त्यहाँ एक एकवटा सिद्ध पिठ (प्रसिद्ध धार्मिक स्थल) बन्दै गए । यसै क्रममा हालको बाजुरा जिल्लाको मल्लागिरी पर्वतमा सतिदेवीको बायाँ कुम पतन भयो । पछि गएर सतिदेवीको बायाँ कुम पतन भएको त्यही पर्वतलाई मालिका र हाल आएर बडीमालिका भनिन थालियो ।
मल्लागिरी पर्वतमा मल्लिका अथवा [[मालिका देवी]] शक्ति स्वरूपले रहन थालिन् ।<ref>श्री स्वस्थानी ब्रतकथा</ref> तसर्थ यस स्थानमा बडिमालिका मन्दिर स्थापना गरेर पूजा गर्न थालियो ।
भनिन्छ पौराणिक कालमा भगवतीले महिषासुर नामको दैत्यको वध गरिसकेपछि कालिकोटको "द्वारेढुंगा" भन्ने ठाउँमा विश्राम गरेकी थिइन् । पछि गएर द्वारेढुंगामा एकजना दाउरा खोज्न गएको दलित भोकले व्याकुल भई देवीसँग बहरको मासु र हिया गहुँको रोटी माग्यो । देवीले त्यो दलितको मनोरथ पूरा गरिदिइन् । दलितले पूरै बहरलाई एक्लै खान नसकिने भएकाले आफ्नो घरका मान्छेलाई बोलाएछ । उसको घरको मानिसहरूले टाढा भएका कारण सुन्न सकेनन् । तब त्यो दलितलाई रिस उठ्यो। उसले भगवतीलाई भन्यो हे! प्रमेश्वरी मेरा घरका सबै मान्छे मरुन् । देवीले पनि इच्छाअनुसार वरदान दिइन् । त्यसपछि बहरको मासु लिएर दलित घर गएछ । घरमा हेर्दा त सबै जहानहरू मरेका देख्यो । फेरि दलित रिसायर द्वारेढुंगा पुग्यो । देवी उसलाई देखेर ढोका बन्द गरी त्यहाँबाट भागिन् । दलितले बहरको फिलाले देवीको घरमा हानेको छाप अझै द्वारे ढुङ्गामा देखिन्छ । यसो भएका कारण देवी सधैँका लागि त्यो ठाउँ छोडेर त्रिवेणी, पञ्चपुरी पाटन, मल्लपुरी पाटन हुँदै बडीमालिकामा गएर बसिन् । त्यसैले दलितहरू बडिमालिका जाँदैनन् भन्ने विश्वास गरिन्छ। अन्य भक्तजनहरू जो बाटो देवी गएकी हुन् त्यही बाटो भएर जान्छन् । <ref>जन जिब्रोमा प्रचलित कथा</ref>
==सरकारी पूजा==
बडीमालिका मन्दिरमा सरकारका तर्फबाट एकजना मुख्य पूजारी बनाइएका छन् । हाल बाजुरा जिल्ला त्रिवेणी नगरपालिका वडा नं. ९ पैमाका नेत्र पाध्याय मुख्य पुजारीका रुपमा रहेका छन् । पैमाका पुजारी नेत्र पाध्याय र उनका दाजुभाइहरू छोराहरूले सरकारी पूजा गराउँछन् । सरकारी पुजा गर्दा सबैभन्दा पहिले डोटी जिल्लाबाट पठाईएको गोरखनाथको टोलीको तर्फबाट सरकारी पुजा हुने गर्दछ भने त्यसपछि जुम्ला जिल्लाबाट चन्दननाथको टोलीको तर्फबाट सरकारी पुजा हुने गर्दछ । त्यसपछि क्रमश: [[अछाम जिल्ला|अछाम]], [[बाजुरा जिल्ला|बाजुरा]] र [[कालिकोट जिल्ला|कालिकोट]] जिल्लाका प्रमुख जिल्ला अधिकारी तथा निजका प्रतिनिधिहरु लगायत अन्य कर्मचारीहरूको हातबाट देवीको सरकारी पूजा सम्पन्न हुन्छ।
पछिल्लो समयमा कालिकोट, जुम्ला, मुगु, अछाम, बाजुरा, कैलाली जिल्लाका स्थानीय सरकारका तर्फबाट समेत बडीमालिका मन्दिरमा सरकारी पुजा गर्ने प्रचलन रहेको छ । कैलाली जिल्लामा रहेको सुदूरपश्चिम प्रदेशको एक मात्र उपमहानगरपालिका धनगढी उपमहानगरपालिकाको तर्फबाट सम्वत् २०८२ साल साउन २३ गतेका दिन पहिलो पटक सरकारी पुजा गरिएको छ । धनगढी उपमहानगरपालिका नगर प्रमुख श्री गोपाल हमालको पहलमा २०८२ सालदेखि बडीमालिका मन्दिरमा सरकारी पुजाको थालनी गरिएको हो ।
==प्राकृतिक सौन्दर्य==
बडीमालिका धार्मिक मात्र नभएर पर्यटकीय हिसाबले पनि महत्त्वपूर्ण मानिन्छ । नजिकै देखिने सुन्दर हिमाल, हिउँ कुल्चन पाउने सौभाग्य र मनोरम प्राकृतिक दृश्यहरू बडीमालिकाका गहना हुन् । बडीमालिकाको सौन्दर्य भनेकै विशाल फाँटहरू हुन् । बडमालिका क्षेत्रका ती विशाल फाँटहरुलाई स्थानीय भाषामा पाटन भनिन्छ । तर अचेल यी फाँटहरू बिस्तारै मासिँदै छन् । यी फाँटमा अनावश्यक चरन र जडीबुडी चोरी निकासीका कारण यसको सौन्दर्य मासिएको जिल्लाबासीको गुनासो छ ।
बडीमालिकामा प्रत्येक वर्ष [[श्रावण शुक्ल पूर्णिमा|जनै पूर्णिमा]]को अघिल्ला दिनहरु साउन त्रयोदशी देखि चतुर्दशीका दिन ठूलो मेला लाग्दछ । त्यो समयमा केही स्थानीय व्यापारीले खाजा नास्ताका पसल राख्ने गर्छन् । अन्य समयमा त्यहाँ खाजा नास्ताका कुनै पसलहरू खासै भेटिँदैनन् ।
बडीमालिका मन्दिरमा दर्शन गरेपछि आफ्नो मनोकांक्षा पूरा हुने जनविश्वास छ । मन्दिर परिसरबाट आँखै अगाडी देखिने [[साइपाल हिमाल|सैपाल]] हिमालको मनोरम दृश्यले यहाँको सौन्दर्यलाई झनै तिखारेको छ । बडीमालीका पुग्नका लागि उचित बास बस्ने स्थान नभएका कारण भक्तजन तथा पर्यटकले खानपिन तथा बासको जोहो आफै गर्नुपर्छ । यद्दपि साउन महिनामा लाग्ने मेलाको अवसरका बाटोमा त्रिपाल टाँगेर खान बस्नका लागि अस्थायी पसलहरु भने राखिएका भेटिन्छन् । तर ती पसलहरुले भक्तजनहरुको घुईंचोलाई धान्न भने सकेका हुँदैनन् ।
नेपालको विभिन्न जिल्लाका साथै भारतबाट पनि तीर्थालुहरू यहाँ मेला भर्न आउँछन् । भक्तजनहरूले आफूले मागेको वरदान पूरा हुन्छ भन्ने विश्वास गर्छन् । हालसम्म [[गङ्गा दशहरा|गंगा दशहरा]] र साउन त्रयोदशी देखि चतुर्शीसम्म गरी वर्षको दुईपटक मात्र लाग्दै आएको औपचारिक मेलाका कारण बडीमालिकाको महत्त्व सीमित छ । भक्तजनहरुको घुईंचो गंगा दशहरा भन्दा साउन चतुर्दशीमा बढी हुने गर्दछ ।
बडिमालिका मन्दिरसम्म पुग्नका लागि कालिकोट र बाजुरा जिल्लाका विभिन्न बाटोहरु प्रयोग गर्न सकिन्छ । कर्णाली प्रदेश र बाजुरा जिल्लाको नजिकको क्षेत्र बाहेक अन्य स्थानबाट बडीमालिका मन्दिर सम्म पुग्नका लागि सबै भन्दा सजिलो बाटो मार्तडी हुँदै जाने बाटो हो । नेपालको राजधानी काठमाण्डौं लगायतका क्षेत्रबाट यो बाटो हुँदै बडीमालिका जानका लागि सुदूरपश्चिम प्रदेशको धनगढीबाट बाजुरा जिल्लाको मार्तडीसम्म सडक यातायातको सुविधा छ । धनगढीबाट दिवा तथा रात्री सेवाका बसहरु वा आफ्नै निजी सवारी साधनको प्रयोग गरेर एक दिनमा पुग्न सकिन्छ । मार्तडीबाट पैदल हिडेर अर्को दिन फुल चढाउने ठाउँमा पुगेर बास बस्नु पर्ने हुन्छ । फुल चढाउने ठाउँमा एउटा सानो धर्मशाला त छ तर त्यो यात्रुका लागि पर्याप्त हुँदैन । तसर्थ आफैले टेण्ट बोकेर लैजानु बुद्धिमानी हुन्छ । त्यसको भोलीपल्ट भितीचिर्ना बास बस्न सकिन्छ भने पर्सि पल्ट त्रिवेणी पाटनमा बास बस्न सकिन्छ । त्रयोदशीको दिन बिहानै त्रिवेणीमा स्नान गरि बडीमालिका तर्फ लाग्ने हो भने बडीमालिका पुगिन्छ । त्यसैदिन वा भोली पल्ट बडिमालिका देवीकझ दर्शन तथा पुजा गरेर नाटेश्वरी तर्फ हिड्न सकिन्छ । नाटेश्वरी तर्फको बाटो साह्रै भिरालो र अत्यधिक चिप्लो भएकोले विहान र दिउँसोको समयम पारेर हिड्नु पर्छ । विहानै हिड्ने हो भने सोही दिन नाटेश्वरी पुगिन्छ भने दिउँसो हिड्दा ठूलागडासम्म बास बस्ने गरी पुग्न सकिन्छ । नाटेश्वरी तर्फ जाँदा विष्णुपानीका अस्थायी होटलमा खाना खान पाईन्छ । ठूलागडा बस्ने हो भने भोलीपल्ट १० बजेसम्म नाटेश्वरी पुगिन्छ । नाटेश्वरीमा जनैपूर्णिका दिन नाटेश्वरी माईंको दर्शन गरी नजिकै रहेको कालिका मन्दिरमा बलि पुजा गर्ने प्रचलन छ । नाटेश्वरीमा जनै फेर्ने र रक्षा बन्धनको काम पनि गरिन्छ । बलि पुजा गर्नेहरुले भातसँग बोकाको मासु प्रसादको रुपमा खाएर सोही दिन बुढीगंगा नगरपालिकाको बाम्का बजार तर्फ लाग्दछन् । बाम्का बजारबाट धनगढीका लागि बसहरु भेटिन्छन् । त्यही बस वा आफ्नै सवारी साधनबाट धनगढीको यात्रा गर्न सकिन्छ । यसरी यो रुटबाट यात्रा गर्दा कम्तिमा ६ दिन लाग्दछ । तर त्रिवेणी र बडीमालिकाका सुन्दर दृश्यहरु हेर्नका लागि २ दिन थप गरेर ८ दिन लगाउने हो भने १ दिन त्रिवेणी र १ दिन बडीमालिकामा रहेर थप आनन्द लिन सकिन्छ ।
हवाई मार्गको प्रयोग गर्ने हो भने नेपालगञ्जबाट बाजुराको बुढीगंगा नगरपालिकाको कोल्टी एअरपोर्टसम्म गएर त्यहाँबाट १ दिनमा बाजुराको सदरमुकाम मार्तडी पुग्न सकिन्छ । मार्तडीबाट माथि भनिए झैं यात्रा गर्न सकिन्छ । कोल्टीबाटै फर्कने हो भने फर्कदा बडीमालिका-त्रिवेणी-भितिचिर्ना-फुल चढाउने-मार्तडी- कोल्टी हुँदै फर्कन सकिन्छ ।
बाजुराबाट कोर्ध-बुढाकोर्ध-भितिचिर्ना-त्रिवेणी-बडीमालिकाको बाटो पनि प्रयोग गर्न सकिन्छ । त्यस्तै बल्दे-पैमा पुजारीको घर हुँदै बडीमालिका जान पनि सकिन्छ । बाम्का बजार-मौरे-नाटेश्वरी हुँदै पनि बडीमालिका जान मिल्दछ । त्यस्तै बाम्का बजार-तोली-छतारा-पञ्चपुरी हुँदै पनि बडीमालिका जान सकिन्छ । बल्दे, बाम्का, पञ्चपुरीको बाटो प्रयोग गर्दा बडीमालिका पुगेर त्रिवेणी जानु पर्ने हुन्छ, त्रिवेणीमा नुहाएर फेरी बडीमालिका आउनु पर्ने हुन्छ ।
बडीमालिका ४,२२० मिटर उचाईंमा रहेको, बाटोहरु भिरालो रहेको, लेकाली विशालु जडिबुटीहरु फुलेर विश लाग्ने, लेक लाग्ने जस्ता कारणले बडीमालिका पुग्न जो कोहीलाई हम्मे हम्मे पर्दछ । तर पनि देवीको अनुकम्पाले अधिकाँश भक्तजनहरुले यात्रा पुरा गरेका हुन्छन् ।
बडीमालिकाको यात्रा गर्दा आजकाल ठाउँमा त्रिपाल राखेर खानाका लागि अस्थायी होटेलहरु राखिएका हुनाले खानाका लागि त्यति समस्या हुँदैन । तैपनि बाटोमा भोक लागेको बेला खानका लागि र बास बस्ने ठाउँमा खानेकुरा नपाएको अवस्थामा खानका लागि सातु वा आफुलाई मन पर्ने शुद्ध शाकाहारी ड्राई फुड बोकेर लैजान सकिन्छ । यसरी बोक्ने सामान भारी (गह्रौं) भने हुनु हुँदैन । भारी भयो भने बोकेर हिड्नलाई धेरै गाह्रो हुन सक्छ । लेक लाग्दा सुँघ्नका लागि पुजा गर्ने कपुर बोकिराख्नु भयो भने फाईदाजनक हुन्छ । पोलेको अदुवा, नुन खुर्शानी र टिम्मुर मिश्रित धुलो साथमा राखेर बेला बेलामा खानाले पनि लेक लाग्नबाट बच्न सकिन्छ । धेरै जसो ठाउँमा पानी नपाउने हुँदा पानीमा लागि बोटल साथमा राखेर हमेशा त्यसमा पानी भरिराख्नु पर्दछ । शौच सफा गर्न, मुख पुछ्न ट्वाइलेट पेपर, वेट टिस्यु पेपर साथमा लैजाँदा राम्रो हुन्छ । चिसोबाट जोगिन भिक्स, लिप गार्ड, इन्हेलर, कोल्ड क्रिम साथमा राखेर बेला बेला प्रयोग गर्नु बुद्धिमानी हुन्छ । जीउको दुखाई कम गर्न मुभ, सिटामोल जस्ता औषधी साथमा राखिराख्नु पर्दछ । रात्री सुत्नका लागि सिलिपिङ व्याग, टेण्ट, ज्याकेट, थर्मकोल लिनु भयो भने राम्रो हुन्छ ।
बडीमालिका क्षेत्रका सुन्दर दृश्यहरु कैद गर्नका लागि मोबाईल वा क्यामेराको साथमा पावर व्याकअप लैजानु पर्ने हुन्छ । पावर व्याकअप लिंदा कम्तिमा ६ दिनसम्म चार्ज गर्न मिल्ने क्षमता भएको पावर व्याकअप लैजानु पर्दछ।
==सञ्चार सेवा==
धार्मिक तथा पर्यटकीय दृष्टिले महत्वपूर्ण [[बाजुरा जिल्ला|बाजुरा]]को बडीमालिका क्षेत्रमा दूरसञ्चार तथा इन्टरनेट सेवाको पहुँच विस्तार भएको छ। नेपाल टेलिकमले बडीमालिका क्षेत्रमा फोर-जी सेवा विस्तार गरेपछि ८ भाद्र, २०८३ सोमबारदेखि उक्त क्षेत्रमा मोबाइल फोन तथा इन्टरनेट सेवा सञ्चालनमा आएको हो।<ref>{{वेब स्रोत|लेखक=गोरखापत्र अनलाइन|शीर्षक=बडीमालिका क्षेत्रमा पुग्यो टेलिफोन र इन्टरनेट सेवा|युआरएल=https://gorkhapatraonline.com/news/219713|कार्य=|प्रकाशक=|वेबसाइट=गोरखापत्र अनलाइन|भाषा=नेपाली)|अभिलेखमिति=|अभिलेखयुआरएल=|मिति=|पहुँचमिति=२४ अगस्ट २०२६}}</ref>
जनैपूर्णिमाका अवसरमा बडीमालिका क्षेत्रमा आयोजना हुने धार्मिक मेलाको पूर्वसन्ध्यामा सञ्चार सेवा सञ्चालनमा आएको हो। समुद्री सतहबाट करिब ४,२०० मिटरको उचाइमा रहेको यस क्षेत्रमा सञ्चार सेवा विस्तार भएपछि स्थानीयवासी, तीर्थयात्री, पर्यटक तथा विभिन्न सरकारी तथा गैरसरकारी निकायलाई सञ्चार सम्पर्कमा सहजता हुने अपेक्षा गरिएको छ।
यसअघि दुर्गम तथा उच्च हिमाली क्षेत्रमा अवस्थित बडीमालिका क्षेत्रमा मोबाइल तथा इन्टरनेट सेवाको पहुँच सीमित थियो। फोर-जी सेवा विस्तारसँगै मोबाइल फोन तथा इन्टरनेट प्रयोग गर्न सहज भएको छ। यसले धार्मिक तथा पर्यटकीय गतिविधिका साथै सूचना आदानप्रदान र आपत्कालीन अवस्थामा सञ्चार सम्पर्क कायम गर्न समेत सहयोग पुग्ने अपेक्षा गरिएको छ।<ref>{{वेब स्रोत|लेखक=दिलबहादुर छत्याल|शीर्षक=बडीमालिकामा पुग्यो इन्टरनेट|युआरएल=https://nagariknews.nagariknetwork.com/technology/internet-reaches-badimalika-38-72.html|कार्य=|प्रकाशक=|वेबसाइट=नागरिक अनलाइन|भाषा=नेपाली)|अभिलेखमिति=|अभिलेखयुआरएल=|मिति=|पहुँचमिति=२४ अगस्ट २०२६}}</ref>
==तस्विर ग्यालरी==
<gallery>
File:बडिमालिका मन्दिर.JPG|बडिमालिका मन्दिर
File:बडिमालिका मन्दिरको बाटो.JPG|बडिमालिका मन्दिरको बाटो
File:बडिमालिका मन्दिर रहेको पहाड.JPG|बडिमालिका मन्दिर अवस्थीत पहाड
File:बडिमालिका मन्दिरमा पूजा गर्दे.JPG|बडिमालिका मन्दिरमा पूजा गर्दै
File:बडिमालिका मन्दिरबाट फर्केका मानिसहरु.JPG|बडिमालिका मन्दिरबाट फर्केका मानिसहरू
File:बडिमालिका मन्दिर अवस्थीत पहाड.JPG|बडिमालिका मन्दिर अवस्थीत पहाड
File:बडिमालिका मन्दिरबाट देखिने दृष्य.JPG|बडिमालिका मन्दिरबाट देखिने दृष्य
File:बडिमालिका मन्दिरबाट देखिने एक दृष्य.JPG|बडिमालिका मन्दिरबाट देखिने एक दृष्य
</gallery>
==श्रोत==
{{reflist|}}
==बाह्य कडीहरू==
*[http://m.ujyaaloonline.com/index.php?pआageName=news_details&id=10177&catId=21 पर्यटक पर्खदै बाजुराको बडिमालिका]{{Dead link|date=November 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[http://www.ekantipur.com/kantipur/news/news-detail.php?news_id=260067 सुरु भएन बडिमालिका संरक्षण योजना]
*[http://www.bbc.com/nepali/multimedia/2016/09/160902_badimalika_nepal?ocid=socialflow_facebook बडिमालिका यात्रा]
*[http://www.hamrogorkha.com/नियमित-स्तम्भ/पर्यटन/सौन्दर्यले-भरिएको-बाजुराको-बडिमालिका-(फोटोफिचर).htm बडिमालिका फोटो फिचर]{{Dead link|date=September 2023 |bot=InternetArchiveBot |fix-attempted=yes }}
*[http://www.sidhadrishti.com/2016/05/108.html?m=1 स्वर्गको टुक्रा बडिमालिका] {{Webarchive|url=https://web.archive.org/web/20220117221717/http://www.sidhadrishti.com/2016/05/108.html?m=1 |date=2022-01-17 }}
==यी पनि हेर्नुहोस्==
{{सुदूर-पश्चिमकी नौ भगवती}}
{{नेपालका मन्दिरहरू}}
[[श्रेणी:नेपालका मन्दिरहरू]]
[[श्रेणी:बाजुरा जिल्लाका धार्मिक ठाउँहरू]]
ptl8imct723a0stxobn815ot2arzjtm
ढाँचा:Coord
10
12319
1372349
1325453
2026-08-26T03:55:51Z
पर्वत सुवेदी
31224
/* */
1372349
wikitext
text/x-wiki
<includeonly>{{#invoke:Coordinates|coord}}</includeonly><noinclude>
{{कागजात}}
</noinclude>
5fsj7058vbn4gg0524wvsqzvks6cju7
फुङलिङ नगरपालिका
0
35438
1372355
1372072
2026-08-26T05:33:09Z
~2026-46317-18
80528
स्थानीय भाषाको नाम थपियो
1372355
wikitext
text/x-wiki
{{Infobox settlement
<!--See the table at Infobox settlement for all fields and descriptions of usage-->
<!-- आधारभूत जानकारी -->| name =
| other_name = Taplejung
| native_name = སྟབས་ལས་རྫོང
| nickname = Taplejong
| settlement_type = སྟབས་ལས་རྫོང་གྲོང་ཁྱེར
| motto = <!-- images and maps -->
| image_skyline = Phungling.JPG
| image_caption =
| image_flag =
| image_seal =
| image_map =
| pushpin_label_position = bottom
| pushpin_map_caption =
| pushpin_map = ताप्लेजुङ जिल्ला#कोशी प्रदेश#नेपाल
<!-- अवस्थिति-->
| subdivision_type = [[देश]]
| subdivision_name = {{झण्डा|नेपाल}}
| subdivision_type1 = [[नेपालका प्रदेशहरू|प्रदेश]]
| subdivision_name1 = [[कोशी प्रदेश]]
| subdivision_type2 = [[नेपालका जिल्लाहरू|जिल्ला]]
| subdivision_name2 = [[ताप्लेजुङ जिल्ला|ताप्लेजुङ]]
|<!-- राजनीति-->
| government_footnotes =<ref name="निर्वाचन २०७९">{{cite news|title=स्थानीय तह निर्वाचन २०७९|url=https://localelection2079.ekantipur.com/pradesh-1/district-taplejung/phungling?lng=nep|accessdate=०९ साउन २०८१|language=नेपाली|publisher=कान्तिपुर दैनिक}}</ref>
| government_type =
| leader_title = नगरप्रमुख
| leader_name =
अमिर मादेन <small> ([[नेपाली काङ्ग्रेस|ने.का.]])
| leader_title1 = उपप्रमुख
| leader_name1 =
भीमादेवी ओझा <small> ([[नेपाल कम्युनिस्ट पार्टी (एकीकृत मार्क्सवादी-लेनिनवादी)|नेकपा (एमाले)]])
| established_title = स्थापित
| established_date = २०७१ वैशाख २५
| unit_pref = <!--Enter: Imperial, if Imperial (metric) is desired-->
| area_footnotes =
| area_total_km2 = 125.57<!-- ALL fields dealing with a measurements are subject to automatic unit conversion-->
|population_as_of = [[नेपालको बाह्रौँ राष्ट्रिय जनगणना, २०७८|राष्ट्रिय जनगणना २०७८]]
|population_footnotes =<ref name="जनगणना २०७८">{{cite web |title=जनसङ्ख्याको आकार र वितरण|url=https://censusnepal.cbs.gov.np/results/np/population?province=1&district=1&municipality=6|accessdate=२९ जेठ २०८१|work=राष्ट्रिय जनगणना २०७८|publisher=[[राष्ट्रिय तथ्याङ्क कार्यालय (नेपाल)|राष्ट्रिय तथ्याङ्क कार्यालय]]|language=नेपाली}}</ref>
| population_total = 28449
| population_density_km2 = auto
| population_blank1_title = Ethnicities
<!-- साधारण जानकारी -->| timezone = [[नेपालको प्रमाणिक समय|नेपाली समय]]
| utc_offset = +५:४५
| timezone_DST =
| utc_offset_DST =
| coordinates = {{coord|27|21|23|N|87|40|13|E|type:city_region:NP|display=inline,title}}
| elevation_footnotes = <!--for references: use <ref> </ref> tags-->
| elevation_m = <!-- Area/postal codes & others -->
| postal_code_type =
| postal_code =
| area_code = +९७७-०२४
| blank_name = केन्द्र
| blank_info = साविक [[फुङलिङ नगरपालिका|फुङलिङ]] गाविसको कार्यालय
| website = [https://phunglingmun.gov.np आधिकारिक वेबसाइट]
| footnotes =
}}
'''फुङलिङ''' [[नेपाल]]को [[कोशी प्रदेश]]को [[ताप्लेजुङ जिल्ला]]मा अवस्थित एक नगरपलिका हो।<ref>{{cite web|url=http://www.ekantipur.com/kantipur/news/news-detail.php?news_id=247268|title=थप ४१ नगरपालिका घोषणा|publisher='''[[कान्तिपुर दैनिक]]'''}}</ref> ताप्लेजुङ जिल्लाको सदरमुकाम फुङलिङ बजार यसै नगरपालिकामा रहेको छ। २०७१ वैशाख २५ मा, नगरपालिका घोषणा गर्दा साविकको [[दोखु]] र फुङलिङ गाविसहरूलाई समावेश गरेर '''ताप्लेजुङ नगरपालिका''' बनाइएको थियो भने २७ फागुन २०७३ मा, नगरपालिकाको क्षेत्रविस्तार गर्दा साविकका [[फुरुम्बु]], [[फावाखोला]], [[हाङ्गदेवा]] गाउँ विकास समितिहरूलाई समेटेर '''फुङलिङ नगरपालिका''' बनाइएको थियो।<ref name="गाउँपालिका र नगरपालिका (सूची)">{{cite news|title=गाउँपालिका र नगरपालिका कुन जिल्लामा कति? (सूची)|url=http://lokaantar.com/taja_samachar/2084|accessdate=२३ पौष २०७३|publisher=लोकान्तर|date=२३ पौष २०७३|ref=http://lokaantar.com/taja_samachar/2084}}</ref> यस नगरपालिकालाई ८ [[वडा]]मा विभाजन गरिएको छ। यसको क्षेत्रफल १२५.५७ वर्ग किलोमिटर रहेको छ। करिब १८२४ मिटर (५९८४ फिट)को उचाइमा अवस्थित उपयुक्त हावापानी तथा प्राकृतिक सुन्दरताले भरिपूर्ण यो नगरपालिका [[उतिस|उत्तिस]], [[सल्लो|सल्ला]] र [[गुराँस]]को जङ्गलले ढाकिएको छ। यस नगरपालिकाको केन्द्र साविकको ताप्लेजुङ नगरपालिकाको कार्यालयमा राखिएको छ।<ref>{{cite web|title=स्थानीय तहहरूको विवरण|url=http://www.mofald.gov.np/ne/nepal-nagarpalika-gaupalika-list|website=सङ्घीय मामिला तथा स्थानीय विकास मन्त्रालय|publisher=[[नेपाल सरकार]]|accessdate=२०७३ फाल्गुण २७}} {{Webarchive|url=https://web.archive.org/web/20190317214821/http://mofald.gov.np/ne/nepal-nagarpalika-gaupalika-list |date=2019-03-17 }}</ref>
== शब्दोपत्ति ==
फुङलिङ भन्नाले [[लिम्बू भाषा]] मा 'फूलैफूलको ठाउँ' भन्ने बुझिन्छ।
==जनसङ्ख्या==
[[नेपालको बाह्रौँ राष्ट्रिय जनगणना, २०७८|राष्ट्रिय जनगणना २०७८]]को जनगणना अनुसार {{पृष्ठको नाम}}को कुल जनसङ्ख्या २८,४४९ रहेको छ भने यहाँ ६,८९८ घरधुरी रहेका छन्।<ref name="जनगणना २०७८"/>
== वडागत विभाजन र जनसङ्ख्या ==
नेपालको [[नेपालको बाह्रौँ राष्ट्रिय जनगणना, २०७८|बाह्रौँ राष्ट्रिय जनगणना, २०७८]] अनुसार फुङ्लिङ नगरपालिकाको कुल जनसङ्ख्या २८,४४९ रहेको छ। यस नगरपालिकालाई ११ वटा वडाहरूमा विभाजन गरिएको छ। नगरपालिकाको वडागत विवरण, क्षेत्रफल र जनघनत्वको विस्तृत तथ्याङ्क तलको तालिकामा दिइएको छ:
{| class="wikitable sortable" style="text-align:center"
|+ फुङ्लिङ नगरपालिकाको वडागत विभाजन, जनसङ्ख्या र जनघनत्व (२०७८)
|-
! वडा नं. !! समावेश साविकका वडाहरू/गाविसहरू !! जनसङ्ख्या (२०७८) !! क्षेत्रफल (वर्ग कि.मी.) !! जनघनत्व (व्यक्ति/वर्ग कि.मी.)
|-
| १ || [[फुङलिङ]] (८-९) || १,२१३ || ५.९० || २०५.५९
|-
| २ || [[फुङलिङ]] (१,३) || ३,७११ || ४.२१ || ८८१.४७
|-
| ३ || [[फुङलिङ]] (२) || २,७८२ || ८.३५ || ३३३.१७
|-
| ४ || [[फुङलिङ]] (४) || ४,१०३ || १.१३ || ३,६३०.९७
|-
| ५ || [[फुङलिङ]] (५) || २,०८१ || १.१५ || १,८०९.५७
|-
| ६ || [[फुङलिङ]] (६,७) || ३,०७१ || ३.४२ || ८९७.९५
|-
| ७ || [[दोखु]] (१,८-९) || १,७१३ || ४.०२ || ४२६.१२
|-
| ८ || [[दोखु]] (२-५,६-७) || २,३७७ || १३.९१ || १७०.८८
|-
| ९ || [[हाङदेवा]] || ३,५८४ || २३.६६ || १५१.४८
|-
| १० || [[फुरुम्बु]] || २,४५३ || २८.४३ || ८६.२८
|-
| ११ || [[फावाखोला]] || १,३६१ || ३१.३८ || ४३.३७
|-
! colspan="2" | जम्मा !! २८,४४९ !! १२५.५६ !! २२६.५८
|}
== पर्यटकीय गन्तव्यहरू ==
यहाँ रहेको [[पाथीभरा देवी (ताप्लेजुङ)|पाथीभरा]] देवीको मन्दिरमा आन्तरिक तथा बाह्य भक्तजन तथा पर्यटकहरूको घुइचो लाग्ने गर्दछ।
== व्यापार ==
करिब २ किलोमिटर लामो फुङलिङ नगरपालिका हिमाली दुर्गम सदरमुकाम भए पनि यहाँ फेन्सी मालसमान पाइने गर्छ। यहाँ तिब्बती क्षेत्रबाट आयात गरिएका धुलो दुध, सावरको जुत्ता, गलैंचा जस्ता गुणस्तरीय सामानहरू पाइन्छन्। जिल्लाको प्रमुख व्यापारिक केन्द्रको रूपमा मानिने फुङलिङ नगरपालिकामा बाटोका दुवै तिर घरहरू छन। साविकको [[दोखु]] र फुङलिङ गाविसको सिमानामा पर्ने तोक्मे डाँडामा शनिबार र मङ्गलबार हाट बजार लाग्ने गर्छ। हावापानी ठण्डा हुनेभएकोले यहाँको बजारमा राँगा, खसी, कुखुरा र बङ्गुरको मासु र जाँड, रक्सी बढी मात्रामा बिक्री हुन्छ। यहाँ [[तोङवा]] प्रचलन धेरै लोकप्रिय छ। यहाँको [[छुर्पी]], [[अलैँची|अलैंची]], [[गलैँचा|गलैंचा]], [[ढाका]] [[कपडा]], [[जडीबुटी]] आदि प्रसिद्ध छन्।
==सन्दर्भ सामग्रीहरू==
{{सन्दर्भसूची}}
==बाह्य कडीहरू==
*[http://ddctaplejung.gov.np/ जिल्ला समन्वय समितिको कार्यालय, ताप्लेजुङ, नेपाल] {{Webarchive|url=https://web.archive.org/web/20171018203403/http://ddctaplejung.gov.np/ |date=2017-10-18 }}
{{ताप्लेजुङ जिल्लाका स्थानीय तहहरू}}
[[श्रेणी:नेपालका जिल्ला सदरमुकामहरू]]
[[श्रेणी:ताप्लेजुङ जिल्लाका ठाउँहरू]]
[[श्रेणी:वि.सं. २०७१ मा घोषित नगरपालिकाहरू]]
[[श्रेणी:कोशी प्रदेशका नगरपालिकाहरू]]
m2y0m49jjvldzvnxe5xitwhv6zsumnf
मोड्युल:Coordinates
828
55244
1372315
1325456
2026-08-25T15:13:34Z
पर्वत सुवेदी
31224
परिक्षण
1372315
Scribunto
text/plain
--[[
This module is intended to replace the functionality of {{Coord}} and related
templates. It provides several methods, including
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local convert = require( "Module:Numeral converter" ).convert;
local coordinates = {};
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true);
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '¶ms='
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(coords)
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span id="coordinates">[[भौगोलिक निर्देशाङ्क प्रणाली|निर्देशाङ्कहरू]]: ' .. coords .. '</span>'
}
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Coord'
})
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
result = result .. '<strong class="error">Coordinates: ' .. v[2] .. '</strong><br />'
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[ Helper function to convert English direction to Devanagari ]]
local function devanagariChars(enChar)
if enChar == "W" or enChar == "w" then
return "प"
elseif enChar == "N" or enChar == "n" then
return "उ"
elseif enChar == "S" or enChar == "s" then
return "द"
elseif enChar == "E" or enChar == "e" then
return "पू"
end
return enChar
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "ERROR param was empty"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="यस स्थानको लागि नक्साहरू, हवाइ तस्विरहरू, र अन्य तस्विरहरू">'
.. '<span class="latitude">' .. convert("ne", coordinateSpec["dms-lat"]) .. '</span> '
.. '<span class="longitude">' .. convert("ne", coordinateSpec["dms-long"]) .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
geodeclat = convert("ne", tostring(coordinateSpec["dec-lat"]):sub(2)) .. "°" .. devanagariChars("S")
else
geodeclat = convert("ne", tostring(coordinateSpec["dec-lat"] or 0)) .. "°" .. devanagariChars("N")
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
geodeclong = convert("ne", tostring(coordinateSpec["dec-long"]):sub(2)) .. "°" .. devanagariChars("W")
else
geodeclong = convert("ne", tostring(coordinateSpec["dec-long"] or 0)) .. "°" .. devanagariChars("E")
end
local geodechtml = '<span class="geo-dec" title="यस स्थानको लागि नक्साहरू, हवाइ तस्वीरहरू, र अन्य तस्वीरहरू">'
.. geodeclat .. ' '
.. geodeclong
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = stylesheetLink }
} .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents ..
' ' .. inner .. ']</span>' .. '[[Category:Pages using gadget WikiMiniAtlas]]'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal )
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "latitude degrees < 0 with hemisphere flag"})
end
if long_d < 0 then
table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"})
end
end
if lat_d > 90 then
table.insert(errors, {source, "latitude degrees > 90"})
end
if lat_d < -90 then
table.insert(errors, {source, "latitude degrees < -90"})
end
if lat_m >= 60 then
table.insert(errors, {source, "latitude minutes >= 60"})
end
if lat_m < 0 then
table.insert(errors, {source, "latitude minutes < 0"})
end
if lat_s >= 60 then
table.insert(errors, {source, "latitude seconds >= 60"})
end
if lat_s < 0 then
table.insert(errors, {source, "latitude seconds < 0"})
end
if long_d >= 360 then
table.insert(errors, {source, "longitude degrees >= 360"})
end
if long_d <= -360 then
table.insert(errors, {source, "longitude degrees <= -360"})
end
if long_m >= 60 then
table.insert(errors, {source, "longitude minutes >= 60"})
end
if long_m < 0 then
table.insert(errors, {source, "longitude minutes < 0"})
end
if long_s >= 60 then
table.insert(errors, {source, "longitude seconds >= 60"})
end
if long_s < 0 then
table.insert(errors, {source, "longitude seconds < 0"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "Missing longitude"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, "उ", "द", mode)
coordinateSpec["dms-long"] = convert_dec2dms( long, "पू", "प", mode)
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f:upper();
long_f = long_f:upper();
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "Missing longitude" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. devanagariChars(lat_f)
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. devanagariChars(long_f)
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s)
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s)
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
return errorPrinter( {{"formatTest", "Missing latitude"}} )
elseif not tonumber(args[1]) then
return errorPrinter( {{"formatTest", "Unable to parse latitude as a number:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
return errorPrinter({{"formatTest", "Unknown argument format"}}) .. '[[Category:Pages with malformed coordinate tags]]'
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
ret = 'Coordinates on Wikidata'
elseif snaktype == 'somevalue' then
ret = 'Coordinates on Wikidata set to unknown value'
elseif snaktype == 'novalue' then
ret = 'Coordinates on Wikidata set to no value'
end
else
ret = 'विकिडाटामा निर्देशाङ्क छैन'
end
end
if ret then
return string.format('[[Category:%s]]', ret)
else
return ''
end
end
function coordinates.link(frame)
return coord_link;
end
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
local function isInline(s)
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or ''
end
local text = ''
if isInline(Display) then
text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>'
end
if isInTitle(Display) then
if not isInline(Display) then
text = text .. '<span class="geo-inline-hidden noexcerpt">' .. contents .. Notes .. '</span>'
end
text = text .. displaytitle(contents .. Notes) .. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'testcases' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
function coordinates._coord2text(coord,type)
if coord == '' or type == '' or not type then return nil end
type = mw.text.trim(type)
if type == 'lat' or type == 'long' then
local result, negative = mw.text.split((mw.ustring.match(coord,'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ')
if type == 'lat' then
result, negative = result[1], 'S'
else
result, negative = result[2], 'W'
end
result = mw.text.split(result, '°')
if result[2] == negative then result[1] = '-'..result[1] end
return result[1]
else
return mw.ustring.match(coord, 'params=.-_' .. type .. ':(.-)[ _]')
end
end
function coordinates.coord2text(frame)
return coordinates._coord2text(frame.args[1],frame.args[2])
end
function coordinates.coordinsert(frame)
for i, v in ipairs(frame.args) do
if i ~= 1 then
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3'
)
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(¶ms=[^&"<>%[%] ]*) ',
'%1&title=' .. mw.uri.encode(namestr) .. ' '
)
end
end
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-inline[^"]*">(.+)</span>)\127[^\127]*UNIQ%-%-indicator%-%x+%-%-?QINU[^\127]*\127',
function (inline, coord) return inline .. displaytitle(coord) end
)
return frame.args[1]
end
return coordinates
cwp6kn1drvvpa3s0o2g59gwdkdfy8cm
1372316
1372315
2026-08-25T16:03:46Z
पर्वत सुवेदी
31224
Restored revision 1325455 by [[Special:Contributions/पर्वत सुवेदी|पर्वत सुवेदी]] ([[User talk:पर्वत सुवेदी|talk]])
1372316
Scribunto
text/plain
--[[
This module is intended to replace the functionality of {{Coord}} and related
templates. It provides several methods, including
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true);
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '¶ms='
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(coords)
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span id="coordinates">[[Geographic coordinate system|Coordinates]]: ' .. coords .. '</span>'
}
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Coord'
})
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
result = result .. '<strong class="error">Coordinates: ' .. v[2] .. '</strong><br />'
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "ERROR param was empty"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="Maps, aerial photos, and other data for this location">'
.. '<span class="latitude">' .. coordinateSpec["dms-lat"] .. '</span> '
.. '<span class="longitude">' ..coordinateSpec["dms-long"] .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "°S"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "°N"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "°W"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "°E"
end
local geodechtml = '<span class="geo-dec" title="Maps, aerial photos, and other data for this location">'
.. geodeclat .. ' '
.. geodeclong
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = stylesheetLink }
} .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents ..
' ' .. inner .. ']</span>' .. '[[Category:Pages using gadget WikiMiniAtlas]]'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "latitude degrees < 0 with hemisphere flag"})
end
if long_d < 0 then
table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"})
end
--[[
#coordinates is inconsistent about whether this is an error. If globe: is
specified, it won't error on this condition, but otherwise it will.
For not simply disable this check.
if long_d > 180 then
table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"})
end
]]
end
if lat_d > 90 then
table.insert(errors, {source, "latitude degrees > 90"})
end
if lat_d < -90 then
table.insert(errors, {source, "latitude degrees < -90"})
end
if lat_m >= 60 then
table.insert(errors, {source, "latitude minutes >= 60"})
end
if lat_m < 0 then
table.insert(errors, {source, "latitude minutes < 0"})
end
if lat_s >= 60 then
table.insert(errors, {source, "latitude seconds >= 60"})
end
if lat_s < 0 then
table.insert(errors, {source, "latitude seconds < 0"})
end
if long_d >= 360 then
table.insert(errors, {source, "longitude degrees >= 360"})
end
if long_d <= -360 then
table.insert(errors, {source, "longitude degrees <= -360"})
end
if long_m >= 60 then
table.insert(errors, {source, "longitude minutes >= 60"})
end
if long_m < 0 then
table.insert(errors, {source, "longitude minutes < 0"})
end
if long_s >= 60 then
table.insert(errors, {source, "longitude seconds >= 60"})
end
if long_s < 0 then
table.insert(errors, {source, "longitude seconds < 0"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "Missing longitude"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f:upper();
long_f = long_f:upper();
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "Missing longitude" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. lat_f
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. long_f
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "Missing latitude"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "Unable to parse latitude as a number:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
-- formatting for geohack: geohack expects D_N_D_E notation or D;D notation
-- wikiminiatlas doesn't support D;D notation
-- #coordinates parserfunction doesn't support negative decimals with NSWE
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "Unknown argument format"}}) .. '[[Category:Pages with malformed coordinate tags]]'
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
-- coordinates exist both here and on Wikidata, and can be compared.
ret = 'Coordinates on Wikidata'
elseif snaktype == 'somevalue' then
ret = 'Coordinates on Wikidata set to unknown value'
elseif snaktype == 'novalue' then
ret = 'Coordinates on Wikidata set to no value'
end
else
-- We have to either import the coordinates to Wikidata or remove them here.
ret = 'Coordinates not on Wikidata'
end
end
if ret then
return string.format('[[Category:%s]]', ret)
else
return ''
end
end
--[[
link
Simple function to export the coordinates link for other uses.
Usage:
{{#invoke:Coordinates | link }}
]]
function coordinates.link(frame)
return coord_link;
end
--[[
dec2dms
Wrapper to allow templates to call dec2dms directly.
Usage:
{{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix |
negative_suffix | precision }}
decimal_coordinate is converted to DMS format. If positive, the positive_suffix
is appended (typical N or E), if negative, the negative suffix is appended. The
specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail
to use.
]]
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
--[[
Helper function to determine whether to use D, DM, or DMS
format depending on the precision of the decimal input.
]]
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
--[[
dms2dec
Wrapper to allow templates to call dms2dec directly.
Usage:
{{#invoke:Coordinates | dms2dec | direction_flag | degrees |
minutes | seconds }}
Converts DMS values specified as degrees, minutes, seconds too decimal format.
direction_flag is one of N, S, E, W, and determines whether the output is
positive (i.e. N and E) or negative (i.e. S and W).
]]
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
--[[
coord
Main entry point for Lua function to replace {{coord}}
Usage:
{{#invoke:Coordinates | coord }}
{{#invoke:Coordinates | coord | lat | long }}
{{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }}
...
Refer to {{coord}} documentation page for many additional parameters and
configuration options.
Note: This function provides the visual display elements of {{coord}}. In
order to load coordinates into the database, the {{#coordinates:}} parser
function must also be called, this is done automatically in the Lua
version of {{coord}}.
]]
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
-- it and ti are short for inline,title and title,inline
local function isInline(s)
-- Finds whether coordinates are displayed inline.
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
-- Finds whether coordinates are displayed in the title.
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- Calls the parser function {{#coordinates:}}.
return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or ''
end
local text = ''
if isInline(Display) then
text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>'
end
if isInTitle(Display) then
-- Add to output since indicator content is invisible to Lua later on
if not isInline(Display) then
text = text .. '<span class="geo-inline-hidden noexcerpt">' .. contents .. Notes .. '</span>'
end
text = text .. displaytitle(contents .. Notes) .. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'testcases' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
--[[
coord2text
Extracts a single value from a transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coord2text | {{Coord}} | parameter }}
Valid values for the second parameter are: lat (signed integer), long (signed integer), type, scale, dim, region, globe, source
]]
function coordinates._coord2text(coord,type)
if coord == '' or type == '' or not type then return nil end
type = mw.text.trim(type)
if type == 'lat' or type == 'long' then
local result, negative = mw.text.split((mw.ustring.match(coord,'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ')
if type == 'lat' then
result, negative = result[1], 'S'
else
result, negative = result[2], 'W'
end
result = mw.text.split(result, '°')
if result[2] == negative then result[1] = '-'..result[1] end
return result[1]
else
return mw.ustring.match(coord, 'params=.-_' .. type .. ':(.-)[ _]')
end
end
function coordinates.coord2text(frame)
return coordinates._coord2text(frame.args[1],frame.args[2])
end
--[[
coordinsert
Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }}
Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation.
]]
function coordinates.coordinsert(frame)
-- for the 2nd or later integer parameter (the first is the coord template, as above)
for i, v in ipairs(frame.args) do
if i ~= 1 then
-- if we cannot find in the coord_template the i_th coordinsert parameter e.g. region
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
-- find from the params= up to the first possibly-present underscore
-- and append the i_th coordinsert parameter and a space
-- IDK why we're adding a space but it does seem somewhat convenient
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
-- if we can't find the vcard class
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
-- take something that looks like a coord template and add the vcard span with class and fn org class
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3'
)
-- then find anything from coordinates parameters to the 'end' and attach the title parameter
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(¶ms=[^&"<>%[%] ]*) ',
'%1&title=' .. mw.uri.encode(namestr) .. ' '
)
end
end
-- replace the existing indicator with a new indicator using the modified content
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-inline[^"]*">(.+)</span>)\127[^\127]*UNIQ%-%-indicator%-%x+%-%-?QINU[^\127]*\127',
function (inline, coord) return inline .. displaytitle(coord) end
)
return frame.args[1]
end
return coordinates
g0kvlzvbowr8hudeh9ex9bf1dawsj3q
1372317
1372316
2026-08-25T16:16:46Z
पर्वत सुवेदी
31224
1372317
Scribunto
text/plain
--[[
नेपालीमा सही नतिजा दिन यहाँ केही परिवर्तनहरू गरिएका छन्। कृपया यसलाई अद्यावधिक गर्दा सावधान रहनुहोस्।
नतिजाहरू नेपालीमा छन् र तपाईले इनपुटको रूपमा नेपाली सङ्ख्याहरू दिए पनि मोड्युलले काम गर्छ भनी सुनिश्चित गर्नुहोस्।
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = '//geohack.toolforge.org/geohack.php?language=ne&pagename=' .. page_name .. '¶ms='
local templatestyles = 'Module:Coordinates/styles.css'
local function direction2ne(text)
text = text:gsub('[NSEW]', {
N = ' उत्तर',
S = ' दक्षिण',
E = ' पूर्व',
W = ' पश्चिम',
})
return text
end
local function translate2ne(text)
text = text:gsub('%d', {
['0'] = '०',
['1'] = '१',
['2'] = '२',
['3'] = '३',
['4'] = '४',
['5'] = '५',
['6'] = '६',
['7'] = '७',
['8'] = '८',
['9'] = '९',
})
return text
end
local function translate2en(text)
text = mw.ustring.gsub(text, '%d', {
['०'] = '0',
['१'] = '1',
['२'] = '2',
['३'] = '3',
['४'] = '4',
['५'] = '5',
['६'] = '6',
['७'] = '7',
['८'] = '8',
['९'] = '9',
})
text = text
:gsub(' *उत्तर', 'N')
:gsub(' *दक्षिण', 'S')
:gsub(' *पूर्व', 'E')
:gsub(' *पश्चिम', 'W')
return text
end
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(s, notes)
local l = "[[भौगोलिक निर्देशाङ्क प्रणाली|निर्देशाङ्क]]: " .. s
local co = '<span id="coordinates">' .. l .. notes .. '</span>'
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span style="font-size: small;">' .. co .. '</span>'
};
end
--[[ Helper function, Replacement for {{coord/display/inline}} ]]
local function displayinline(s, notes)
return s .. notes
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Module:coordinates' -- TODO should this use the ne name? check Module:Arguments
})
for k, v in pairs(args) do
args[k] = translate2en(v)
end
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
local errorHTML = '<strong class="error">coordinates: ' .. v[2] .. '</strong>'
result = result .. errorHTML .. "<br />"
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "त्रुटि param खाली"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="यस स्थानको लागि नक्सा, हवाई चित्रण, र अन्य जानकारी">'
.. '<span class="latitude">' .. translate2ne(coordinateSpec["dms-lat"]) .. '</span> '
.. '<span class="longitude">' .. translate2ne(coordinateSpec["dms-long"]) .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "° दक्षिण"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "° उत्तर"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "° पश्चिम"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "° पूर्व"
end
local geodechtml = '<span class="geo-dec" title="यस स्थानको लागि नक्सा, हवाई चित्रण, र अन्य जानकारी">'
.. translate2ne(geodeclat) .. ' '
.. translate2ne(geodeclong)
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} }
.. '<span class="plainlinks nourlexpansion">'
.. '[' .. coord_link .. uriComponents .. ' ' .. inner .. ']'
.. '</span>'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "गोलार्ध झण्डाहरू सहित अक्षांश डिग्री < ০"})
end
if long_d < 0 then
table.insert(errors, {source, "गोलार्ध झण्डाहरू सहित देशान्तर डिग्री < ০"})
end
--[[
#coordinates is inconsistent about whether this is an error. If globe: is
specified, it won't error on this condition, but otherwise it will.
For not simply disable this check.
if long_d > 180 then
table.insert(errors, {source, "गोलार्ध झण्डाहरू सहित देशान्तर डिग्री > ১৮০"})
end
]]
end
if lat_d > 90 then
table.insert(errors, {source, "अक्षांश डिग्री > ৯০"})
end
if lat_d < -90 then
table.insert(errors, {source, "अक्षांश डिग्री < -৯০"})
end
if lat_m >= 60 then
table.insert(errors, {source, "अक्षांश मिनेट >= ৬০"})
end
if lat_m < 0 then
table.insert(errors, {source, "अक्षांश सेकेन्ड < ০"})
end
if lat_s >= 60 then
table.insert(errors, {source, "अक्षांश सेकेन्ड >= ৬০"})
end
if lat_s < 0 then
table.insert(errors, {source, "अक्षांश सेकेन्ड < ০"})
end
if long_d >= 360 then
table.insert(errors, {source, "देशान्तर डिग्री >= ৩৬০"})
end
if long_d <= -360 then
table.insert(errors, {source, "देशान्तर डिग्री <= -৩৬০"})
end
if long_m >= 60 then
table.insert(errors, {source, "देशान्तर डिग्री >= ৬০"})
end
if long_m < 0 then
table.insert(errors, {source, "देशान्तर डिग्री < ০"})
end
if long_s >= 60 then
table.insert(errors, {source, "देशान्तर डिग्री >= ৬০"})
end
if long_s < 0 then
table.insert(errors, {source, "देशान्तर डिग्री < ০"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "देशान्तर हराइरहेको छ"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "देशान्तरलाई सङ्ख्याको रूपमा पार्स गर्न सकिँदैन।: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, " उत्तर", " दक्षिण", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, " पूर्व", " पश्चिम", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f:upper();
long_f = long_f:upper();
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "देशान्तर हराइरहेको छ" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "देशान्तरलाई सङ्ख्याको रूपमा पार्स गर्न सकिँदैन।:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. direction2ne(lat_f)
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. direction2ne(long_f)
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "अक्षांश हराइरहेको छ।"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "अक्षांशलाई संख्याको रूपमा पार्स गर्न असफल भयो।:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
-- formatting for geohack: geohack expects D_N_D_E notation or D;D notation
-- wikiminiatlas doesn't support D;D notation
-- #coordinates parserfunction doesn't support negative decimals with NSWE
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'थप अनपेक्षित प्यारामिटरहरू'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'थप अनपेक्षित प्यारामिटरहरू'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'थप अनपेक्षित प्यारामिटरहरू'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "अज्ञात तर्क ढाँचा"}})
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'प्यारामिटर: "' .. v .. '=" हुनुपर्छ "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[श्रेणी:अमान्य स्थान चिनो भएका पृष्ठहरू]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
-- coordinates exist both here and on Wikidata, and can be compared.
ret = 'विकिडाटामा निर्देशाङ्कहरू छन्।'
elseif snaktype == 'somevalue' then
ret = 'अज्ञात भनेको विकिडेटामा निर्देशाङ्कहरू सेट गरिएका छन्।'
elseif snaktype == 'novalue' then
ret = 'जसको अर्थ विकिडेटामा निर्देशाङ्कहरू निर्दिष्ट गरिएका छैनन्।'
end
else
-- We have to either import the coordinates to Wikidata or remove them here.
ret = 'विकिडाटामा निर्देशाङ्क छैन'
end
end
if ret then
return string.format('[[বিষয়শ্রেণী:%s]]', ret)
else
return ''
end
end
--[[
link
Simple function to export the coordinates link for other uses.
Usage:
{{#invoke:Coordinates | link }}
]]
function coordinates.link(frame)
return coord_link;
end
--[[
dec2dms
Wrapper to allow templates to call dec2dms directly.
Usage:
{{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix |
negative_suffix | precision }}
decimal_coordinate is converted to DMS format. If positive, the positive_suffix
is appended (typical N or E), if negative, the negative suffix is appended. The
specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail
to use.
]]
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
--[[
Helper function to determine whether to use D, DM, or DMS
format depending on the precision of the decimal input.
]]
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
--[[
dms2dec
Wrapper to allow templates to call dms2dec directly.
Usage:
{{#invoke:Coordinates | dms2dec | direction_flag | degrees |
minutes | seconds }}
Converts DMS values specified as degrees, minutes, seconds too decimal format.
direction_flag is one of N, S, E, W, and determines whether the output is
positive (i.e. N and E) or negative (i.e. S and W).
]]
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
--[[
coord
Main entry point for Lua function to replace {{coord}}
Usage:
{{#invoke:Coordinates | coord }}
{{#invoke:Coordinates | coord | lat | long }}
{{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }}
...
Refer to {{coord}} documentation page for many additional parameters and
configuration options.
Note: This function provides the visual display elements of {{coord}}. In
order to load coordinates into the database, the {{#coordinates:}} parser
function must also be called, this is done automatically in the Lua
version of {{coord}}.
]]
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
local function isInline(s)
-- Finds whether coordinates are displayed inline.
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
-- Finds whether coordinates are displayed in the title.
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- Calls the parser function {{#coordinates:}}.
return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or ''
end
local text = ''
if isInline(Display) then
text = text .. displayinline(contents, Notes)
end
if isInTitle(Display) then
text = text
.. displaytitle(contents, Notes)
.. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'নথি' and page_title.subpageText ~= 'পরীক্ষা পাতা' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
--[[
coord2text
Extracts a single value from a transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coord2text | {{Coord}} | parameter }}
Valid values for the second parameter are strings: lat, long, type, scale, dim, region, globe, source
]]
function coordinates.coord2text(frame)
local coord = mw.text.trim(frame.args[1] or '')
local param = mw.text.trim(frame.args[2] or '')
if coord == '' or param == '' then return nil end
coord = translate2en(coord)
if param == 'lat' or param == 'long' then
local value, direction, long, ew = coord:match('(%-?[.%d]+)°([NS]) (%-?[.%d]+)°([EW])')
if param == 'long' then value, direction = long, ew end
value = tonumber(value)
if value then
if direction == 'S' or direction == 'W' then value = -value end
return tostring(value)
end
return nil
else
return coord:match('params=.-_'..param..':(.-)[ _]')
end
end
--[[
coordinsert
Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }}
Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation.
]]
function coordinates.coordinsert(frame)
for i, v in ipairs(frame.args) do
if i ~= 1 then
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3')
frame.args[1] = mw.ustring.gsub(frame.args[1], '(¶ms=[^&"<>%[%] ]*) ', '%1&title=' .. mw.uri.encode(namestr) .. ' ')
end
end
return frame.args[1]
end
return coordinates
ntxjmdn0g05ya2lkkv71arnfucfgwnx
1372318
1372317
2026-08-25T16:57:25Z
पर्वत सुवेदी
31224
Restored revision 1372315 by [[Special:Contributions/पर्वत सुवेदी|पर्वत सुवेदी]] ([[User talk:पर्वत सुवेदी|talk]])
1372318
Scribunto
text/plain
--[[
This module is intended to replace the functionality of {{Coord}} and related
templates. It provides several methods, including
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local convert = require( "Module:Numeral converter" ).convert;
local coordinates = {};
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true);
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '¶ms='
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(coords)
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span id="coordinates">[[भौगोलिक निर्देशाङ्क प्रणाली|निर्देशाङ्कहरू]]: ' .. coords .. '</span>'
}
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Coord'
})
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
result = result .. '<strong class="error">Coordinates: ' .. v[2] .. '</strong><br />'
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[ Helper function to convert English direction to Devanagari ]]
local function devanagariChars(enChar)
if enChar == "W" or enChar == "w" then
return "प"
elseif enChar == "N" or enChar == "n" then
return "उ"
elseif enChar == "S" or enChar == "s" then
return "द"
elseif enChar == "E" or enChar == "e" then
return "पू"
end
return enChar
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "ERROR param was empty"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="यस स्थानको लागि नक्साहरू, हवाइ तस्विरहरू, र अन्य तस्विरहरू">'
.. '<span class="latitude">' .. convert("ne", coordinateSpec["dms-lat"]) .. '</span> '
.. '<span class="longitude">' .. convert("ne", coordinateSpec["dms-long"]) .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
geodeclat = convert("ne", tostring(coordinateSpec["dec-lat"]):sub(2)) .. "°" .. devanagariChars("S")
else
geodeclat = convert("ne", tostring(coordinateSpec["dec-lat"] or 0)) .. "°" .. devanagariChars("N")
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
geodeclong = convert("ne", tostring(coordinateSpec["dec-long"]):sub(2)) .. "°" .. devanagariChars("W")
else
geodeclong = convert("ne", tostring(coordinateSpec["dec-long"] or 0)) .. "°" .. devanagariChars("E")
end
local geodechtml = '<span class="geo-dec" title="यस स्थानको लागि नक्साहरू, हवाइ तस्वीरहरू, र अन्य तस्वीरहरू">'
.. geodeclat .. ' '
.. geodeclong
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = stylesheetLink }
} .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents ..
' ' .. inner .. ']</span>' .. '[[Category:Pages using gadget WikiMiniAtlas]]'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal )
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "latitude degrees < 0 with hemisphere flag"})
end
if long_d < 0 then
table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"})
end
end
if lat_d > 90 then
table.insert(errors, {source, "latitude degrees > 90"})
end
if lat_d < -90 then
table.insert(errors, {source, "latitude degrees < -90"})
end
if lat_m >= 60 then
table.insert(errors, {source, "latitude minutes >= 60"})
end
if lat_m < 0 then
table.insert(errors, {source, "latitude minutes < 0"})
end
if lat_s >= 60 then
table.insert(errors, {source, "latitude seconds >= 60"})
end
if lat_s < 0 then
table.insert(errors, {source, "latitude seconds < 0"})
end
if long_d >= 360 then
table.insert(errors, {source, "longitude degrees >= 360"})
end
if long_d <= -360 then
table.insert(errors, {source, "longitude degrees <= -360"})
end
if long_m >= 60 then
table.insert(errors, {source, "longitude minutes >= 60"})
end
if long_m < 0 then
table.insert(errors, {source, "longitude minutes < 0"})
end
if long_s >= 60 then
table.insert(errors, {source, "longitude seconds >= 60"})
end
if long_s < 0 then
table.insert(errors, {source, "longitude seconds < 0"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "Missing longitude"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, "उ", "द", mode)
coordinateSpec["dms-long"] = convert_dec2dms( long, "पू", "प", mode)
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f:upper();
long_f = long_f:upper();
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "Missing longitude" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. devanagariChars(lat_f)
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. devanagariChars(long_f)
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s)
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s)
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
return errorPrinter( {{"formatTest", "Missing latitude"}} )
elseif not tonumber(args[1]) then
return errorPrinter( {{"formatTest", "Unable to parse latitude as a number:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
return errorPrinter({{"formatTest", "Unknown argument format"}}) .. '[[Category:Pages with malformed coordinate tags]]'
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
ret = 'Coordinates on Wikidata'
elseif snaktype == 'somevalue' then
ret = 'Coordinates on Wikidata set to unknown value'
elseif snaktype == 'novalue' then
ret = 'Coordinates on Wikidata set to no value'
end
else
ret = 'विकिडाटामा निर्देशाङ्क छैन'
end
end
if ret then
return string.format('[[Category:%s]]', ret)
else
return ''
end
end
function coordinates.link(frame)
return coord_link;
end
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
local function isInline(s)
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or ''
end
local text = ''
if isInline(Display) then
text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>'
end
if isInTitle(Display) then
if not isInline(Display) then
text = text .. '<span class="geo-inline-hidden noexcerpt">' .. contents .. Notes .. '</span>'
end
text = text .. displaytitle(contents .. Notes) .. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'testcases' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
function coordinates._coord2text(coord,type)
if coord == '' or type == '' or not type then return nil end
type = mw.text.trim(type)
if type == 'lat' or type == 'long' then
local result, negative = mw.text.split((mw.ustring.match(coord,'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ')
if type == 'lat' then
result, negative = result[1], 'S'
else
result, negative = result[2], 'W'
end
result = mw.text.split(result, '°')
if result[2] == negative then result[1] = '-'..result[1] end
return result[1]
else
return mw.ustring.match(coord, 'params=.-_' .. type .. ':(.-)[ _]')
end
end
function coordinates.coord2text(frame)
return coordinates._coord2text(frame.args[1],frame.args[2])
end
function coordinates.coordinsert(frame)
for i, v in ipairs(frame.args) do
if i ~= 1 then
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3'
)
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(¶ms=[^&"<>%[%] ]*) ',
'%1&title=' .. mw.uri.encode(namestr) .. ' '
)
end
end
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-inline[^"]*">(.+)</span>)\127[^\127]*UNIQ%-%-indicator%-%x+%-%-?QINU[^\127]*\127',
function (inline, coord) return inline .. displaytitle(coord) end
)
return frame.args[1]
end
return coordinates
cwp6kn1drvvpa3s0o2g59gwdkdfy8cm
1372319
1372318
2026-08-25T16:59:09Z
पर्वत सुवेदी
31224
Restored revision 1286066 by [[Special:Contributions/पर्वत सुवेदी|पर्वत सुवेदी]] ([[User talk:पर्वत सुवेदी|talk]])
1372319
Scribunto
text/plain
--[[
This module is intended to replace the functionality of {{Coord}} and related
templates. It provides several methods, including
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local convert = require( "Module:Numeral converter" ).convert;
local coordinates = {};
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true);
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '¶ms='
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(coords)
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span id="coordinates">[[भौगोलिक निर्देशाङ्क प्रणाली|निर्देशाङ्कहरू]]: ' .. coords .. '</span>'
}
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Coord'
})
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
result = result .. '<strong class="error">Coordinates: ' .. v[2] .. '</strong><br />'
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "ERROR param was empty"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="यस स्थानको लागि नक्साहरू, हवाइ तस्विरहरू, र अन्य तस्विरहरू">'
.. '<span class="latitude">' .. convert("ne", coordinateSpec["dms-lat"]) .. '</span> '
.. '<span class="longitude">' .. convert("ne", coordinateSpec["dms-long"]) .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "°S"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "°N"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "°W"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "°E"
end
local geodechtml = '<span class="geo-dec" title="यस स्थानको लागि नक्साहरू, हवाइ तस्विरहरू, र अन्य तस्विरहरू">'
.. geodeclat .. ' '
.. geodeclong
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = stylesheetLink }
} .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents ..
' ' .. inner .. ']</span>' .. '[[Category:Pages using gadget WikiMiniAtlas]]'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "latitude degrees < 0 with hemisphere flag"})
end
if long_d < 0 then
table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"})
end
--[[
#coordinates is inconsistent about whether this is an error. If globe: is
specified, it won't error on this condition, but otherwise it will.
For not simply disable this check.
if long_d > 180 then
table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"})
end
]]
end
if lat_d > 90 then
table.insert(errors, {source, "latitude degrees > 90"})
end
if lat_d < -90 then
table.insert(errors, {source, "latitude degrees < -90"})
end
if lat_m >= 60 then
table.insert(errors, {source, "latitude minutes >= 60"})
end
if lat_m < 0 then
table.insert(errors, {source, "latitude minutes < 0"})
end
if lat_s >= 60 then
table.insert(errors, {source, "latitude seconds >= 60"})
end
if lat_s < 0 then
table.insert(errors, {source, "latitude seconds < 0"})
end
if long_d >= 360 then
table.insert(errors, {source, "longitude degrees >= 360"})
end
if long_d <= -360 then
table.insert(errors, {source, "longitude degrees <= -360"})
end
if long_m >= 60 then
table.insert(errors, {source, "longitude minutes >= 60"})
end
if long_m < 0 then
table.insert(errors, {source, "longitude minutes < 0"})
end
if long_s >= 60 then
table.insert(errors, {source, "longitude seconds >= 60"})
end
if long_s < 0 then
table.insert(errors, {source, "longitude seconds < 0"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "Missing longitude"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f:upper();
long_f = long_f:upper();
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "Missing longitude" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
local function devanagariChars(enChar)
if enChar == "W" then
return "प"
elseif enChar == "N" then
return "उ"
elseif enChar == "S" then
return "द"
elseif enChar == "E" then
return "पू"
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. devanagariChars(lat_f)
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. devanagariChars(long_f)
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "Missing latitude"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "Unable to parse latitude as a number:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
-- formatting for geohack: geohack expects D_N_D_E notation or D;D notation
-- wikiminiatlas doesn't support D;D notation
-- #coordinates parserfunction doesn't support negative decimals with NSWE
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "Unknown argument format"}}) .. '[[Category:Pages with malformed coordinate tags]]'
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
-- coordinates exist both here and on Wikidata, and can be compared.
ret = 'Coordinates on Wikidata'
elseif snaktype == 'somevalue' then
ret = 'Coordinates on Wikidata set to unknown value'
elseif snaktype == 'novalue' then
ret = 'Coordinates on Wikidata set to no value'
end
else
-- We have to either import the coordinates to Wikidata or remove them here.
ret = 'विकिडाटामा निर्देशाङ्क छैन'
end
end
if ret then
return string.format('[[Category:%s]]', ret)
else
return ''
end
end
--[[
link
Simple function to export the coordinates link for other uses.
Usage:
{{#invoke:Coordinates | link }}
]]
function coordinates.link(frame)
return coord_link;
end
--[[
dec2dms
Wrapper to allow templates to call dec2dms directly.
Usage:
{{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix |
negative_suffix | precision }}
decimal_coordinate is converted to DMS format. If positive, the positive_suffix
is appended (typical N or E), if negative, the negative suffix is appended. The
specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail
to use.
]]
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
--[[
Helper function to determine whether to use D, DM, or DMS
format depending on the precision of the decimal input.
]]
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
--[[
dms2dec
Wrapper to allow templates to call dms2dec directly.
Usage:
{{#invoke:Coordinates | dms2dec | direction_flag | degrees |
minutes | seconds }}
Converts DMS values specified as degrees, minutes, seconds too decimal format.
direction_flag is one of N, S, E, W, and determines whether the output is
positive (i.e. N and E) or negative (i.e. S and W).
]]
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
--[[
coord
Main entry point for Lua function to replace {{coord}}
Usage:
{{#invoke:Coordinates | coord }}
{{#invoke:Coordinates | coord | lat | long }}
{{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }}
...
Refer to {{coord}} documentation page for many additional parameters and
configuration options.
Note: This function provides the visual display elements of {{coord}}. In
order to load coordinates into the database, the {{#coordinates:}} parser
function must also be called, this is done automatically in the Lua
version of {{coord}}.
]]
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
-- it and ti are short for inline,title and title,inline
local function isInline(s)
-- Finds whether coordinates are displayed inline.
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
-- Finds whether coordinates are displayed in the title.
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- Calls the parser function {{#coordinates:}}.
return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or ''
end
local text = ''
if isInline(Display) then
text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>'
end
if isInTitle(Display) then
-- Add to output since indicator content is invisible to Lua later on
if not isInline(Display) then
text = text .. '<span class="geo-inline-hidden noexcerpt">' .. contents .. Notes .. '</span>'
end
text = text .. displaytitle(contents .. Notes) .. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'testcases' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
--[[
coord2text
Extracts a single value from a transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coord2text | {{Coord}} | parameter }}
Valid values for the second parameter are: lat (signed integer), long (signed integer), type, scale, dim, region, globe, source
]]
function coordinates._coord2text(coord,type)
if coord == '' or type == '' or not type then return nil end
type = mw.text.trim(type)
if type == 'lat' or type == 'long' then
local result, negative = mw.text.split((mw.ustring.match(coord,'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ')
if type == 'lat' then
result, negative = result[1], 'S'
else
result, negative = result[2], 'W'
end
result = mw.text.split(result, '°')
if result[2] == negative then result[1] = '-'..result[1] end
return result[1]
else
return mw.ustring.match(coord, 'params=.-_' .. type .. ':(.-)[ _]')
end
end
function coordinates.coord2text(frame)
return coordinates._coord2text(frame.args[1],frame.args[2])
end
--[[
coordinsert
Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }}
Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation.
]]
function coordinates.coordinsert(frame)
-- for the 2nd or later integer parameter (the first is the coord template, as above)
for i, v in ipairs(frame.args) do
if i ~= 1 then
-- if we cannot find in the coord_template the i_th coordinsert parameter e.g. region
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
-- find from the params= up to the first possibly-present underscore
-- and append the i_th coordinsert parameter and a space
-- IDK why we're adding a space but it does seem somewhat convenient
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
-- if we can't find the vcard class
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
-- take something that looks like a coord template and add the vcard span with class and fn org class
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3'
)
-- then find anything from coordinates parameters to the 'end' and attach the title parameter
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(¶ms=[^&"<>%[%] ]*) ',
'%1&title=' .. mw.uri.encode(namestr) .. ' '
)
end
end
-- replace the existing indicator with a new indicator using the modified content
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-inline[^"]*">(.+)</span>)\127[^\127]*UNIQ%-%-indicator%-%x+%-%-?QINU[^\127]*\127',
function (inline, coord) return inline .. displaytitle(coord) end
)
return frame.args[1]
end
return coordinates
llrmsz0a3jn4nctvv7wxw20jhc2tvdl
1372339
1372319
2026-08-26T03:20:11Z
पर्वत सुवेदी
31224
1372339
Scribunto
text/plain
--[[
বাংলায় ঠিক মত ফলাফল দেয়ার জন্য এখানে কিছু পরিবর্তন করা হয়েছে। এটি হালনাগাদ করার সময় অবশ্যই সতর্কতা অবলম্বন করুন।
খেয়াল রাখুন ফলাফল যেন বাংলায় আসে ও ইনপুট হিসেবে বাংলা সংখ্যা দিলেও যেন মডিউল কাজ করে।
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = '//geohack.toolforge.org/geohack.php?language=bn&pagename=' .. page_name .. '¶ms='
local templatestyles = 'Module:Coordinates/styles.css'
local function direction2bn(text)
text = text:gsub('[NSEW]', {
N = ' उत्तर',
S = ' दक्षिण',
E = ' पूर्व',
W = ' पश्चिम',
})
return text
end
local function translate2bn(text)
text = text:gsub('%d', {
['0'] = '०',
['1'] = '१',
['2'] = '२',
['3'] = '३',
['4'] = '४',
['5'] = '५',
['6'] = '६',
['7'] = '७',
['8'] = '८',
['9'] = '९',
})
return text
end
local function translate2en(text)
text = mw.ustring.gsub(text, '%d', {
['०'] = '0',
['१'] = '1',
['२'] = '2',
['३'] = '3',
['४'] = '4',
['५'] = '5',
['६'] = '6',
['७'] = '7',
['८'] = '8',
['९'] = '9',
})
text = text
:gsub(' *उत्तर', 'N')
:gsub(' *दक्षिण', 'S')
:gsub(' *पूर्व', 'E')
:gsub(' *पश्चिम', 'W')
return text
end
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(s, notes)
local l = "[[भौगोलिक निर्देशाङ्क प्रणाली|निर्देशाङ्क]]: " .. s
local co = '<span id="coordinates">' .. l .. notes .. '</span>'
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span style="font-size: small;">' .. co .. '</span>'
};
end
--[[ Helper function, Replacement for {{coord/display/inline}} ]]
local function displayinline(s, notes)
return s .. notes
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'ढाँचा:Coordinates' -- TODO should this use the bn name? check Module:Arguments
})
for k, v in pairs(args) do
args[k] = translate2en(v)
end
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
local errorHTML = '<strong class="error">निर्देशाङ्क: ' .. v[2] .. '</strong>'
result = result .. errorHTML .. "<br />"
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "त्रुटि param खाली"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="এই অবস্থানের জন্য মানচিত্র, আকাশ থেকে তোলা চিত্র, এবং অন্যান্য তথ্য">'
.. '<span class="latitude">' .. translate2bn(coordinateSpec["dms-lat"]) .. '</span> '
.. '<span class="longitude">' .. translate2bn(coordinateSpec["dms-long"]) .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "° दक्षिण"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "° उत्तर"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "° पश्चिम"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "° पूर्व"
end
local geodechtml = '<span class="geo-dec" title="এই অবস্থানের জন্য মানচিত্র, আকাশ থেকে তোলা চিত্র, এবং অন্যান্য তথ্য">'
.. translate2bn(geodeclat) .. ' '
.. translate2bn(geodeclong)
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} }
.. '<span class="plainlinks nourlexpansion">'
.. '[' .. coord_link .. uriComponents .. ' ' .. inner .. ']'
.. '</span>'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "গোলার্ধ পতাকাসহ অক্ষাংশ ডিগ্রী < ০"})
end
if long_d < 0 then
table.insert(errors, {source, "গোলার্ধ পতাকাসহ দ্রাঘিমাংশ ডিগ্রী < ০"})
end
--[[
#coordinates is inconsistent about whether this is an error. If globe: is
specified, it won't error on this condition, but otherwise it will.
For not simply disable this check.
if long_d > 180 then
table.insert(errors, {source, "গোলার্ধ পতাকাসহ দ্রাঘিমাংশ ডিগ্রী > ১৮০"})
end
]]
end
if lat_d > 90 then
table.insert(errors, {source, "অক্ষাংশ ডিগ্রী > ৯০"})
end
if lat_d < -90 then
table.insert(errors, {source, "অক্ষাংশ ডিগ্রী < -৯০"})
end
if lat_m >= 60 then
table.insert(errors, {source, "অক্ষাংশ মিনিট >= ৬০"})
end
if lat_m < 0 then
table.insert(errors, {source, "অক্ষাংশ মিনিট < ০"})
end
if lat_s >= 60 then
table.insert(errors, {source, "অক্ষাংশ সেকেন্ড >= ৬০"})
end
if lat_s < 0 then
table.insert(errors, {source, "অক্ষাংশ সেকেন্ড < ০"})
end
if long_d >= 360 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৩৬০"})
end
if long_d <= -360 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী <= -৩৬০"})
end
if long_m >= 60 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৬০"})
end
if long_m < 0 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী < ০"})
end
if long_s >= 60 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৬০"})
end
if long_s < 0 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী < ০"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "দ্রাঘিমাংশ অনুপস্থিত"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "দ্রাঘিমাংশ একটি সংখ্যা হিসেবে পার্স করা যাবে না: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, " उत्तर", " दक्षिण", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, " पूर्व", " पश्चिम", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f:upper();
long_f = long_f:upper();
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "দ্রাঘিমাংশ অনুপস্থিত" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "দ্রাঘিমাংশ একটি সংখ্যা হিসেবে পার্স করা যাবে না:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. direction2bn(lat_f)
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. direction2bn(long_f)
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "অক্ষাংশ অনুপস্থিত"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "একটি নম্বর হিসাবে অক্ষাংশ পার্স করতে ব্যর্থ:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
-- formatting for geohack: geohack expects D_N_D_E notation or D;D notation
-- wikiminiatlas doesn't support D;D notation
-- #coordinates parserfunction doesn't support negative decimals with NSWE
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'অতিরিক্ত অপ্রত্যাশিত প্যারামিটার'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'অতিরিক্ত অপ্রত্যাশিত প্যারামিটার'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'অতিরিক্ত অপ্রত্যাশিত প্যারামিটার'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "অজানা আর্গুমেন্ট বিন্যাস"}})
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'প্যারামিটার: "' .. v .. '=" হওয়া উচিত "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[বিষয়শ্রেণী:ত্রুটিপূর্ণ স্থানাঙ্ক ট্যাগ সম্বলিত পাতা]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
-- coordinates exist both here and on Wikidata, and can be compared.
ret = 'উইকিউপাত্তে স্থানাঙ্ক আছে'
elseif snaktype == 'somevalue' then
ret = 'অজানা মানে উইকিউপাত্তে স্থানাঙ্ক নির্ধারণ করা হয়েছে'
elseif snaktype == 'novalue' then
ret = 'কোন মানে উইকিউপাত্তে স্থানাঙ্ক নির্ধারণ করা হয়নি'
end
else
-- We have to either import the coordinates to Wikidata or remove them here.
ret = 'উইকিউপাত্তে স্থানাঙ্ক নেই'
end
end
if ret then
return string.format('[[বিষয়শ্রেণী:%s]]', ret)
else
return ''
end
end
--[[
link
Simple function to export the coordinates link for other uses.
Usage:
{{#invoke:Coordinates | link }}
]]
function coordinates.link(frame)
return coord_link;
end
--[[
dec2dms
Wrapper to allow templates to call dec2dms directly.
Usage:
{{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix |
negative_suffix | precision }}
decimal_coordinate is converted to DMS format. If positive, the positive_suffix
is appended (typical N or E), if negative, the negative suffix is appended. The
specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail
to use.
]]
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
--[[
Helper function to determine whether to use D, DM, or DMS
format depending on the precision of the decimal input.
]]
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
--[[
dms2dec
Wrapper to allow templates to call dms2dec directly.
Usage:
{{#invoke:Coordinates | dms2dec | direction_flag | degrees |
minutes | seconds }}
Converts DMS values specified as degrees, minutes, seconds too decimal format.
direction_flag is one of N, S, E, W, and determines whether the output is
positive (i.e. N and E) or negative (i.e. S and W).
]]
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
--[[
coord
Main entry point for Lua function to replace {{coord}}
Usage:
{{#invoke:Coordinates | coord }}
{{#invoke:Coordinates | coord | lat | long }}
{{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }}
...
Refer to {{coord}} documentation page for many additional parameters and
configuration options.
Note: This function provides the visual display elements of {{coord}}. In
order to load coordinates into the database, the {{#coordinates:}} parser
function must also be called, this is done automatically in the Lua
version of {{coord}}.
]]
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
local function isInline(s)
-- Finds whether coordinates are displayed inline.
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
-- Finds whether coordinates are displayed in the title.
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- Calls the parser function {{#coordinates:}}.
return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or ''
end
local text = ''
if isInline(Display) then
text = text .. displayinline(contents, Notes)
end
if isInTitle(Display) then
text = text
.. displaytitle(contents, Notes)
.. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'छैन' and page_title.subpageText ~= 'परिक्षण पृष्ठ' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
--[[
coord2text
Extracts a single value from a transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coord2text | {{Coord}} | parameter }}
Valid values for the second parameter are strings: lat, long, type, scale, dim, region, globe, source
]]
function coordinates.coord2text(frame)
local coord = mw.text.trim(frame.args[1] or '')
local param = mw.text.trim(frame.args[2] or '')
if coord == '' or param == '' then return nil end
coord = translate2en(coord)
if param == 'lat' or param == 'long' then
local value, direction, long, ew = coord:match('(%-?[.%d]+)°([NS]) (%-?[.%d]+)°([EW])')
if param == 'long' then value, direction = long, ew end
value = tonumber(value)
if value then
if direction == 'S' or direction == 'W' then value = -value end
return tostring(value)
end
return nil
else
return coord:match('params=.-_'..param..':(.-)[ _]')
end
end
--[[
coordinsert
Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }}
Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation.
]]
function coordinates.coordinsert(frame)
for i, v in ipairs(frame.args) do
if i ~= 1 then
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3')
frame.args[1] = mw.ustring.gsub(frame.args[1], '(¶ms=[^&"<>%[%] ]*) ', '%1&title=' .. mw.uri.encode(namestr) .. ' ')
end
end
return frame.args[1]
end
return coordinates
1s4us32yvb3i8xa4wlycxrj562dx0n1
1372340
1372339
2026-08-26T03:23:52Z
पर्वत सुवेदी
31224
1372340
Scribunto
text/plain
--[[
नेपालीमा सही नतिजा दिन यहाँ केही परिवर्तनहरू गरिएका छन्। कृपया यसलाई उद्यावधिक गर्दा सावधान रहनुहोस्।
नतिजाहरू नेपालीमा छन् र तपाईले इनपुटको रूपमा नेपाली सङ्ख्याहरू दिए पनि मोड्युलले काम गर्छ भनी सुनिश्चित गर्नुहोस्।
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = '//geohack.toolforge.org/geohack.php?language=ne&pagename=' .. page_name .. '¶ms='
local templatestyles = 'Module:Coordinates/styles.css'
local function direction2bn(text)
text = text:gsub('[NSEW]', {
N = ' उत्तर',
S = ' दक्षिण',
E = ' पूर्व',
W = ' पश्चिम',
})
return text
end
local function translate2bn(text)
text = text:gsub('%d', {
['0'] = '०',
['1'] = '१',
['2'] = '२',
['3'] = '३',
['4'] = '४',
['5'] = '५',
['6'] = '६',
['7'] = '७',
['8'] = '८',
['9'] = '९',
})
return text
end
local function translate2en(text)
text = mw.ustring.gsub(text, '%d', {
['०'] = '0',
['१'] = '1',
['२'] = '2',
['३'] = '3',
['४'] = '4',
['५'] = '5',
['६'] = '6',
['७'] = '7',
['८'] = '8',
['९'] = '9',
})
text = text
:gsub(' *उत्तर', 'N')
:gsub(' *दक्षिण', 'S')
:gsub(' *पूर्व', 'E')
:gsub(' *पश्चिम', 'W')
return text
end
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(s, notes)
local l = "[[भौगोलिक निर्देशाङ्क प्रणाली|निर्देशाङ्क]]: " .. s
local co = '<span id="coordinates">' .. l .. notes .. '</span>'
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span style="font-size: small;">' .. co .. '</span>'
};
end
--[[ Helper function, Replacement for {{coord/display/inline}} ]]
local function displayinline(s, notes)
return s .. notes
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'ढाँचा:Coordinates' -- TODO should this use the ne name? check Module:Arguments
})
for k, v in pairs(args) do
args[k] = translate2en(v)
end
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
local errorHTML = '<strong class="error">निर्देशाङ्क: ' .. v[2] .. '</strong>'
result = result .. errorHTML .. "<br />"
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "त्रुटि param खाली"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="यस स्थानको लागि नक्सा, हवाई चित्रण, र अन्य जानकारी">'
.. '<span class="latitude">' .. translate2bn(coordinateSpec["dms-lat"]) .. '</span> '
.. '<span class="longitude">' .. translate2bn(coordinateSpec["dms-long"]) .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "° दक्षिण"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "° उत्तर"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "° पश्चिम"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "° पूर्व"
end
local geodechtml = '<span class="geo-dec" title="यस स्थानको लागि नक्सा, हवाई चित्रण, र अन्य जानकारी">'
.. translate2bn(geodeclat) .. ' '
.. translate2bn(geodeclong)
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} }
.. '<span class="plainlinks nourlexpansion">'
.. '[' .. coord_link .. uriComponents .. ' ' .. inner .. ']'
.. '</span>'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "গোলার্ধ পতাকাসহ অক্ষাংশ ডিগ্রী < ০"})
end
if long_d < 0 then
table.insert(errors, {source, "গোলার্ধ পতাকাসহ দ্রাঘিমাংশ ডিগ্রী < ০"})
end
--[[
#coordinates is inconsistent about whether this is an error. If globe: is
specified, it won't error on this condition, but otherwise it will.
For not simply disable this check.
if long_d > 180 then
table.insert(errors, {source, "গোলার্ধ পতাকাসহ দ্রাঘিমাংশ ডিগ্রী > ১৮০"})
end
]]
end
if lat_d > 90 then
table.insert(errors, {source, "অক্ষাংশ ডিগ্রী > ৯০"})
end
if lat_d < -90 then
table.insert(errors, {source, "অক্ষাংশ ডিগ্রী < -৯০"})
end
if lat_m >= 60 then
table.insert(errors, {source, "অক্ষাংশ মিনিট >= ৬০"})
end
if lat_m < 0 then
table.insert(errors, {source, "অক্ষাংশ মিনিট < ০"})
end
if lat_s >= 60 then
table.insert(errors, {source, "অক্ষাংশ সেকেন্ড >= ৬০"})
end
if lat_s < 0 then
table.insert(errors, {source, "অক্ষাংশ সেকেন্ড < ০"})
end
if long_d >= 360 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৩৬০"})
end
if long_d <= -360 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী <= -৩৬০"})
end
if long_m >= 60 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৬০"})
end
if long_m < 0 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী < ০"})
end
if long_s >= 60 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৬০"})
end
if long_s < 0 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী < ০"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "দ্রাঘিমাংশ অনুপস্থিত"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "দ্রাঘিমাংশ একটি সংখ্যা হিসেবে পার্স করা যাবে না: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, " उत्तर", " दक्षिण", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, " पूर्व", " पश्चिम", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f:upper();
long_f = long_f:upper();
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "দ্রাঘিমাংশ অনুপস্থিত" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "দ্রাঘিমাংশ একটি সংখ্যা হিসেবে পার্স করা যাবে না:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. direction2bn(lat_f)
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. direction2bn(long_f)
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "অক্ষাংশ অনুপস্থিত"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "একটি নম্বর হিসাবে অক্ষাংশ পার্স করতে ব্যর্থ:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
-- formatting for geohack: geohack expects D_N_D_E notation or D;D notation
-- wikiminiatlas doesn't support D;D notation
-- #coordinates parserfunction doesn't support negative decimals with NSWE
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'অতিরিক্ত অপ্রত্যাশিত প্যারামিটার'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'অতিরিক্ত অপ্রত্যাশিত প্যারামিটার'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'অতিরিক্ত অপ্রত্যাশিত প্যারামিটার'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "অজানা আর্গুমেন্ট বিন্যাস"}})
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'প্যারামিটার: "' .. v .. '=" হওয়া উচিত "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[श्रेणी:अमान्य स्थान चिनो भएका पृष्ठहरू]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
-- coordinates exist both here and on Wikidata, and can be compared.
ret = 'উইকিউপাত্তে স্থানাঙ্ক আছে'
elseif snaktype == 'somevalue' then
ret = 'অজানা মানে উইকিউপাত্তে স্থানাঙ্ক নির্ধারণ করা হয়েছে'
elseif snaktype == 'novalue' then
ret = 'কোন মানে উইকিউপাত্তে স্থানাঙ্ক নির্ধারণ করা হয়নি'
end
else
-- We have to either import the coordinates to Wikidata or remove them here.
ret = 'विकिडाटामा निर्देशाङ्क छैन'
end
end
if ret then
return string.format('[[श्रेणी:%s]]', ret)
else
return ''
end
end
--[[
link
Simple function to export the coordinates link for other uses.
Usage:
{{#invoke:Coordinates | link }}
]]
function coordinates.link(frame)
return coord_link;
end
--[[
dec2dms
Wrapper to allow templates to call dec2dms directly.
Usage:
{{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix |
negative_suffix | precision }}
decimal_coordinate is converted to DMS format. If positive, the positive_suffix
is appended (typical N or E), if negative, the negative suffix is appended. The
specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail
to use.
]]
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
--[[
Helper function to determine whether to use D, DM, or DMS
format depending on the precision of the decimal input.
]]
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
--[[
dms2dec
Wrapper to allow templates to call dms2dec directly.
Usage:
{{#invoke:Coordinates | dms2dec | direction_flag | degrees |
minutes | seconds }}
Converts DMS values specified as degrees, minutes, seconds too decimal format.
direction_flag is one of N, S, E, W, and determines whether the output is
positive (i.e. N and E) or negative (i.e. S and W).
]]
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
--[[
coord
Main entry point for Lua function to replace {{coord}}
Usage:
{{#invoke:Coordinates | coord }}
{{#invoke:Coordinates | coord | lat | long }}
{{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }}
...
Refer to {{coord}} documentation page for many additional parameters and
configuration options.
Note: This function provides the visual display elements of {{coord}}. In
order to load coordinates into the database, the {{#coordinates:}} parser
function must also be called, this is done automatically in the Lua
version of {{coord}}.
]]
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
local function isInline(s)
-- Finds whether coordinates are displayed inline.
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
-- Finds whether coordinates are displayed in the title.
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- Calls the parser function {{#coordinates:}}.
return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or ''
end
local text = ''
if isInline(Display) then
text = text .. displayinline(contents, Notes)
end
if isInTitle(Display) then
text = text
.. displaytitle(contents, Notes)
.. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'छैन' and page_title.subpageText ~= 'परिक्षण पृष्ठ' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
--[[
coord2text
Extracts a single value from a transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coord2text | {{Coord}} | parameter }}
Valid values for the second parameter are strings: lat, long, type, scale, dim, region, globe, source
]]
function coordinates.coord2text(frame)
local coord = mw.text.trim(frame.args[1] or '')
local param = mw.text.trim(frame.args[2] or '')
if coord == '' or param == '' then return nil end
coord = translate2en(coord)
if param == 'lat' or param == 'long' then
local value, direction, long, ew = coord:match('(%-?[.%d]+)°([NS]) (%-?[.%d]+)°([EW])')
if param == 'long' then value, direction = long, ew end
value = tonumber(value)
if value then
if direction == 'S' or direction == 'W' then value = -value end
return tostring(value)
end
return nil
else
return coord:match('params=.-_'..param..':(.-)[ _]')
end
end
--[[
coordinsert
Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }}
Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation.
]]
function coordinates.coordinsert(frame)
for i, v in ipairs(frame.args) do
if i ~= 1 then
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3')
frame.args[1] = mw.ustring.gsub(frame.args[1], '(¶ms=[^&"<>%[%] ]*) ', '%1&title=' .. mw.uri.encode(namestr) .. ' ')
end
end
return frame.args[1]
end
return coordinates
4a4atuatgtdc6wallny2cs4a3ztdrrb
1372342
1372340
2026-08-26T03:29:39Z
पर्वत सुवेदी
31224
1372342
Scribunto
text/plain
--[[
नेपालीमा सही नतिजा दिन यहाँ केही परिवर्तनहरू गरिएका छन्। कृपया यसलाई उद्यावधिक गर्दा सावधान रहनुहोस्।
नतिजाहरू नेपालीमा छन् र तपाईले इनपुटको रूपमा नेपाली सङ्ख्याहरू दिए पनि मोड्युलले काम गर्छ भनी सुनिश्चित गर्नुहोस्।
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = '//geohack.toolforge.org/geohack.php?language=ne&pagename=' .. page_name .. '¶ms='
local templatestyles = 'Module:Coordinates/styles.css'
local function direction2bn(text)
text = text:gsub('[NSEW]', {
N = ' उत्तर',
S = ' दक्षिण',
E = ' पूर्व',
W = ' पश्चिम',
})
return text
end
local function translate2bn(text)
text = text:gsub('%d', {
['0'] = '०',
['1'] = '१',
['2'] = '२',
['3'] = '३',
['4'] = '४',
['5'] = '५',
['6'] = '६',
['7'] = '७',
['8'] = '८',
['9'] = '९',
})
return text
end
local function translate2en(text)
text = mw.ustring.gsub(text, '%d', {
['०'] = '0',
['१'] = '1',
['२'] = '2',
['३'] = '3',
['४'] = '4',
['५'] = '5',
['६'] = '6',
['७'] = '7',
['८'] = '8',
['९'] = '9',
})
text = text
:gsub(' *उत्तर', 'N')
:gsub(' *दक्षिण', 'S')
:gsub(' *पूर्व', 'E')
:gsub(' *पश्चिम', 'W')
return text
end
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(s, notes)
local l = "[[भौगोलिक निर्देशाङ्क प्रणाली|निर्देशाङ्क]]: " .. s
local co = '<span id="coordinates">' .. l .. notes .. '</span>'
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span style="font-size: small;">' .. co .. '</span>'
};
end
--[[ Helper function, Replacement for {{coord/display/inline}} ]]
local function displayinline(s, notes)
return s .. notes
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'ढाँचा:Coordinates' -- TODO should this use the ne name? check Module:Arguments
})
for k, v in pairs(args) do
args[k] = translate2en(v)
end
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
local errorHTML = '<strong class="error">निर्देशाङ्क: ' .. v[2] .. '</strong>'
result = result .. errorHTML .. "<br />"
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "त्रुटि param खाली"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="यस स्थानको लागि नक्सा, हवाई चित्रण, र अन्य जानकारी">'
.. '<span class="latitude">' .. translate2bn(coordinateSpec["dms-lat"]) .. '</span> '
.. '<span class="longitude">' .. translate2bn(coordinateSpec["dms-long"]) .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "° दक्षिण"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "° उत्तर"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "° पश्चिम"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "° पूर्व"
end
local geodechtml = '<span class="geo-dec" title="यस स्थानको लागि नक्सा, हवाई चित्रण, र अन्य जानकारी">'
.. translate2bn(geodeclat) .. ' '
.. translate2bn(geodeclong)
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} }
.. '<span class="plainlinks nourlexpansion">'
.. '[' .. coord_link .. uriComponents .. ' ' .. inner .. ']'
.. '</span>'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "গোলার্ধ পতাকাসহ অক্ষাংশ ডিগ্রী < ০"})
end
if long_d < 0 then
table.insert(errors, {source, "গোলার্ধ পতাকাসহ দ্রাঘিমাংশ ডিগ্রী < ০"})
end
--[[
#coordinates is inconsistent about whether this is an error. If globe: is
specified, it won't error on this condition, but otherwise it will.
For not simply disable this check.
if long_d > 180 then
table.insert(errors, {source, "গোলার্ধ পতাকাসহ দ্রাঘিমাংশ ডিগ্রী > ১৮০"})
end
]]
end
if lat_d > 90 then
table.insert(errors, {source, "অক্ষাংশ ডিগ্রী > ৯০"})
end
if lat_d < -90 then
table.insert(errors, {source, "অক্ষাংশ ডিগ্রী < -৯০"})
end
if lat_m >= 60 then
table.insert(errors, {source, "অক্ষাংশ মিনিট >= ৬০"})
end
if lat_m < 0 then
table.insert(errors, {source, "অক্ষাংশ মিনিট < ০"})
end
if lat_s >= 60 then
table.insert(errors, {source, "অক্ষাংশ সেকেন্ড >= ৬০"})
end
if lat_s < 0 then
table.insert(errors, {source, "অক্ষাংশ সেকেন্ড < ০"})
end
if long_d >= 360 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৩৬০"})
end
if long_d <= -360 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী <= -৩৬০"})
end
if long_m >= 60 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৬০"})
end
if long_m < 0 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী < ০"})
end
if long_s >= 60 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৬০"})
end
if long_s < 0 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী < ০"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "দ্রাঘিমাংশ অনুপস্থিত"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "দ্রাঘিমাংশ একটি সংখ্যা হিসেবে পার্স করা যাবে না: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, " उत्तर", " दक्षिण", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, " पूर्व", " पश्चिम", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f:upper();
long_f = long_f:upper();
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "দ্রাঘিমাংশ অনুপস্থিত" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "দ্রাঘিমাংশ একটি সংখ্যা হিসেবে পার্স করা যাবে না:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. direction2bn(lat_f)
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. direction2bn(long_f)
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "अक्षांश अनुपस्थित"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "একটি নম্বর হিসাবে অক্ষাংশ পার্স করতে ব্যর্থ:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
-- formatting for geohack: geohack expects D_N_D_E notation or D;D notation
-- wikiminiatlas doesn't support D;D notation
-- #coordinates parserfunction doesn't support negative decimals with NSWE
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'অতিরিক্ত অপ্রত্যাশিত প্যারামিটার'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'অতিরিক্ত অপ্রত্যাশিত প্যারামিটার'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'অতিরিক্ত অপ্রত্যাশিত প্যারামিটার'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "অজানা আর্গুমেন্ট বিন্যাস"}})
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'প্যারামিটার: "' .. v .. '=" হওয়া উচিত "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[श्रेणी:अमान्य स्थान चिनो भएका पृष्ठहरू]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
-- coordinates exist both here and on Wikidata, and can be compared.
ret = 'উইকিউপাত্তে স্থানাঙ্ক আছে'
elseif snaktype == 'somevalue' then
ret = 'অজানা মানে উইকিউপাত্তে স্থানাঙ্ক নির্ধারণ করা হয়েছে'
elseif snaktype == 'novalue' then
ret = 'কোন মানে উইকিউপাত্তে স্থানাঙ্ক নির্ধারণ করা হয়নি'
end
else
-- We have to either import the coordinates to Wikidata or remove them here.
ret = 'विकिडाटामा निर्देशाङ्क छैन'
end
end
if ret then
return string.format('[[श्रेणी:%s]]', ret)
else
return ''
end
end
--[[
link
Simple function to export the coordinates link for other uses.
Usage:
{{#invoke:Coordinates | link }}
]]
function coordinates.link(frame)
return coord_link;
end
--[[
dec2dms
Wrapper to allow templates to call dec2dms directly.
Usage:
{{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix |
negative_suffix | precision }}
decimal_coordinate is converted to DMS format. If positive, the positive_suffix
is appended (typical N or E), if negative, the negative suffix is appended. The
specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail
to use.
]]
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
--[[
Helper function to determine whether to use D, DM, or DMS
format depending on the precision of the decimal input.
]]
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
--[[
dms2dec
Wrapper to allow templates to call dms2dec directly.
Usage:
{{#invoke:Coordinates | dms2dec | direction_flag | degrees |
minutes | seconds }}
Converts DMS values specified as degrees, minutes, seconds too decimal format.
direction_flag is one of N, S, E, W, and determines whether the output is
positive (i.e. N and E) or negative (i.e. S and W).
]]
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
--[[
coord
Main entry point for Lua function to replace {{coord}}
Usage:
{{#invoke:Coordinates | coord }}
{{#invoke:Coordinates | coord | lat | long }}
{{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }}
...
Refer to {{coord}} documentation page for many additional parameters and
configuration options.
Note: This function provides the visual display elements of {{coord}}. In
order to load coordinates into the database, the {{#coordinates:}} parser
function must also be called, this is done automatically in the Lua
version of {{coord}}.
]]
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
local function isInline(s)
-- Finds whether coordinates are displayed inline.
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
-- Finds whether coordinates are displayed in the title.
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- Calls the parser function {{#coordinates:}}.
return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or ''
end
local text = ''
if isInline(Display) then
text = text .. displayinline(contents, Notes)
end
if isInTitle(Display) then
text = text
.. displaytitle(contents, Notes)
.. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'छैन' and page_title.subpageText ~= 'परिक्षण पृष्ठ' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
--[[
coord2text
Extracts a single value from a transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coord2text | {{Coord}} | parameter }}
Valid values for the second parameter are strings: lat, long, type, scale, dim, region, globe, source
]]
function coordinates.coord2text(frame)
local coord = mw.text.trim(frame.args[1] or '')
local param = mw.text.trim(frame.args[2] or '')
if coord == '' or param == '' then return nil end
coord = translate2en(coord)
if param == 'lat' or param == 'long' then
local value, direction, long, ew = coord:match('(%-?[.%d]+)°([NS]) (%-?[.%d]+)°([EW])')
if param == 'long' then value, direction = long, ew end
value = tonumber(value)
if value then
if direction == 'S' or direction == 'W' then value = -value end
return tostring(value)
end
return nil
else
return coord:match('params=.-_'..param..':(.-)[ _]')
end
end
--[[
coordinsert
Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }}
Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation.
]]
function coordinates.coordinsert(frame)
for i, v in ipairs(frame.args) do
if i ~= 1 then
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3')
frame.args[1] = mw.ustring.gsub(frame.args[1], '(¶ms=[^&"<>%[%] ]*) ', '%1&title=' .. mw.uri.encode(namestr) .. ' ')
end
end
return frame.args[1]
end
return coordinates
ir5odlchxy4fral3f4ogsktteipg8lh
1372347
1372342
2026-08-26T03:53:12Z
पर्वत सुवेदी
31224
1372347
Scribunto
text/plain
--[[
नेपालीमा सही नतिजा दिन यहाँ केही परिवर्तनहरू गरिएका छन्। कृपया यसलाई उद्यावधिक गर्दा सावधान रहनुहोस्।
नतिजाहरू नेपालीमा छन् र तपाईले इनपुटको रूपमा नेपाली सङ्ख्याहरू दिए पनि मोड्युलले काम गर्छ भनी सुनिश्चित गर्नुहोस्।
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = '//geohack.toolforge.org/geohack.php?language=ne&pagename=' .. page_name .. '¶ms='
local templatestyles = 'Module:Coordinates/styles.css'
local function direction2bn(text)
text = text:gsub('[NSEW]', {
N = ' उत्तर',
S = ' दक्षिण',
E = ' पूर्व',
W = ' पश्चिम',
})
return text
end
local function translate2bn(text)
text = text:gsub('%d', {
['0'] = '०',
['1'] = '१',
['2'] = '२',
['3'] = '३',
['4'] = '४',
['5'] = '५',
['6'] = '६',
['7'] = '७',
['8'] = '८',
['9'] = '९',
})
return text
end
local function translate2en(text)
text = mw.ustring.gsub(text, '%d', {
['०'] = '0',
['१'] = '1',
['२'] = '2',
['३'] = '3',
['४'] = '4',
['५'] = '5',
['६'] = '6',
['७'] = '7',
['८'] = '8',
['९'] = '9',
})
text = text
:gsub(' *उत्तर', 'N')
:gsub(' *दक्षिण', 'S')
:gsub(' *पूर्व', 'E')
:gsub(' *पश्चिम', 'W')
return text
end
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(s, notes)
local l = "[[भौगोलिक निर्देशाङ्क प्रणाली|निर्देशाङ्क]]: " .. s
local co = '<span id="coordinates">' .. l .. notes .. '</span>'
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span style="font-size: small;">' .. co .. '</span>'
};
end
--[[ Helper function, Replacement for {{coord/display/inline}} ]]
local function displayinline(s, notes)
return s .. notes
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'ढाँचा:Coordinates' -- TODO should this use the ne name? check Module:Arguments
})
for k, v in pairs(args) do
args[k] = translate2en(v)
end
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
local errorHTML = '<strong class="error">निर्देशाङ्क: ' .. v[2] .. '</strong>'
result = result .. errorHTML .. "<br />"
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "त्रुटि param खाली"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="यस स्थानको लागि नक्सा, हवाई चित्रण, र अन्य जानकारी">'
.. '<span class="latitude">' .. translate2bn(coordinateSpec["dms-lat"]) .. '</span> '
.. '<span class="longitude">' .. translate2bn(coordinateSpec["dms-long"]) .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "° दक्षिण"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "° उत्तर"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "° पश्चिम"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "° पूर्व"
end
local geodechtml = '<span class="geo-dec" title="यस स्थानको लागि नक्सा, हवाई चित्रण, र अन्य जानकारी">'
.. translate2bn(geodeclat) .. ' '
.. translate2bn(geodeclong)
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} }
.. '<span class="plainlinks nourlexpansion">'
.. '[' .. coord_link .. uriComponents .. ' ' .. inner .. ']'
.. '</span>'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "गোলার্ধ পতাকাসহ अক্ষাংশ ডিগ্রী < ০"})
end
if long_d < 0 then
table.insert(errors, {source, "गোলার্ধ পতাকাসহ দ্রাঘিমাংশ ডিগ্রী < ০"})
end
end
if lat_d > 90 then
table.insert(errors, {source, "अক্ষাংশ ডিগ্রী > ৯০"})
end
if lat_d < -90 then
table.insert(errors, {source, "अক্ষাংশ ডিগ্রী < -৯০"})
end
if lat_m >= 60 then
table.insert(errors, {source, "अक्षाংশ মিনিট >= ৬০"})
end
if lat_m < 0 then
table.insert(errors, {source, "अक्षाংশ মিনিট < ০"})
end
if lat_s >= 60 then
table.insert(errors, {source, "अक्षाংশ সেকেন্ড >= ৬০"})
end
if lat_s < 0 then
table.insert(errors, {source, "अक्षाংশ সেকেন্ড < ০"})
end
if long_d >= 360 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৩৬০"})
end
if long_d <= -360 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী <= -৩৬০"})
end
if long_m >= 60 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৬০"})
end
if long_m < 0 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী < ০"})
end
if long_s >= 60 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৬০"})
end
if long_s < 0 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী < ০"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "দ্রাঘিমাংশ অনুপস্থিত"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "দ্রাঘিমাংশ একটি সংখ্যা হিসেবে পার্স করা যাবে না: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, " उत्तर", " दक्षिण", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, " पूर्व", " पश्चिम", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f and lat_f:upper() or '';
long_f = long_f and long_f:upper() or '';
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, status and lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "দ্রাঘিমাংশ অনুপস্থিত" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "দ্রাঘিমাংশ একটি সংখ্যা হিসেবে পার্স করা যাবে না:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. direction2bn(lat_f)
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. direction2bn(long_f)
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "अक्षांश अनुपस्थित"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "एक नंबर হিসাবে अक्षांश पार्स करना विफल:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'अतिरिक्त अप्रत्याशित पैरामीटर'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'अतिरिक्त अप्रत्याशित पैरामीटर'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'अतिरिक्त अप्रत्याशित पैरामीटर'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "अज्ञात आर्ग्युमेंट विन्यास"}})
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'पैरामीटर: "' .. v .. '=" होना चाहिए "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[श्रेणी:अमान्य स्थान चिनो भएका पृष्ठहरू]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
ret = 'উইকিউপাত্তে স্থানাঙ্ক আছে'
elseif snaktype == 'somevalue' then
ret = 'অজানা মানে উইকিউপাত্তে স্থানাঙ্ক নির্ধারণ করা হয়েছে'
elseif snaktype == 'novalue' then
ret = 'কোন মানে উইকিউপাত্তে স্থানাঙ্ক নির্ধারণ করা হয়নি'
end
else
ret = 'विकिडाटामा निर्देशाङ्क छैन'
end
end
if ret then
return string.format('[[श्रेणी:%s]]', ret)
else
return ''
end
end
function coordinates.link(frame)
return coord_link;
end
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
local function isInline(s)
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- यदि पहिलो positional argument नै छैन भने खाली स्ट्रिङ फर्काउने (त्रुटि रोक्न)
if not in_args[1] or in_args[1] == '' then
return ''
end
local safe_args = {}
for i = 1, 10 do
if in_args[i] and in_args[i] ~= '' then
safe_args[i] = in_args[i]
end
end
for k, v in pairs(in_args) do
if type(k) == 'string' then
safe_args[k] = v
end
end
local status, result = pcall(function()
return mw.getCurrentFrame():callParserFunction('#coordinates', safe_args)
end)
if status and result then
return result
end
return ''
end
local text = ''
if isInline(Display) then
text = text .. displayinline(contents, Notes)
end
if isInTitle(Display) then
text = text
.. displaytitle(contents, Notes)
.. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'छैन' and page_title.subpageText ~= 'परिक्षण पृष्ठ' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
function coordinates.coord2text(frame)
local coord = mw.text.trim(frame.args[1] or '')
local param = mw.text.trim(frame.args[2] or '')
if coord == '' or param == '' then return nil end
coord = translate2en(coord)
if param == 'lat' or param == 'long' then
local value, direction, long, ew = coord:match('(%-?[.%d]+)°([NS]) (%-?[.%d]+)°([EW])')
if param == 'long' then value, direction = long, ew end
value = tonumber(value)
if value then
if direction == 'S' or direction == 'W' then value = -value end
return tostring(value)
end
return nil
else
return coord:match('params=.-_'..param..':(.-)[ _]')
end
end
function coordinates.coordinsert(frame)
for i, v in ipairs(frame.args) do
if i ~= 1 then
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3')
frame.args[1] = mw.ustring.gsub(frame.args[1], '(¶ms=[^&"<>%[%] ]*) ', '%1&title=' .. mw.uri.encode(namestr) .. ' ')
end
end
return frame.args[1]
end
return coordinates
5jhn4o35mpt7qio4frdyxxw2hz0hb8g
1372348
1372347
2026-08-26T03:54:38Z
पर्वत सुवेदी
31224
1372348
Scribunto
text/plain
--[[
नेपालीमा सही नतिजा दिन यहाँ केही परिवर्तनहरू गरिएका छन्। कृपया यसलाई उद्यावधिक गर्दा सावधान रहनुहोस्।
नतिजाहरू नेपालीमा छन् र तपाईले इनपुटको रूपमा नेपाली सङ्ख्याहरू दिए पनि मोड्युलले काम गर्छ भनी सुनिश्चित गर्नुहोस्।
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = '//geohack.toolforge.org/geohack.php?language=ne&pagename=' .. page_name .. '¶ms='
local templatestyles = 'Module:Coordinates/styles.css'
local function direction2bn(text)
text = text:gsub('[NSEW]', {
N = ' उत्तर',
S = ' दक्षिण',
E = ' पूर्व',
W = ' पश्चिम',
})
return text
end
local function translate2ne(text)
text = text:gsub('%d', {
['0'] = '०',
['1'] = '१',
['2'] = '२',
['3'] = '३',
['4'] = '४',
['5'] = '५',
['6'] = '६',
['7'] = '७',
['8'] = '८',
['9'] = '९',
})
return text
end
local function translate2en(text)
text = mw.ustring.gsub(text, '%d', {
['०'] = '0',
['१'] = '1',
['२'] = '2',
['३'] = '3',
['४'] = '4',
['५'] = '5',
['६'] = '6',
['७'] = '7',
['८'] = '8',
['९'] = '9',
})
text = text
:gsub(' *उत्तर', 'N')
:gsub(' *दक्षिण', 'S')
:gsub(' *पूर्व', 'E')
:gsub(' *पश्चिम', 'W')
return text
end
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(s, notes)
local l = "[[भौगोलिक निर्देशाङ्क प्रणाली|निर्देशाङ्क]]: " .. s
local co = '<span id="coordinates">' .. l .. notes .. '</span>'
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span style="font-size: small;">' .. co .. '</span>'
};
end
--[[ Helper function, Replacement for {{coord/display/inline}} ]]
local function displayinline(s, notes)
return s .. notes
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'ढाँचा:Coordinates' -- TODO should this use the ne name? check Module:Arguments
})
for k, v in pairs(args) do
args[k] = translate2en(v)
end
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
local errorHTML = '<strong class="error">निर्देशाङ्क: ' .. v[2] .. '</strong>'
result = result .. errorHTML .. "<br />"
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "त्रुटि param खाली"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="यस स्थानको लागि नक्सा, हवाई चित्रण, र अन्य जानकारी">'
.. '<span class="latitude">' .. translate2bn(coordinateSpec["dms-lat"]) .. '</span> '
.. '<span class="longitude">' .. translate2bn(coordinateSpec["dms-long"]) .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "° दक्षिण"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "° उत्तर"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "° पश्चिम"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "° पूर्व"
end
local geodechtml = '<span class="geo-dec" title="यस स्थानको लागि नक्सा, हवाई चित्रण, र अन्य जानकारी">'
.. translate2bn(geodeclat) .. ' '
.. translate2bn(geodeclong)
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} }
.. '<span class="plainlinks nourlexpansion">'
.. '[' .. coord_link .. uriComponents .. ' ' .. inner .. ']'
.. '</span>'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "गোলার্ধ পতাকাসহ अক্ষাংশ ডিগ্রী < ০"})
end
if long_d < 0 then
table.insert(errors, {source, "गোলার্ধ পতাকাসহ দ্রাঘিমাংশ ডিগ্রী < ০"})
end
end
if lat_d > 90 then
table.insert(errors, {source, "अক্ষাংশ ডিগ্রী > ৯০"})
end
if lat_d < -90 then
table.insert(errors, {source, "अক্ষাংশ ডিগ্রী < -৯০"})
end
if lat_m >= 60 then
table.insert(errors, {source, "अक्षाংশ মিনিট >= ৬০"})
end
if lat_m < 0 then
table.insert(errors, {source, "अक्षाংশ মিনিট < ০"})
end
if lat_s >= 60 then
table.insert(errors, {source, "अक्षाংশ সেকেন্ড >= ৬০"})
end
if lat_s < 0 then
table.insert(errors, {source, "अक्षाংশ সেকেন্ড < ০"})
end
if long_d >= 360 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৩৬০"})
end
if long_d <= -360 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী <= -৩৬০"})
end
if long_m >= 60 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৬০"})
end
if long_m < 0 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী < ০"})
end
if long_s >= 60 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৬০"})
end
if long_s < 0 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী < ০"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "দ্রাঘিমাংশ অনুপস্থিত"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "দ্রাঘিমাংশ একটি সংখ্যা হিসেবে পার্স করা যাবে না: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, " उत्तर", " दक्षिण", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, " पूर्व", " पश्चिम", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f and lat_f:upper() or '';
long_f = long_f and long_f:upper() or '';
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, status and lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "দ্রাঘিমাংশ অনুপস্থিত" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "দ্রাঘিমাংশ একটি সংখ্যা হিসেবে পার্স করা যাবে না:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. direction2bn(lat_f)
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. direction2bn(long_f)
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "अक्षांश अनुपस्थित"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "एक नंबर হিসাবে अक्षांश पार्स करना विफल:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'अतिरिक्त अप्रत्याशित पैरामीटर'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'अतिरिक्त अप्रत्याशित पैरामीटर'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'अतिरिक्त अप्रत्याशित पैरामीटर'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "अज्ञात आर्ग्युमेंट विन्यास"}})
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'पैरामीटर: "' .. v .. '=" होना चाहिए "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[श्रेणी:अमान्य स्थान चिनो भएका पृष्ठहरू]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
ret = 'উইকিউপাত্তে স্থানাঙ্ক আছে'
elseif snaktype == 'somevalue' then
ret = 'অজানা মানে উইকিউপাত্তে স্থানাঙ্ক নির্ধারণ করা হয়েছে'
elseif snaktype == 'novalue' then
ret = 'কোন মানে উইকিউপাত্তে স্থানাঙ্ক নির্ধারণ করা হয়নি'
end
else
ret = 'विकिडाटामा निर्देशाङ्क छैन'
end
end
if ret then
return string.format('[[श्रेणी:%s]]', ret)
else
return ''
end
end
function coordinates.link(frame)
return coord_link;
end
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
local function isInline(s)
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- यदि पहिलो positional argument नै छैन भने खाली स्ट्रिङ फर्काउने (त्रुटि रोक्न)
if not in_args[1] or in_args[1] == '' then
return ''
end
local safe_args = {}
for i = 1, 10 do
if in_args[i] and in_args[i] ~= '' then
safe_args[i] = in_args[i]
end
end
for k, v in pairs(in_args) do
if type(k) == 'string' then
safe_args[k] = v
end
end
local status, result = pcall(function()
return mw.getCurrentFrame():callParserFunction('#coordinates', safe_args)
end)
if status and result then
return result
end
return ''
end
local text = ''
if isInline(Display) then
text = text .. displayinline(contents, Notes)
end
if isInTitle(Display) then
text = text
.. displaytitle(contents, Notes)
.. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'छैन' and page_title.subpageText ~= 'परिक्षण पृष्ठ' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
function coordinates.coord2text(frame)
local coord = mw.text.trim(frame.args[1] or '')
local param = mw.text.trim(frame.args[2] or '')
if coord == '' or param == '' then return nil end
coord = translate2en(coord)
if param == 'lat' or param == 'long' then
local value, direction, long, ew = coord:match('(%-?[.%d]+)°([NS]) (%-?[.%d]+)°([EW])')
if param == 'long' then value, direction = long, ew end
value = tonumber(value)
if value then
if direction == 'S' or direction == 'W' then value = -value end
return tostring(value)
end
return nil
else
return coord:match('params=.-_'..param..':(.-)[ _]')
end
end
function coordinates.coordinsert(frame)
for i, v in ipairs(frame.args) do
if i ~= 1 then
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3')
frame.args[1] = mw.ustring.gsub(frame.args[1], '(¶ms=[^&"<>%[%] ]*) ', '%1&title=' .. mw.uri.encode(namestr) .. ' ')
end
end
return frame.args[1]
end
return coordinates
0qijsklipsxcanlmqb65ib0immqak5p
1372351
1372348
2026-08-26T04:15:03Z
पर्वत सुवेदी
31224
1372351
Scribunto
text/plain
--[[
नेपालीमा सही नतिजा दिन यहाँ केही परिवर्तनहरू गरिएका छन्। कृपया यसलाई उद्यावधिक गर्दा सावधान रहनुहोस्।
नतिजाहरू नेपालीमा छन् र तपाईले इनपुटको रूपमा नेपाली सङ्ख्याहरू दिए पनि मोड्युलले काम गर्छ भनी सुनिश्चित गर्नुहोस्।
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = '//geohack.toolforge.org/geohack.php?language=ne&pagename=' .. page_name .. '¶ms='
local templatestyles = 'Module:Coordinates/styles.css'
local function direction2ne(text)
text = text:gsub('[NSEW]', {
N = ' उत्तर',
S = ' दक्षिण',
E = ' पूर्व',
W = ' पश्चिम',
})
return text
end
local function translate2ne(text)
text = text:gsub('%d', {
['0'] = '०',
['1'] = '१',
['2'] = '२',
['3'] = '३',
['4'] = '४',
['5'] = '५',
['6'] = '६',
['7'] = '७',
['8'] = '८',
['9'] = '९',
})
return text
end
local function translate2en(text)
text = mw.ustring.gsub(text, '%d', {
['०'] = '0',
['१'] = '1',
['२'] = '2',
['३'] = '3',
['४'] = '4',
['५'] = '5',
['६'] = '6',
['७'] = '7',
['८'] = '8',
['९'] = '9',
})
text = text
:gsub(' *उत्तर', 'N')
:gsub(' *दक्षिण', 'S')
:gsub(' *पूर्व', 'E')
:gsub(' *पश्चिम', 'W')
return text
end
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(s, notes)
local l = "[[भौगोलिक निर्देशाङ्क प्रणाली|निर्देशाङ्क]]: " .. s
local co = '<span id="coordinates">' .. l .. notes .. '</span>'
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span style="font-size: small;">' .. co .. '</span>'
};
end
--[[ Helper function, Replacement for {{coord/display/inline}} ]]
local function displayinline(s, notes)
return s .. notes
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'ढाँचा:Coordinates' -- TODO should this use the ne name? check Module:Arguments
})
for k, v in pairs(args) do
args[k] = translate2en(v)
end
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
local errorHTML = '<strong class="error">निर्देशाङ्क: ' .. v[2] .. '</strong>'
result = result .. errorHTML .. "<br />"
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "त्रुटि param खाली"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="यस स्थानको लागि नक्सा, हवाई चित्रण, र अन्य जानकारी">'
.. '<span class="latitude">' .. translate2ne(coordinateSpec["dms-lat"]) .. '</span> '
.. '<span class="longitude">' .. translate2ne(coordinateSpec["dms-long"]) .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "° दक्षिण"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "° उत्तर"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "° पश्चिम"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "° पूर्व"
end
local geodechtml = '<span class="geo-dec" title="यस स्थानको लागि नक्सा, हवाई चित्रण, र अन्य जानकारी">'
.. translate2ne(geodeclat) .. ' '
.. translate2ne(geodeclong)
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} }
.. '<span class="plainlinks nourlexpansion">'
.. '[' .. coord_link .. uriComponents .. ' ' .. inner .. ']'
.. '</span>'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "गোলার্ধ পতাকাসহ अক্ষাংশ ডিগ্রী < ০"})
end
if long_d < 0 then
table.insert(errors, {source, "गোলার্ধ পতাকাসহ দ্রাঘিমাংশ ডিগ্রী < ০"})
end
end
if lat_d > 90 then
table.insert(errors, {source, "अক্ষাংশ ডিগ্রী > ৯০"})
end
if lat_d < -90 then
table.insert(errors, {source, "अক্ষাংশ ডিগ্রী < -৯০"})
end
if lat_m >= 60 then
table.insert(errors, {source, "अक्षाংশ মিনিট >= ৬০"})
end
if lat_m < 0 then
table.insert(errors, {source, "अक्षाংশ মিনিট < ০"})
end
if lat_s >= 60 then
table.insert(errors, {source, "अक्षाংশ সেকেন্ড >= ৬০"})
end
if lat_s < 0 then
table.insert(errors, {source, "अक्षाংশ সেকেন্ড < ০"})
end
if long_d >= 360 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৩৬০"})
end
if long_d <= -360 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী <= -৩৬০"})
end
if long_m >= 60 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৬০"})
end
if long_m < 0 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী < ০"})
end
if long_s >= 60 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী >= ৬০"})
end
if long_s < 0 then
table.insert(errors, {source, "দ্রাঘিমাংশ ডিগ্রী < ০"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "দ্রাঘিমাংশ অনুপস্থিত"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "দ্রাঘিমাংশ একটি সংখ্যা হিসেবে পার্স করা যাবে না: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, " उत्तर", " दक्षिण", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, " पूर्व", " पश्चिम", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f and lat_f:upper() or '';
long_f = long_f and long_f:upper() or '';
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, status and lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "দ্রাঘিমাংশ অনুপস্থিত" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "দ্রাঘিমাংশ একটি সংখ্যা হিসেবে পার্স করা যাবে না:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. direction2ne(lat_f)
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. direction2ne(long_f)
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "अक्षांश अनुपस्थित"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "एक नंबर হিসাবে अक्षांश पार्स करना विफल:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'अतिरिक्त अप्रत्याशित पैरामीटर'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'अतिरिक्त अप्रत्याशित पैरामीटर'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'अतिरिक्त अप्रत्याशित पैरामीटर'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "अज्ञात आर्ग्युमेंट विन्यास"}})
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'पैरामीटर: "' .. v .. '=" होना चाहिए "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[श्रेणी:अमान्य स्थान चिनो भएका पृष्ठहरू]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
ret = 'উইকিউপাত্তে স্থানাঙ্ক আছে'
elseif snaktype == 'somevalue' then
ret = 'অজানা মানে উইকিউপাত্তে স্থানাঙ্ক নির্ধারণ করা হয়েছে'
elseif snaktype == 'novalue' then
ret = 'কোন মানে উইকিউপাত্তে স্থানাঙ্ক নির্ধারণ করা হয়নি'
end
else
ret = 'विकिडाटामा निर्देशाङ्क छैन'
end
end
if ret then
return string.format('[[श्रेणी:%s]]', ret)
else
return ''
end
end
function coordinates.link(frame)
return coord_link;
end
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
local function isInline(s)
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- यदि पहिलो positional argument नै छैन भने खाली स्ट्रिङ फर्काउने (त्रुटि रोक्न)
if not in_args[1] or in_args[1] == '' then
return ''
end
local safe_args = {}
for i = 1, 10 do
if in_args[i] and in_args[i] ~= '' then
safe_args[i] = in_args[i]
end
end
for k, v in pairs(in_args) do
if type(k) == 'string' then
safe_args[k] = v
end
end
local status, result = pcall(function()
return mw.getCurrentFrame():callParserFunction('#coordinates', safe_args)
end)
if status and result then
return result
end
return ''
end
local text = ''
if isInline(Display) then
text = text .. displayinline(contents, Notes)
end
if isInTitle(Display) then
text = text
.. displaytitle(contents, Notes)
.. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'छैन' and page_title.subpageText ~= 'परिक्षण पृष्ठ' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
function coordinates.coord2text(frame)
local coord = mw.text.trim(frame.args[1] or '')
local param = mw.text.trim(frame.args[2] or '')
if coord == '' or param == '' then return nil end
coord = translate2en(coord)
if param == 'lat' or param == 'long' then
local value, direction, long, ew = coord:match('(%-?[.%d]+)°([NS]) (%-?[.%d]+)°([EW])')
if param == 'long' then value, direction = long, ew end
value = tonumber(value)
if value then
if direction == 'S' or direction == 'W' then value = -value end
return tostring(value)
end
return nil
else
return coord:match('params=.-_'..param..':(.-)[ _]')
end
end
function coordinates.coordinsert(frame)
for i, v in ipairs(frame.args) do
if i ~= 1 then
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3')
frame.args[1] = mw.ustring.gsub(frame.args[1], '(¶ms=[^&"<>%[%] ]*) ', '%1&title=' .. mw.uri.encode(namestr) .. ' ')
end
end
return frame.args[1]
end
return coordinates
afwy16ki7k8dppxzr8czdwwb0r1avm7
1372358
1372351
2026-08-26T07:06:21Z
पर्वत सुवेदी
31224
परिक्षण
1372358
Scribunto
text/plain
--[[
This module is intended to replace the functionality of {{Coord}} and related
templates. It provides several methods, including
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true);
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '¶ms='
--[[ नेपाली अङ्क र दिशामा रूपान्तरण गर्ने फङ्सन ]]
local function nepaliNum(s)
if not s then return '' end
local english = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}
local nepali = {'०', '१', '२', '३', '४', '५', '६', '७', '८', '९'}
s = tostring(s)
s = s:gsub('N', 'उत्तर'):gsub('S', 'दक्षिण'):gsub('E', 'पूर्व'):gsub('W', 'पश्चिम')
for i = 1, 10 do
s = s:gsub(english[i], nepali[i])
end
return s
end
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(coords)
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span id="coordinates">[[भौगोलिक निर्देशाङ्क प्रणाली|निर्देशाङ्क]]: ' .. coords .. '</span>'
}
end
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Coord'
})
return coordinates[funcName](args, frame)
end
end
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
result = result .. '<strong class="error">निर्देशाङ्क: ' .. v[2] .. '</strong><br />'
end
return result
end
local function displayDefault(default, mode)
if default == "" then default = "dec" end
if default == mode then return "geo-default" else return "geo-nondefault" end
end
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then return "ERROR param was empty" end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local dms_lat_np = nepaliNum(coordinateSpec["dms-lat"])
local dms_long_np = nepaliNum(coordinateSpec["dms-long"])
local geodmshtml = '<span class="geo-dms" title="नक्सा, हवाई तस्बिर र यस स्थानको अन्य डेटा">'
.. '<span class="latitude">' .. dms_lat_np .. '</span> '
.. '<span class="longitude">' .. dms_long_np .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
geodeclat = nepaliNum(tostring(coordinateSpec["dec-lat"]):sub(2)) .. "°दक्षिण"
else
geodeclat = nepaliNum(coordinateSpec["dec-lat"] or 0) .. "°उत्तर"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
geodeclong = nepaliNum(tostring(coordinateSpec["dec-long"]):sub(2)) .. "°पश्चिम"
else
geodeclong = nepaliNum(coordinateSpec["dec-long"] or 0) .. "°पूर्व"
end
local geodechtml = '<span class="geo-dec" title="नक्सा, हवाई तस्बिर र यस स्थानको अन्य डेटा">'
.. geodeclat .. ' ' .. geodeclong .. '</span>'
local geonumhtml = '<span class="geo">'
.. nepaliNum(coordinateSpec["dec-lat"]) .. '; '
.. nepaliNum(coordinateSpec["dec-long"]) .. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml .. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = stylesheetLink }
} .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents ..
' ' .. inner .. ']</span>'
end
local function convert_dec2dms_d(coordinate)
return math_mod._round( coordinate, 0 ) .. "°"
end
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
return (coordinate % 360) .."°" .. string.format( "%02d′", m )
end
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
return (coordinate % 360) .."°" .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix = (coord >= 0) and firstPostfix or secondPostfix
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
else
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = (direction == "S" or direction == "W") and -1 or 1
local precision = seconds_str and (5 + math.max( math_mod._precision(seconds_str), 0 )) or
(minutes_str and minutes_str ~= '' and (3 + math.max( math_mod._precision(minutes_str), 0 )) or
math.max( math_mod._precision(degrees_str), 0 ))
local decimal = factor * (degrees + (minutes + seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal )
end
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
return errors;
end
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then return nil, {{"parseDec", "Missing longitude"}} end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode)
coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode)
coordinateSpec.default = format or "dec"
return coordinateSpec, errors
end
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}, false
lat_f = lat_f:upper();
long_f = long_f:upper();
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, long_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then return nil, {{"parseDMS", "Missing longitude" }} end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. lat_f
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. long_f
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s)
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s)
coordinateSpec.default = format or "dms"
return coordinateSpec, errors, backward
end
local function formatTest(args)
local result, errors, backward = nil, nil, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do ret[i] = args[i] or '' end
return table.concat(ret, '_')
end
if not args[1] then
return errorPrinter( {{"formatTest", "Missing latitude"}} )
elseif not tonumber(args[1]) then
return errorPrinter( {{"formatTest", "Unable to parse latitude"}} )
elseif not args[4] and not args[5] and not args[6] then
result, errors = parseDec(args[1], args[2], args.format)
if not result then return errorPrinter(errors); end
result.param = table.concat({
math.abs(tonumber(args[1])), ((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])), ((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args.format)
result.param = getParam(args, 9)
else
result, errors, backward = parseDMS(args[1], nil, nil, args[2], args[3], nil, nil, args[4], args.format)
result.param = getParam(args, 5)
end
result.name = args.name
return specPrinter(args, result), backward
end
function coordinates.link(frame)
return coord_link;
end
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
return convert_dec2dms(args[1], args[2] --[[positive]], args[3] --[[negative]], args[4])
end
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then return 'd' elseif precision <= 2 then return 'dm'; else return 'dms'; end
end
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
return convert_dms2dec(args[1], args[2], args[3], args[4])
end
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
local function isInline(s) return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti' end
local function isInTitle(s) return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti' end
local text = ''
if isInline(Display) then
text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>'
end
if isInTitle(Display) then
text = text .. displaytitle(contents .. Notes)
end
if not args.nosave then
local p_args = {}
for k, v in pairs(args) do p_args[k] = v end
p_args.notes, p_args.format, p_args.display = nil, nil, nil
text = text .. (mw.getCurrentFrame():callParserFunction('#coordinates', p_args) or '')
end
return text
end
function coordinates.coordinsert(frame)
local args = require('Module:Arguments').getArgs(frame)
return args[1] or ''
end
return coordinates
7zejxrjtjqsp3dv3nf9s0mj76dif16j
1372359
1372358
2026-08-26T07:07:33Z
पर्वत सुवेदी
31224
1372359
Scribunto
text/plain
--[[
This module is intended to replace the functionality of {{Coord}} and related
templates. It provides several methods, including
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true);
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '¶ms='
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(coords)
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span id="coordinates">[[Geographic coordinate system|Coordinates]]: ' .. coords .. '</span>'
}
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Coord'
})
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
result = result .. '<strong class="error">Coordinates: ' .. v[2] .. '</strong><br />'
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "ERROR param was empty"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="Maps, aerial photos, and other data for this location">'
.. '<span class="latitude">' .. coordinateSpec["dms-lat"] .. '</span> '
.. '<span class="longitude">' ..coordinateSpec["dms-long"] .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "°S"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "°N"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "°W"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "°E"
end
local geodechtml = '<span class="geo-dec" title="Maps, aerial photos, and other data for this location">'
.. geodeclat .. ' '
.. geodeclong
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = stylesheetLink }
} .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents ..
' ' .. inner .. ']</span>' .. '[[Category:Pages using gadget WikiMiniAtlas]]'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "latitude degrees < 0 with hemisphere flag"})
end
if long_d < 0 then
table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"})
end
--[[
#coordinates is inconsistent about whether this is an error. If globe: is
specified, it won't error on this condition, but otherwise it will.
For not simply disable this check.
if long_d > 180 then
table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"})
end
]]
end
if lat_d > 90 then
table.insert(errors, {source, "latitude degrees > 90"})
end
if lat_d < -90 then
table.insert(errors, {source, "latitude degrees < -90"})
end
if lat_m >= 60 then
table.insert(errors, {source, "latitude minutes >= 60"})
end
if lat_m < 0 then
table.insert(errors, {source, "latitude minutes < 0"})
end
if lat_s >= 60 then
table.insert(errors, {source, "latitude seconds >= 60"})
end
if lat_s < 0 then
table.insert(errors, {source, "latitude seconds < 0"})
end
if long_d >= 360 then
table.insert(errors, {source, "longitude degrees >= 360"})
end
if long_d <= -360 then
table.insert(errors, {source, "longitude degrees <= -360"})
end
if long_m >= 60 then
table.insert(errors, {source, "longitude minutes >= 60"})
end
if long_m < 0 then
table.insert(errors, {source, "longitude minutes < 0"})
end
if long_s >= 60 then
table.insert(errors, {source, "longitude seconds >= 60"})
end
if long_s < 0 then
table.insert(errors, {source, "longitude seconds < 0"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "Missing longitude"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f:upper();
long_f = long_f:upper();
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "Missing longitude" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. lat_f
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. long_f
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "Missing latitude"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "Unable to parse latitude as a number:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
-- formatting for geohack: geohack expects D_N_D_E notation or D;D notation
-- wikiminiatlas doesn't support D;D notation
-- #coordinates parserfunction doesn't support negative decimals with NSWE
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "Unknown argument format"}}) .. '[[Category:Pages with malformed coordinate tags]]'
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
-- coordinates exist both here and on Wikidata, and can be compared.
ret = 'Coordinates on Wikidata'
elseif snaktype == 'somevalue' then
ret = 'Coordinates on Wikidata set to unknown value'
elseif snaktype == 'novalue' then
ret = 'Coordinates on Wikidata set to no value'
end
else
-- We have to either import the coordinates to Wikidata or remove them here.
ret = 'Coordinates not on Wikidata'
end
end
if ret then
return string.format('[[Category:%s]]', ret)
else
return ''
end
end
--[[
Parse coordinates entered as a single string
]]
local function text2coord(text)
if type(text) ~= 'string' then return end
local coords = {}
local numTerms = 0
local parts
local function assign(k, number, start, pos)
if number then
coords[start + pos - 1] = number
if k == 1 then
numTerms = pos
elseif numTerms < pos then -- more terms in long than lat
return false
end
elseif numTerms >= pos then -- more terms in lat than long
return false
end
return true
end
text = mw.ustring.gsub(mw.text.trim(text:uupper()), "[*′″]", {['*'] = '°', ['′'] = "'", ['″'] = '"'})
for _, regex in ipairs({
"^([+%-%d.°'\"NS%s]+),%s*([+%-%d.°'\"EW%s]+)$", --split by commas
"^([+%-%d.°'\"%s]+[NS])%s*([+%-%d.°'\"%s]+[EW])$", --split by N/S
"^([+%-%d.°'%s]+\")%s*([+%-%d.°'%s]+\")$", --split by "
"^([+%-%d.°%s]+')%s*([+%-%d.°%s]+')$", --split by '
"^([+%-%d.%s]+°)%s*([+%-%d.%s]+°)$", --split by °
"^([+%-%d.]+)%s+([+%-%d.]+)$" --split by space
}) do
local lat, long = string.match(text, regex)
if lat and long then
parts = {mw.text.trim(lat), mw.text.trim(long)}
break
end
end
if not parts then return end
local SW = {"S", "W"}
local NE = {"N", "E"}
for k, v in ipairs(parts) do
local number
local start = k + numTerms
-- Find or create N, S, E, and W
local dir = v:match("([NSEW])$")
if dir then
v = v:sub(1,-2)
elseif v:sub(1,1) == '-' then
v = v:sub(2)
dir = SW[k]
else
dir = NE[k]
end
-- attempt to convert text to number
number = tonumber(v)
if number then
-- Single number, assign it to the position "start" in the "coords" array
if not assign(k, number, start, 1) then
return
end
-- attempt to convert dms to decimal
elseif string.match(v, "°") then
for pos, regex in ipairs({
"^%s*([+%-%d.]+)%s*°[^°]*$", --degrees
"^[^°']+°%s*([%d.]+)%s*'[^°']*$", --minutes
"^[^'\"]+'%s*([%d.]+)%s*\"[^'\"]*$" --seconds
}) do
-- Assign component to a position in the "coords" array determined
-- by "start" and "pos", and increment "numTerms" if this is latitude
if not assign(k, tonumber(string.match(v, regex)), start, pos) then
return
end
end
end
if coords[start] == nil then return end
coords[start + numTerms] = dir
end
return coords
end
--[[
link
Simple function to export the coordinates link for other uses.
Usage:
{{#invoke:Coordinates | link }}
]]
function coordinates.link(frame)
return coord_link;
end
--[[
dec2dms
Wrapper to allow templates to call dec2dms directly.
Usage:
{{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix |
negative_suffix | precision }}
decimal_coordinate is converted to DMS format. If positive, the positive_suffix
is appended (typical N or E), if negative, the negative suffix is appended. The
specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail
to use.
]]
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
--[[
Helper function to determine whether to use D, DM, or DMS
format depending on the precision of the decimal input.
]]
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
--[[
dms2dec
Wrapper to allow templates to call dms2dec directly.
Usage:
{{#invoke:Coordinates | dms2dec | direction_flag | degrees |
minutes | seconds }}
Converts DMS values specified as degrees, minutes, seconds too decimal format.
direction_flag is one of N, S, E, W, and determines whether the output is
positive (i.e. N and E) or negative (i.e. S and W).
]]
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
--[[
coord
Main entry point for Lua function to replace {{coord}}
Usage:
{{#invoke:Coordinates | coord }}
{{#invoke:Coordinates | coord | lat | long }}
{{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }}
...
Refer to {{coord}} documentation page for many additional parameters and
configuration options.
Note: This function provides the visual display elements of {{coord}}. In
order to load coordinates into the database, the {{#coordinates:}} parser
function must also be called, this is done automatically in the Lua
version of {{coord}}.
]]
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) then
local parsed = text2coord(args[1])
if parsed then -- full lat/long entered as a single string
for i = 2, #args do args[#parsed + i - 1] = args[i] end
for i, v in ipairs(parsed) do args[i] = v end
elseif not args[2] then -- look for coordinates from wikidata
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
-- it and ti are short for inline,title and title,inline
local function isInline(s)
-- Finds whether coordinates are displayed inline.
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
-- Finds whether coordinates are displayed in the title.
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- Calls the parser function {{#coordinates:}}.
return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or ''
end
local text = ''
if isInline(Display) then
text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>'
end
if isInTitle(Display) then
-- Add to output since indicator content is invisible to Lua later on
if not isInline(Display) then
text = text .. '<span class="geo-inline-hidden noexcerpt">' .. contents .. Notes .. '</span>'
end
text = text .. displaytitle(contents .. Notes) .. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'testcases' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
--[[
coord2text
Extracts a single value from a transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coord2text | {{Coord}} | parameter }}
Valid values for the second parameter are: lat (signed integer), long (signed integer), type, scale, dim, region, globe, source
]]
function coordinates._coord2text(coord,type)
if coord == '' or type == '' or not type then return nil end
type = mw.text.trim(type)
if type == 'lat' or type == 'long' then
local coordString = mw.ustring.match(coord,'[%.%d]+°[NS] [%.%d]+°[EW]')
if not coordString then
return nil
end
local result = mw.text.split(coordString, ' ')
local negative
if type == 'lat' then
result, negative = result[1], 'S'
else
result, negative = result[2], 'W'
end
if not result then
return nil
end
result = mw.text.split(result, '°')
if not result[1] then
return nil
end
if result[2] == negative then result[1] = '-'..result[1] end
return result[1]
else
return mw.ustring.match(coord, 'params=.-_' .. type .. ':(.-)[ _]')
end
end
function coordinates.coord2text(frame)
return coordinates._coord2text(frame.args[1],frame.args[2]) or ''
end
--[[
coordinsert
Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }}
Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation.
]]
function coordinates.coordinsert(frame)
-- for the 2nd or later integer parameter (the first is the coord template, as above)
for i, v in ipairs(frame.args) do
if i ~= 1 then
-- if we cannot find in the coord_template the i_th coordinsert parameter e.g. region
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
-- find from the params= up to the first possibly-present underscore
-- and append the i_th coordinsert parameter and a space
-- IDK why we're adding a space but it does seem somewhat convenient
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
-- if we can't find the vcard class
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
-- take something that looks like a coord template and add the vcard span with class and fn org class
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3'
)
-- then find anything from coordinates parameters to the 'end' and attach the title parameter
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(¶ms=[^&"<>%[%] ]*) ',
'%1&title=' .. mw.uri.encode(namestr) .. ' '
)
end
end
-- replace the existing indicator with a new indicator using the modified content
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-inline[^"]*">(.+)</span>)\127[^\127]*UNIQ%-%-indicator%-%x+%-%-?QINU[^\127]*\127',
function (inline, coord) return inline .. displaytitle(coord) end
)
return frame.args[1]
end
return coordinates
mgr040y9bhe26jrkzioi6ulvlqhvehy
मोड्युल:Math
828
55245
1372350
1106507
2026-08-26T04:13:35Z
पर्वत सुवेदी
31224
1372350
Scribunto
text/plain
--[[
This module provides a number of basic mathematical operations.
]]
local yesno, getArgs -- lazily initialized
local p = {} -- Holds functions to be returned from #invoke, and functions to make available to other Lua modules.
local wrap = {} -- Holds wrapper functions that process arguments from #invoke. These act as intemediary between functions meant for #invoke and functions meant for Lua.
--[[
Helper functions used to avoid redundant code.
]]
local function err(msg)
-- Generates wikitext error messages.
return mw.ustring.format('<strong class="error">বিন্যাসন ত্রুটি: %s</strong>', msg)
end
local function unpackNumberArgs(args)
-- Returns an unpacked list of arguments specified with numerical keys.
local ret = {}
for k, v in pairs(args) do
if type(k) == 'number' then
table.insert(ret, v)
end
end
return unpack(ret)
end
local function makeArgArray(...)
-- Makes an array of arguments from a list of arguments that might include nils.
local args = {...} -- Table of arguments. It might contain nils or non-number values, so we can't use ipairs.
local nums = {} -- Stores the numbers of valid numerical arguments.
local ret = {}
for k, v in pairs(args) do
v = p._cleanNumber(v)
if v then
nums[#nums + 1] = k
args[k] = v
end
end
table.sort(nums)
for i, num in ipairs(nums) do
ret[#ret + 1] = args[num]
end
return ret
end
local function fold(func, ...)
-- Use a function on all supplied arguments, and return the result. The function must accept two numbers as parameters,
-- and must return a number as an output. This number is then supplied as input to the next function call.
local vals = makeArgArray(...)
local count = #vals -- The number of valid arguments
if count == 0 then return
-- Exit if we have no valid args, otherwise removing the first arg would cause an error.
nil, 0
end
local ret = table.remove(vals, 1)
for _, val in ipairs(vals) do
ret = func(ret, val)
end
return ret, count
end
--[[
Fold arguments by selectively choosing values (func should return when to choose the current "dominant" value).
]]
local function binary_fold(func, ...)
local value = fold((function(a, b) if func(a, b) then return a else return b end end), ...)
return value
end
--[[
random
Generate a random number
Usage:
{{#invoke: Math | random }}
{{#invoke: Math | random | maximum value }}
{{#invoke: Math | random | minimum value | maximum value }}
]]
function wrap.random(args)
local first = p._cleanNumber(args[1])
local second = p._cleanNumber(args[2])
return p._random(first, second)
end
function p._random(first, second)
math.randomseed(mw.site.stats.edits + mw.site.stats.pages + os.time() + math.floor(os.clock() * 1000000000))
-- math.random will throw an error if given an explicit nil parameter, so we need to use if statements to check the params.
if first and second then
if first <= second then -- math.random doesn't allow the first number to be greater than the second.
return math.random(first, second)
end
elseif first then
return math.random(first)
else
return math.random()
end
end
--[[
order
Determine order of magnitude of a number
Usage:
{{#invoke: Math | order | value }}
]]
function wrap.order(args)
local input_string = (args[1] or args.x or '0');
local input_number = p._cleanNumber(input_string);
if input_number == nil then
return err('মাত্রার ক্রম অ-সাংখ্যিক দেখাচ্ছে')
else
return p._order(input_number)
end
end
function p._order(x)
if x == 0 then return 0 end
return math.floor(math.log10(math.abs(x)))
end
--[[
precision
Detemines the precision of a number using the string representation
Usage:
{{ #invoke: Math | precision | value }}
]]
function wrap.precision(args)
local input_string = (args[1] or args.x or '0');
local trap_fraction = args.check_fraction;
local input_number;
if not yesno then
yesno = require('Module:Yesno')
end
if yesno(trap_fraction, true) then -- Returns true for all input except nil, false, "no", "n", "0" and a few others. See [[Module:Yesno]].
local pos = string.find(input_string, '/', 1, true);
if pos ~= nil then
if string.find(input_string, '/', pos + 1, true) == nil then
local denominator = string.sub(input_string, pos+1, -1);
local denom_value = tonumber(denominator);
if denom_value ~= nil then
return math.log10(denom_value);
end
end
end
end
input_number, input_string = p._cleanNumber(input_string);
if input_string == nil then
return err('স্পষ্টতা ইনপুট অ-সাংখ্যিক দেখাচ্ছে')
else
return p._precision(input_string)
end
end
function p._precision(x)
if type(x) == 'number' then
x = tostring(x)
end
x = string.upper(x)
local decimal = x:find('%.')
local exponent_pos = x:find('E')
local result = 0;
if exponent_pos ~= nil then
local exponent = string.sub(x, exponent_pos + 1)
x = string.sub(x, 1, exponent_pos - 1)
result = result - tonumber(exponent)
end
if decimal ~= nil then
result = result + string.len(x) - decimal
return result
end
local pos = string.len(x);
while x:byte(pos) == string.byte('0') do
pos = pos - 1
result = result - 1
if pos <= 0 then
return 0
end
end
return result
end
--[[
max
Finds the maximum argument
Usage:
{{#invoke:Math| max | value1 | value2 | ... }}
Note, any values that do not evaluate to numbers are ignored.
]]
function wrap.max(args)
return p._max(unpackNumberArgs(args))
end
function p._max(...)
local max_value = binary_fold((function(a, b) return a > b end), ...)
if max_value then
return max_value
end
end
--[[
median
Find the median of set of numbers
Usage:
{{#invoke:Math | median | number1 | number2 | ...}}
OR
{{#invoke:Math | median }}
]]
function wrap.median(args)
return p._median(unpackNumberArgs(args))
end
function p._median(...)
local vals = makeArgArray(...)
local count = #vals
table.sort(vals)
if count == 0 then
return 0
end
if p._mod(count, 2) == 0 then
return (vals[count/2] + vals[count/2+1])/2
else
return vals[math.ceil(count/2)]
end
end
--[[
min
Finds the minimum argument
Usage:
{{#invoke:Math| min | value1 | value2 | ... }}
OR
{{#invoke:Math| min }}
When used with no arguments, it takes its input from the parent
frame. Note, any values that do not evaluate to numbers are ignored.
]]
function wrap.min(args)
return p._min(unpackNumberArgs(args))
end
function p._min(...)
local min_value = binary_fold((function(a, b) return a < b end), ...)
if min_value then
return min_value
end
end
--[[
sum
Finds the sum
Usage:
{{#invoke:Math| sum | value1 | value2 | ... }}
OR
{{#invoke:Math| sum }}
Note, any values that do not evaluate to numbers are ignored.
]]
function wrap.sum(args)
return p._sum(unpackNumberArgs(args))
end
function p._sum(...)
local sums, count = fold((function(a, b) return a + b end), ...)
if not sums then
return 0
else
return sums
end
end
--[[
average
Finds the average
Usage:
{{#invoke:Math| average | value1 | value2 | ... }}
OR
{{#invoke:Math| average }}
Note, any values that do not evaluate to numbers are ignored.
]]
function wrap.average(args)
return p._average(unpackNumberArgs(args))
end
function p._average(...)
local sum, count = fold((function(a, b) return a + b end), ...)
if not sum then
return 0
else
return sum / count
end
end
--[[
round
Rounds a number to specified precision
Usage:
{{#invoke:Math | round | value | precision }}
--]]
function wrap.round(args)
local value = p._cleanNumber(args[1] or args.value or 0)
local precision = p._cleanNumber(args[2] or args.precision or 0)
if value == nil or precision == nil then
return err('round input appears non-numeric')
else
return p._round(value, precision)
end
end
function p._round(value, precision)
local rescale = math.pow(10, precision or 0);
return math.floor(value * rescale + 0.5) / rescale;
end
--[[
log10
returns the log (base 10) of a number
Usage:
{{#invoke:Math | log10 | x }}
]]
function wrap.log10(args)
return math.log10(args[1])
end
--[[
mod
Implements the modulo operator
Usage:
{{#invoke:Math | mod | x | y }}
--]]
function wrap.mod(args)
local x = p._cleanNumber(args[1])
local y = p._cleanNumber(args[2])
if not x then
return err('first argument to mod appears non-numeric')
elseif not y then
return err('second argument to mod appears non-numeric')
else
return p._mod(x, y)
end
end
function p._mod(x, y)
local ret = x % y
if not (0 <= ret and ret < y) then
ret = 0
end
return ret
end
--[[
gcd
Calculates the greatest common divisor of multiple numbers
Usage:
{{#invoke:Math | gcd | value 1 | value 2 | value 3 | ... }}
--]]
function wrap.gcd(args)
return p._gcd(unpackNumberArgs(args))
end
function p._gcd(...)
local function findGcd(a, b)
local r = b
local oldr = a
while r ~= 0 do
local quotient = math.floor(oldr / r)
oldr, r = r, oldr - quotient * r
end
if oldr < 0 then
oldr = oldr * -1
end
return oldr
end
local result, count = fold(findGcd, ...)
return result
end
--[[
precision_format
Rounds a number to the specified precision and formats according to rules
originally used for {{template:Rnd}}. Output is a string.
Usage:
{{#invoke: Math | precision_format | number | precision }}
]]
function wrap.precision_format(args)
local value_string = args[1] or 0
local precision = args[2] or 0
return p._precision_format(value_string, precision)
end
function p._precision_format(value_string, precision)
-- For access to Mediawiki built-in formatter.
local lang = mw.getContentLanguage();
local lang_en = mw.getLanguage('en');
local value
value, value_string = p._cleanNumber(value_string)
precision = p._cleanNumber(precision)
-- Check for non-numeric input
if value == nil or precision == nil then
return err('invalid input when rounding')
end
local current_precision = p._precision(value)
local order = p._order(value)
-- Due to round-off effects it is neccesary to limit the returned precision under
-- some circumstances because the terminal digits will be inaccurately reported.
if order + precision >= 14 then
if order + p._precision(value_string) >= 14 then
precision = 13 - order;
end
end
-- If rounding off, truncate extra digits
if precision < current_precision then
value = p._round(value, precision)
current_precision = p._precision(value)
end
local formatted_num = lang:formatNum(math.abs(value))
local formatted_num_en = lang_en:formatNum(math.abs(value))
local sign
-- Use proper unary minus sign rather than ASCII default
if value < 0 then
sign = '−'
else
sign = ''
end
-- Handle cases requiring scientific notation
if string.find(formatted_num_en, 'E', 1, true) ~= nil or math.abs(order) >= 9 then
value = value * math.pow(10, -order)
current_precision = current_precision + order
precision = precision + order
formatted_num = lang:formatNum(math.abs(value))
else
order = 0;
end
formatted_num = sign .. formatted_num
-- Pad with zeros, if needed
if current_precision < precision then
local padding
if current_precision <= 0 then
if precision > 0 then
--local zero_sep = lang:formatNum(1.1)
formatted_num = formatted_num .. '.'
padding = precision
if padding > 20 then
padding = 20
end
formatted_num = formatted_num .. string.rep('০', padding)
end
else
padding = precision - current_precision
if padding > 20 then
padding = 20
end
formatted_num = formatted_num .. string.rep('০', padding)
end
end
-- Add exponential notation, if necessary.
if order ~= 0 then
-- Use proper unary minus sign rather than ASCII default
if order < 0 then
order = '−' .. lang:formatNum(math.abs(order))
else
order = lang:formatNum(order)
end
formatted_num = formatted_num .. '<span style="margin:0 .15em 0 .25em">×</span>১০<sup>' .. order .. '</sup>'
end
return formatted_num
end
--[[
Helper function that interprets the input numerically. If the
input does not appear to be a number, attempts evaluating it as
a parser functions expression.
]]
function p._cleanNumber(number_string)
if type(number_string) == 'number' then
-- We were passed a number, so we don't need to do any processing.
return number_string, tostring(number_string)
elseif type(number_string) ~= 'string' or not number_string:find('%S') then
-- We were passed a non-string or a blank string, so exit.
return nil, nil;
end
-- Attempt basic conversion
local number = tonumber(number_string)
-- If failed, attempt to evaluate input as an expression
if number == nil then
local success, result = pcall(mw.ext.ParserFunctions.expr, number_string)
if success then
number = tonumber(result)
number_string = tostring(number)
else
number = nil
number_string = nil
end
else
number_string = number_string:match("^%s*(.-)%s*$") -- String is valid but may contain padding, clean it.
number_string = number_string:match("^%+(.*)$") or number_string -- Trim any leading + signs.
if number_string:find('^%-?0[xX]') then
-- Number is using 0xnnn notation to indicate base 16; use the number that Lua detected instead.
number_string = tostring(number)
end
end
return number, number_string
end
--[[
Wrapper function that does basic argument processing. This ensures that all functions from #invoke can use either the current
frame or the parent frame, and it also trims whitespace for all arguments and removes blank arguments.
]]
local mt = { __index = function(t, k)
return function(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return wrap[k](getArgs(frame)) -- Argument processing is left to Module:Arguments. Whitespace is trimmed and blank arguments are removed.
end
end }
return setmetatable(p, mt)
l224urs0ym6qhaldm545d9tf1h2rjv1
गगनसिंह भण्डारी
0
60486
1372356
1367542
2026-08-26T06:20:07Z
~2026-45926-56
80497
भण्डारी
1372356
wikitext
text/x-wiki
{{Infobox Officeholder
| honorific-prefix = जनरल
| name = '''गगन सिंह'''
| honorific-suffix = '''जनरल'''
| image =
| imagesize = 220px
| caption =
| birth_date = वि सं १८५३<ref>कोतपर्वकी महारानी</ref>
| birth_place =
| death_date = वि.सं. १९०३ भदौ ३२
| death_place = काठमाडौँ ;आफ्नै निवास
| citizenship = [[नेपाली]]
|जाती = [[क्षेत्री]]
| party =
| spouse = ३
| religion = [[हिन्दू धर्म|हिन्दु]]
| children = दुइ छोरा वजीर सिंह र बद्री सिंह भण्डारी
| relatives =
|office = [[नेपाली सेनाको प्रधान सेनापति|नेपालको प्रधान सेनापति]]
|predecessor = [[माथवरसिंह थापा]]
|successor = [[जङ्गबहादुर राणा|जंगबहादुर राणा]]
|relations =
|allegiance = {{flag|नेपाल}}
|battles =
| signature =
| website =
| footnotes =
}}
'''गगन सिंह भण्डारी''' नेपाली सेनाका सेनापति थिए। उनी [[राजेन्द्र वीरविक्रम शाह|राजा राजेन्द्र]]की कान्छी रानी [[राज्यलक्ष्मी देवी|राज्य लक्ष्मीदेवी]]को विश्वासपात्र थिए । रानी राज्यलक्ष्मीदेवी [[सुरेन्द्र वीरविक्रम शाह|युवराज सुरेन्द्र]]लाई हटाएर आफ्ना छोरा राजकुमार रणेन्द्रलाई राजा बनाउन चाहन्थिन् । उनी प्रधान सेनापति भएपनि प्रधानमन्त्री भन्दा दरबारमा शक्तिशाली र प्रभावशाली थिए।
नेपाल दरबारमा भान्छाको सफासुग्घर गर्ने सामान्य काम लिएर पसेका गगनसिंह जङ्गी दरबन्दी पाएर जनरल सम्म भए। रानी लक्ष्मीदेवी आफूले जे भन्यो त्यहीँ आँखा चिम्लेर आज्ञापालन गर्ने सिपाही गगनसिंह मात्र आफ्नो भक्त भएको ठान्दथिन्। त्यसैले नेपाल दरबारमा गगनसिंहको ठाउँ फराकिलो हुँदै गएको थियो। माथवरसिंह थापाको हत्या पछि गगनसिंह दरबारमा प्रतिष्ठा प्राप्त भारदार हुन पुगेका थिए। उनी कर्तव्यनिष्ठ र राजारानीका भक्त पनि मानिएका थिए। दरबारमा यस्तै अस्मिता नभएको स्वविवेक मार्न सक्ने अन्धभक्तको कदर त्यसबेला हुन्थ्यो।
==माथवर्सिंह थापाको हत्या==
==प्रधानसेनापति ==
प्रधानमन्त्री [[माथवरसिंह थापा|माथवरसिंह]]को हत्या पछि गगनसिंह प्रधानसेनापति भए। उनी नेपाल दरबारमा प्रतिष्ठा प्राप्त भारदार हुन पुगेका थिए। उनी कर्तव्यनिष्ठ र राजारानीका भक्त पनि मानिएका थिए। त्यसो हुनाले नै निजलाई [[श्रीनाथ गण|श्रीनाथ]], लेटर, [[राजदल गण|राजदल]], महिन्द्रदल, रामदल, कालीप्रसाद, शमशेरदल जस्ता ७ वटा पल्टनको तैनाथी दिइएको थियो। त्यसका साथै राज्य प्रशासन, परराष्ट्र, जङ्गीखाना र तराईको रेखदेख गर्ने जिम्मा पनि उनैलाई दिइयो। प्रधानसेनापति गगनसिंहको शक्ति प्रधानमन्त्रीको भन्दा पनि बढ्ता भएको थियो। प्रधानमन्त्री [[फत्तेजङ्ग शाह|फत्तेजङ]]को आदेश गगनसिंहले अटेर गरिदिन्थे। त्यसैमा फत्तेजङको गुनासो थियो।<ref>{{cite book|title=नेपालको तथ्य इतिहास|author=प्रा. डा. [[राजाराम सुवेदी]]|page=२२७|date=फागुन २०६१|publisher=[[साझा प्रकाशन]]|isbn=99933-2-406-X|url=}}</ref>
== हत्या ==
{{main|कोत पर्व}}वि.सं. १९०३ भदौ ३१ को राति आफ्नै घरमा पूजा गरिरहेका बेला उनको हत्या भयो । गगनसिंहको हत्या कसले गर्यो भन्नेबारे लेखकहरूका भिन्नाभिन्नै धारणा छन् । कसैले राजा र मुख्तियारको मिलेमतोमा लाल झा नामका कुख्यात व्यक्तिले उनको हत्या गरेको भनेका छन् भने कसैले चाहिं जंगबहादुरले आफू शक्तिशाली बन्न आफ्ना भाइ [[बद्री नरसिंह राणा|बद्रीनरसिंह]]द्वारा उक्त हत्या गराएको भनी लेखेका छन् । गगनसिंहको हत्याको रहस्य सायद कहिल्यै पनि अगाडि आउँदैन । तर एउटा कुरा के भन्न सकिन्छ भने गगनसिंहको उदय राजा, मुख्तियारलगायत कसैलाई मन परेको थिएन र उनको पतन लक्ष्मीदेवी बाहेक सबैले चाहेका थिए ।
आफ्ना बाबुको पूजाकोठामा सन्ध्या गरिरहेको बेलामा अज्ञात व्यक्तिले बन्दुक हानी हत्या गरी भागेको कुरा गगनसिंहका छोरा बजीरसिंहले तुरुन्तै महारानीकहाँ रुँदै गएर पुर्याए। महारानीले तत्कालै राति नै बत्ती लिएर चार जना दरबारिया नानीसुसारे साथ हातमा नाङ्गो तरबार लिएर गगनसिंहको घरमा पुगिन्। गगनसिंहको शव गोली प्रहारबाट रक्ताम्मे भएको थियो, डरका कारण कसैले छोएको थिएन। त्यस्तो देखेर उनले दाह्रा किट्दै लामालामा सास तान्दै भनिन्- "यदि गगनसिंहको हत्याको बदला लिन सकिनँ भने म लक्ष्मीदेवी नै होइन।" त्यसपछि गगनसिंहको लास आर्यघाट लिएर जाने आज्ञा महारानीले गर्दै मूल ढुकुटीबाट किरिया खर्च स्वरुप १ लाख रुपियाँ निकासा गर्ने आदेश दिइन्।<ref>{{cite book|title=नेपालको ऐतिहासिक रुपरेखा|author= [[बालचन्द्र शर्मा]]|page=३०७|date=२०२२|publisher=वाराणासी: कृष्णकुमारी देवी|isbn=|url=}}</ref>
वि.सं. १९०३ भदौ ३१ गते राति [[राज्यलक्ष्मी देवी|महारानी राज्यलक्ष्मी]]को प्रिय पात्र तथा मन्त्रीपरिषद्का सदस्य गगन सिंह खवासको रहस्यमय ढङ्गले गरिएको हत्यारा पत्ता लगाउन महारानीको आदेशले वि.सं. १९०३ भदौ ३२ गते शनिबार राति सबै भारदारहरूलाई कोतको परिसरमा जम्मा हुने आदेश अनुसार कोतमा भेला भए ।
=== '''कोतपर्व''' ===
[[कोत पर्व|कोतपर्व]] भइसकेपछि ढोकाटोलस्थित गगनसिंहको घरमा [[जङ्गबहादुर राणा]]का काहिँला भाइ [[कृष्णबहादुर राणा]] बस्न थालेका थिए । उनको सन्तान नरहेको हुनाले त्यही घर कृष्णबहादुरको मृत्यु पछि [[देव शमशेर जङ्गबहादुर राणा|देव शम्सेर]]ले पाए । <ref>[http://gorkhapatraonline.com/news/35598 चर्चामा मोतीरामको घर]
'''[http://gorkhapatraonline.com/news/35598 प्रकाश ए. राज]''' </ref>
नेपालको इतिहासमा चर्चित [[कोत पर्व|कोतपर्व]] उनकै हत्याका आधारमा घटेको मानिन्छ। उनका दुइ छोरा वजीर सिंह र बद्री सिंह भण्डारीले भण्डारखालमा षड्यन्त्र रच्दा उल्टा पर्न गई [[भण्डारखाल पर्व]] मच्चिएको थियो ।<ref>लेखक: श्रीकृष्ण श्रेष्ठ,पुस्तक:जंगबहादुर</ref><ref>https://books.google.com.np/books?id=MX22o4PJ3Q0C&pg=PA32&lpg=PA32&dq=birdhoj+basnyat&source=bl&ots=079mP7NvJ_&sig=lKp-KVqfCPsGnJNe6A8DNQOZIN8&hl=en&sa=X&ved=0ahUKEwiG3O2wgfTSAhUDO48KHS1uAAUQ6AEIGDAA#v=onepage&q=birdhoj%20basnyat&f=false</ref>
== रानी राज्यलक्ष्मीसँगको सम्बन्ध ==
रानी राज्यलक्ष्मी एक क्षमतावान र राजनितिमा, राजकाजमा रुची राख्ने रानी थिइन । दरवारमा उनले रिजाएर राख्ने केहि भारदार थिए जसको आडमा उनी दरवार चलाउथिन । ति मध्ये एक थिए गगन सिं । गगन सिं निकै राम्रा, आकर्षक र प्रभावशाली व्यक्ति थिए । रानी उनको व्यक्तित्वबाट समेत आकर्षित थिइन । राजा राजेन्द्र राजकाजमा रुचि नराख्ने,दरवारिया रखौटिहरूसँग मात्र समय विताउने हुँदा रानीको मनमा पनि राजा प्रति रुचि घटेको आकलन गर्न सकिन्छ । रानी र गगन सिं विच प्रेम थियो भन्ने समेत दरवारमा गाँइगुइ चलेको थियो । साथै गगन सिंको आफ्नै एक प्रमिका थिइन र ति प्रमिकासँग गगन सिंलाइ नजिक हुन नदिन गगन सिंलाइ अनेक बहानामा आफ्नै वरिपरि राख्थिन । गगन सिं भने ति प्रेमिकाको प्रेममा पागल झै भएका थिए । यो कुरा औपन्यासिक ढङ्गले डाइमन सम्शेरले आफ्नो उपन्यास बसन्तीमा लेखेका छन । रानीसँगको बढ्दो हेलमेल दरवारमा एककान दुइ कान हुदै फैलियो । यसै कारण राजा राजेन्द्र युवराज सुरेन्द्र वा जंगबहादुर मध्ये एकले वा आपसि मिलेमतोमा गगन सिंको हत्या हुन गएको समेत आकलन गर्न सकिन्छ ।
== चलचित्र ==
* चलचित्र वसन्तीमा गगन सिंहको भूमिका [[राजेश हमाल]]ले खेलेका छन् ।
==सन्दर्भ सामग्रीहरू==
{{reflist}}
==बाह्य कडीहरू==
{{stub}}
[[श्रेणी:नेपाली सेनाका प्रधान सेनापतिहरू]]
[[श्रेणी:पदमा रहँदा नै मृत्यु हुने व्यक्तिहरू]]
elzstqvt8ikr2ibqzxlk017tq7xgbam
मोड्युल:Location map
828
63060
1372320
1369102
2026-08-25T17:09:36Z
पर्वत सुवेदी
31224
1372320
Scribunto
text/plain
require('strict')
local p = {}
local getArgs = require('Module:Arguments').getArgs
local function round(n, decimals)
local pow = 10^(decimals or 0)
return math.floor(n * pow + 0.5) / pow
end
function p.getMapParams(map, frame)
if not map then
error('प्रयोग गरिने ठाउँको ढाँचा नक्सा (Location map)को नाम उल्लेख गर्नुपर्छ', 2)
end
local moduletitle = mw.title.new('Module:Location map/data/' .. map)
if not moduletitle then
error(string.format('%q ठाउँको ढाँचा नक्साका लागि मान्य नाम होइन', map), 2)
elseif moduletitle.exists then
local mapData = mw.loadData('Module:Location map/data/' .. map)
return function(name, params)
if name == nil then
return 'Module:Location map/data/' .. map
elseif mapData[name] == nil then
return ''
elseif params then
return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain()
else
return mapData[name]
end
end
else
error('निर्दिष्ट गरिएको ठाउँको नक्सा फेला पार्न सकिएन: "Module:Location map/data/' .. map .. '" अवस्थित छैन', 2)
end
end
function p.data(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local params = {}
for k,v in ipairs(args) do
if k > 2 then
params[k-2] = v
end
end
return map(args[2], #params ~= 0 and params)
end
local hemisphereMultipliers = {
longitude = { W = -1, w = -1, E = 1, e = 1 },
latitude = { S = -1, s = -1, N = 1, n = 1 }
}
local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction)
if decimal then
if degrees then
error(direction .. ' को लागि दशमलब र DMS (डिग्री/मिनेट/सेकेन्ड) दुवै दिन सकिँदैन', 2)
elseif minutes then
error(direction .. ' को मिनेट DMS डिग्रीसँग मात्र दिन सकिन्छ', 2)
elseif seconds then
error(direction .. ' को सेकेन्ड DMS डिग्रीसँग मात्र दिन सकिन्छ', 2)
elseif hemisphere then
error(direction .. ' को गोलार्ध DMS डिग्रीसँग मात्र दिन सकिन्छ', 2)
end
local retval = tonumber(decimal)
if retval then
return retval
end
error(direction .. ' का लागि दिइएको मान "' .. decimal .. '" अमान्य छ', 2)
elseif seconds and not minutes then
error(direction .. ' का लागि मिनेट बिना नै सेकेन्ड दिइयो', 2)
elseif not degrees then
if minutes then
error(direction .. ' का लागि डिग्री बिना नै मिनेट दिइयो', 2)
elseif hemisphere then
error(direction .. ' का लागि डिग्री बिना नै गोलार्ध दिइयो', 2)
end
return nil
end
decimal = tonumber(degrees)
if not decimal then
error(direction .. ' का लागि दिइएको डिग्री मान "' .. degrees .. '" अमान्य छ', 2)
elseif minutes and not tonumber(minutes) then
error(direction .. ' का लागि दिइएको मिनेट मान "' .. minutes .. '" अमान्य छ', 2)
elseif seconds and not tonumber(seconds) then
error(direction .. ' का लागि दिइएको सेकेन्ड मान "' .. seconds .. '" अमान्य छ', 2)
end
decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600
if hemisphere then
local multiplier = hemisphereMultipliers[direction][hemisphere]
if not multiplier then
error(direction .. ' का लागि दिइएको गोलार्ध "' .. hemisphere .. '" अमान्य छ', 2)
end
decimal = decimal * multiplier
end
return decimal
end
-- Finds a parameter in a transclusion of {{Coord}}.
local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign
local lat, long = mw.ustring.match(coord,'<span class="p%-latitude latitude">([^<]+)</span><span class="p%-longitude longitude">([^<]+)</span>')
if lat then
return tonumber(para == 'longitude' and long or lat)
end
local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NS] %-?[%.%d]+°[EW]') or '', '[ °]')
if para == 'longitude' then result = {result[3], result[4]} end
if not tonumber(result[1]) or not result[2] then
mw.log('विकृत निर्देशाङ्क मान')
mw.logObject(para, 'para')
mw.logObject(coord, 'coord')
return error('विकृत निर्देशाङ्क मान', 2)
end
return tonumber(result[1]) * hemisphereMultipliers[para][result[2]]
end
-- effectively make removeBlanks false for caption and maplink, and true for everything else
-- if useWikidata is present but blank, convert it to false instead of nil
-- p.top, p.bottom, and their callers need to use this
function p.valueFunc(key, value)
if value then
value = mw.text.trim(value)
end
if value ~= '' or key == 'caption' or key == 'maplink' then
return value
elseif key == 'useWikidata' then
return false
end
end
local function getContainerImage(args, map)
if args.AlternativeMap then
return args.AlternativeMap
elseif args.relief then
local digits = mw.ustring.match(args.relief,'^[1-9][0-9]?$') -- image1 to image99
if digits then
local imageDigits = map('image' .. digits)
if imageDigits ~= '' then return imageDigits end
end
local yesNo = require('Module:Yesno')
if yesNo(args.relief,true) then
local image1 = map('image1')
if image1 ~= '' then return image1 end
end
end
return map('image')
end
function p.top(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local width
local default_as_number = tonumber(mw.ustring.match(tostring(args.default_width),"%d*"))
if not args.width then
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
elseif mw.ustring.sub(args.width, -2) == 'px' then
width = mw.ustring.sub(args.width, 1, -3)
else
width = args.width
end
local width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
if width_as_number == 0 then
-- check to see if width is junk. If it is, then use default calculation
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
end
if args.max_width ~= "" and args.max_width ~= nil then
-- check to see if width bigger than max_width
local max_as_number = tonumber(mw.ustring.match(args.max_width,"%d*")) or 0;
if width_as_number>max_as_number and max_as_number>0 then
width = args.max_width;
end
end
local retval = frame:extensionTag{name = 'templatestyles', args = {src = 'Module:Location map/styles.css'}}
if args.float == 'center' then
retval = retval .. '<div class="center">'
end
if args.caption and args.caption ~= '' and args.border ~= 'infobox' then
retval = retval .. '<div class="locmap noresize thumb '
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'floatleft'
elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then
retval = retval .. 'tnone'
else
retval = retval .. 'floatright'
end
retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px'
if args.border == 'none' then
retval = retval .. ';border:none'
elseif args.border then
retval = retval .. ';border-color:' .. args.border
end
retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">')
else
retval = retval .. '<div class="locmap" style="width:' .. width .. 'px;'
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'float:left;clear:left'
elseif args.float == '"center"' or args.float == 'center' then
retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto'
elseif args.float == '"none"' or args.float == 'none' then
retval = retval .. 'float:none;clear:none'
else
retval = retval .. 'float:right;clear:right'
end
retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">'
end
local image = getContainerImage(args, map)
local currentTitle = mw.title.getCurrentTitle()
retval = string.format(
'%s[[File:%s|%spx|%s%s|class=notpageimage noviewer]]',
retval,
image,
width,
args.alt or ((args.label or currentTitle.text) .. ' को ' .. map('name') .. ' मा अवस्थिति'),
args.maplink and ('|link=' .. args.maplink) or ''
)
if args.caption and args.caption ~= '' then
if (currentTitle.namespace == 0) and mw.ustring.find(args.caption, '##') then
retval = retval .. '[[श्रेणी:क्यापसनमा दोहोरो ह्यास चिन्ह प्रयोग गरिएका ढाँचा नक्सा पृष्ठहरू]]'
end
end
if args.overlay_image then
return retval .. '<div style="position:absolute;top:0;left:0">[[File:' .. args.overlay_image .. '|' .. width .. 'px|class=notpageimage noviewer]]</div>'
else
return retval
end
end
function p.bottom(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local retval = '</div>'
local currentTitle = mw.title.getCurrentTitle()
if not args.caption or args.border == 'infobox' then
if args.border then
retval = retval .. '<div style="padding-top:0.2em">'
else
retval = retval .. '<div style="font-size:91%;padding-top:3px">'
end
retval = retval
.. (args.caption or (args.label or currentTitle.text) .. ' (' .. map('name') .. ')')
.. '</div>'
elseif args.caption ~= '' then
-- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image
retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '| ]]</div>' .. args.caption .. '</div>'
end
if args.switcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>'
elseif args.autoSwitcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">' .. map('name') .. 'को नक्सा देखाउनुहोस्</span>'
end
retval = retval .. '</div></div>'
if args.caption_undefined then
mw.log('हटाइएको क्याप्सन अमान्य प्यारामिटर प्रयोग भयो।')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
retval = retval .. '[[Category:हटाइएका प्यारामिटरहरू भएका स्थान नक्साहरू|caption_undefined]]'
end
end
if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then
mw.log('नक्सा परिभाषा ' .. map() .. ' मा हटाइएको प्यारामिटर प्रयोग भयो।')
if currentTitle.namespace == 0 then
local key = (map('skew') ~= '' and 'skew' or '') ..
(map('lat_skew') ~= '' and 'lat_skew' or '') ..
(map('crosses180') ~= '' and 'crosses180' or '') ..
(map('type') ~= '' and 'type' or '')
retval = retval .. '[[Category:हटाइएका प्यारामिटरहरू भएका स्थान नक्साहरू|' .. key .. ' ]]'
end
end
if string.find(map('name'), '|', 1, true) then
mw.log('नक्सा परिभाषाको नाममा पाइप (|) चिन्ह प्रयोग भयो: ' .. map())
if currentTitle.namespace == 0 then
retval = retval .. '[[श्रेणी:नाममा पाइप चिन्ह भएका स्थान नक्साहरू]]'
end
end
if args.float == 'center' then
retval = retval .. '</div>'
end
return retval
end
local function markOuterDiv(x, y, imageDiv, labelDiv, label_size)
return mw.html.create('div')
:addClass('od')
:addClass('notheme') -- T236137
:cssText('top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%;font-size:' .. label_size .. '%')
:node(imageDiv)
:node(labelDiv)
end
local function markImageDiv(mark, marksize, label, link, alt, title)
local builder = mw.html.create('div')
:addClass('id')
:cssText('left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px')
:attr('title', title)
if marksize ~= 0 then
builder:wikitext(string.format(
'[[File:%s|%dx%dpx|%s|link=%s%s|class=notpageimage noviewer]]',
mark,
marksize,
marksize,
label,
link,
alt and ('|alt=' .. alt) or ''
))
end
return builder
end
local function markLabelDiv(label, label_size, label_width, position, background, x, marksize)
if tonumber(label_size) == 0 then
return mw.html.create('div'):addClass('l0'):wikitext(label)
end
local builder = mw.html.create('div')
:cssText('width:' .. label_width .. 'em')
local distance = round(marksize / 2 + 1)
if position == 'top' then -- specified top
builder:addClass('pv'):cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'bottom' then -- specified bottom
builder:addClass('pv'):cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left
builder:addClass('pl'):cssText('right:' .. distance .. 'px')
else -- specified right or autodetected to right
builder:addClass('pr'):cssText('left:' .. distance .. 'px')
end
builder = builder:tag('div')
:wikitext(label)
if background then
builder:cssText('background-color:' .. background)
end
return builder:done()
end
local function getX(longitude, left, right)
local width = (right - left) % 360
if width == 0 then
width = 360
end
local distanceFromLeft = (longitude - left) % 360
-- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter
if distanceFromLeft - width / 2 >= 180 then
distanceFromLeft = distanceFromLeft - 360
end
return 100 * distanceFromLeft / width
end
local function getY(latitude, top, bottom)
return 100 * (top - latitude) / (top - bottom)
end
function p.mark(frame, args, map)
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map~'})
end
local mapnames = {}
if not map then
if args[1] then
map = {}
for mapname in mw.text.gsplit(args[1], '#', true) do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
mapnames[#mapnames + 1] = mapname
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
args[1] = 'World'
end
end
if type(map) == 'table' then
local outputs = {}
local oldargs = args[1]
for k,v in ipairs(map) do
args[1] = mapnames[k]
outputs[k] = tostring(p.mark(frame, args, v))
end
args[1] = oldargs
return table.concat(outputs, '#PlaceList#') .. '#PlaceList#'
end
local x, y, longitude, latitude
longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude')
latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'latitude')
if args.excludefrom then
-- If this mark is to be excluded from certain maps entirely (useful in the context of multiple maps)
for exclusionmap in mw.text.gsplit(args.excludefrom, '#', true) do
-- Check if this map is excluded. If so, return an empty string.
if args[1] == exclusionmap then
return ''
end
end
end
local builder = mw.html.create()
local currentTitle = mw.title.getCurrentTitle()
if args.coordinates then
-- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]]
-- if longitude or latitude then
-- error('Coordinates from [[Module:Coordinates]] and individual coordinates cannot both be provided')
-- end
longitude = coord2text('longitude', args.coordinates)
latitude = coord2text('latitude', args.coordinates)
elseif not longitude and not latitude and args.useWikidata then
-- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't.
local entity = mw.wikibase.getEntity()
if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then
local value = entity.claims.P625[1].mainsnak.datavalue.value
longitude, latitude = value.longitude, value.latitude
end
if args.link and (currentTitle.namespace == 0) then
builder:wikitext('[[Category:विकिडाटाबाट निर्देशाङ्क लिइएका लिङ्क गरिएका मार्करहरू भएका स्थान नक्साहरू]]')
end
end
if not longitude then
error('देशान्तर रेखा (longitude) को लागि कुनै मान दिइएको छैन')
elseif not latitude then
error('अक्षांश रेखा (latitude) को लागि कुनै मान दिइएको छैन')
end
if currentTitle.namespace > 0 then
if (not args.lon_deg) ~= (not args.lat_deg) then
builder:wikitext('[[Category:फरक देशान्तर र अक्षांश शुद्धता भएका स्थान नक्साहरू|Degrees]]')
elseif (not args.lon_min) ~= (not args.lat_min) then
builder:wikitext('[[Category:फरक देशान्तर र अक्षांश शुद्धता भएका स्थान नक्साहरू|Minutes]]')
elseif (not args.lon_sec) ~= (not args.lat_sec) then
builder:wikitext('[[Category:फरक देशान्तर र अक्षांश शुद्धता भएका स्थान नक्साहरू|Seconds]]')
elseif (not args.lon_dir) ~= (not args.lat_dir) then
builder:wikitext('[[Category:फरक देशान्तर र अक्षांश शुद्धता भएका स्थान नक्साहरू|Hemisphere]]')
elseif (not args.long) ~= (not args.lat) then
builder:wikitext('[[Category:फरक देशान्तर र अक्षांश शुद्धता भएका स्थान नक्साहरू|Decimal]]')
end
end
if ((tonumber(args.lat_deg) or 0) < 0) and ((tonumber(args.lat_min) or 0) ~= 0 or (tonumber(args.lat_sec) or 0) ~= 0 or (args.lat_dir and args.lat_dir ~='')) then
builder:wikitext('[[Category:ऋणात्मक डिग्री र मिनेट वा सेकेन्ड भएका स्थान नक्साहरू]]')
end
if ((tonumber(args.lon_deg) or 0) < 0) and ((tonumber(args.lon_min) or 0) ~= 0 or (tonumber(args.lon_sec) or 0) ~= 0 or (args.lon_dir and args.lon_dir ~= '')) then
builder:wikitext('[[Category:ऋणात्मक डिग्री र मिनेट वा सेकेन्ड भएका स्थान नक्साहरू]]')
end
if (((tonumber(args.lat_min) or 0) < 0) or ((tonumber(args.lat_sec) or 0) < 0)) then
builder:wikitext('[[Category:ऋणात्मक डिग्री र मिनेट वा सेकेन्ड भएका स्थान नक्साहरू]]')
end
if (((tonumber(args.lon_min) or 0) < 0) or ((tonumber(args.lon_sec) or 0) < 0)) then
builder:wikitext('[[Category:ऋणात्मक डिग्री र मिनेट वा सेकेन्ड भएका स्थान नक्साहरू]]')
end
if args.skew or args.lon_shift or args.markhigh then
mw.log('अवाह्वानमा हटाइएको प्यारामिटर प्रयोग गरियो।')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = (args.skew and 'skew' or '') ..
(args.lon_shift and 'lon_shift' or '') ..
(args.markhigh and 'markhigh' or '')
builder:wikitext('[[Category:हटाइएका प्यारामिटरहरू भएका स्थान नक्साहरू|' .. key ..' ]]')
end
end
if map('x') ~= '' then
x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude })))
else
x = tonumber(getX(longitude, map('left'), map('right')))
end
if map('y') ~= '' then
y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude })))
else
y = tonumber(getY(latitude, map('top'), map('bottom')))
end
if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then
mw.log('बाहिरी (outside) फ्ल्याग सेट नगरिकन चिन्ह नक्साको सिमाना बाहिर राखियो। x = ' .. x .. ', y = ' .. y)
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = currentTitle.prefixedText
builder:wikitext('[[श्रेणी:नक्सा बाहिर चिन्ह भएका र बाहिरी प्यारामिटर सेट नभएका स्थान नक्साहरू|' .. key .. ' ]]')
end
end
local mark = args.mark or map('mark')
if mark == '' then
mark = 'Red pog.svg'
end
local marksize = tonumber(args.marksize) or tonumber(map('marksize')) or 8
local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2])
local label_size = args.label_size or 91
local labelDiv
if args.label and args.position ~= 'none' then
labelDiv = markLabelDiv(args.label, label_size, args.label_width or 6, args.position, args.background, x, marksize)
end
return builder:node(markOuterDiv(x, y, imageDiv, labelDiv, label_size))
end
local function switcherSeparate(s)
if s == nil then return {} end
local retval = {}
for i in string.gmatch(s .. '#', '([^#]*)#') do
i = mw.text.trim(i)
retval[#retval + 1] = (i ~= '' and i)
end
return retval
end
function p.infobox_pushpin_map(frame)
--This function is designed to be invoked from an infobox template
--* Some parameters (generally starting with "pushpin_") are meant to be exposed as parameters
-- in the outer infobox, settable by editors
--* Others are meant to be "hidden" (e.g., only set inside the infobox template code)
-- First get the combined arguments from both parent and invocation frame
local raw_args = getArgs(frame,{parentFirst=true})
--If no map is supplied, return.
if not raw_args['pushpin_map'] then
return
end
-- Now get arguments from just the invocation frame
local frame_args = getArgs(frame,{frameOnly=true})
-- parsed_args will have the resulting merged parameters
local parsed_args = {}
-- Default to using wikidata coodinates if no other coordiantes supplied.
if raw_args.useWikidata == nil then
parsed_args.useWikidata = true
else
parsed_args.useWikidata = raw_args.useWikidata
end
-- Parse the arguments
parsed_args[1] = raw_args['pushpin_map']
parsed_args.float = frame_args.float or 'center'
parsed_args.border = frame_args.border or 'infobox'
parsed_args.default_width = frame_args.default_width
parsed_args.max_width = frame_args.max_width
parsed_args.coordinates = raw_args['coordinates']
parsed_args.caption = raw_args['pushpin_caption']
parsed_args.relief = raw_args['pushpin_relief']
parsed_args.label = raw_args['pushpin_label']
parsed_args.label_size = raw_args['pushpin_label_size']
parsed_args.position = raw_args['pushpin_label_position']
parsed_args.mark = raw_args['pushpin_mark']
parsed_args.marksize = raw_args['pushpin_mark_size']
parsed_args.alt = raw_args['pushpin_alt']
parsed_args.background = raw_args['pushpin_background']
parsed_args.width = raw_args['pushpin_map_size']
local map = {}
local caption_list = {}
for mapname in string.gmatch(parsed_args[1], '[^#]+') do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
end
if parsed_args['caption'] then
for caption in mw.text.gsplit(parsed_args['caption'], '##', true) do
caption_list[#caption_list + 1] = caption
end
end
if #map == 1 then
map = map[1]
if not parsed_args.caption then
parsed_args.caption = map('name') .. ' मा अवस्थिति'
end
end
if type(map) == 'table' then
mw.log('----')
mw.logObject(map)
if #caption_list > #map then
error(string.format('%d वटा क्याप्सनहरू दिइएका छन्, तर %d वटा मात्र नक्साहरू उपलब्ध छन्', #caption_list, #map))
elseif not parsed_args.caption then
-- Set a default caption for each of the multiple maps
for i=1, #map do
caption_list[#caption_list + 1] = map[i]('name') .. 'मा अवस्थिति'
end
end
local outputs = {}
parsed_args.autoSwitcherLabel = true
for k,v in ipairs(map) do
parsed_args.caption = caption_list[k]
outputs[k] = p.main(frame, parsed_args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return p.top(frame, parsed_args, map) .. tostring( p.mark(frame, parsed_args, map) ) .. p.bottom(frame, parsed_args, map)
end
end
function p.main(frame, args, map)
local caption_list = {}
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map', valueFunc = p.valueFunc})
end
if args.useWikidata == nil then
args.useWikidata = true
end
if not map then
if args[1] then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
end
if args['caption'] then
if args['caption'] == "" then
while #caption_list < #map do
caption_list[#caption_list + 1] = args['caption']
end
else
for caption in mw.text.gsplit(args['caption'], '##', true) do
caption_list[#caption_list + 1] = caption
end
end
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
end
end
if type(map) == 'table' then
local altmaps = switcherSeparate(args.AlternativeMap)
if #altmaps > #map then
error(string.format('%d वटा AlternativeMaps दिइएका छन्, तर %d वटा मात्र नक्साहरू उपलब्ध छन्', #altmaps, #map))
end
local overlays = switcherSeparate(args.overlay_image)
if #overlays > #map then
error(string.format('%d वटा overlay_images दिइएका छन्, तर %d वटा मात्र नक्साहरू उपलब्ध छन्', #overlays, #map))
end
if #caption_list > #map then
error(string.format('%d वटा क्याप्सनहरू दिइएका छन्, तर %d वटा मात्र नक्साहरू उपलब्ध छन्', #caption_list, #map))
end
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
args.AlternativeMap = altmaps[k]
args.overlay_image = overlays[k]
args.caption = caption_list[k]
outputs[k] = p.main(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map)
end
end
return p
tosnw8miyr8qou8uvi8mn74tvdx03fp
1372338
1372320
2026-08-26T03:13:49Z
पर्वत सुवेदी
31224
परिक्षण
1372338
Scribunto
text/plain
require('strict')
local p = {}
local _getArgs = require('Module:Arguments').getArgs
local erjog = require('मोड्युल:को')._fix
local function getArgsX(args, ...)
-- Return args after translation.
local noTranslate = {
[1] = true, -- do not translate name of map
AlternativeMap = true,
alt = true,
caption = true,
label = true,
link = true,
mark = true,
overlay_image = true,
}
args = args or _getArgs(...)
if not args._doneTranslate_ then
local clone = {} -- cleaner to not change caller's table
for k, v in pairs(args) do
if type(v) ~= 'string' or noTranslate[k] then
clone[k] = v
else
v = mw.ustring.gsub(v, '%d', {
['०'] = '0',
['१'] = '1',
['२'] = '2',
['३'] = '3',
['४'] = '4',
['५'] = '5',
['६'] = '6',
['७'] = '7',
['८'] = '8',
['९'] = '9',
})
clone[k] = v
:gsub(' *उत्तर', 'N')
:gsub(' *पूर्व' , 'E')
:gsub(' *दक्षिण', 'S')
:gsub(' *पश्चिम', 'W')
end
end
clone._doneTranslate_ = true
return clone
end
return args
end
local function round(n, decimals)
local pow = 10^(decimals or 0)
return math.floor(n * pow + 0.5) / pow
end
function p.getMapParams(map, frame)
if not map then
error('ব্যবহারের জন্য অবস্থান মানচিত্রের সংজ্ঞার নাম অবশ্যই সুনির্দিষ্ট করতে হবে', 2)
end
local moduletitle = mw.title.new('Module:Location map/data/' .. map)
if not moduletitle then
error('অবস্থান মানচিত্রের সংজ্ঞার জন্য "' .. map .. '" কোনো বৈধ নাম নয়', 2)
elseif moduletitle.exists then
local mapData = mw.loadData('Module:Location map/data/' .. map)
return function(name, params)
if name == nil then
return 'মডিউল:অবস্থান মানচিত্র/উপাত্ত/' .. map
elseif mapData[name] == nil then
return ''
elseif params then
return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain()
else
return mapData[name]
end
end
elseif mw.title.new('ढाँचा:Location map ' .. map).exists then
local cache = {}
if type(frame) ~= 'table' or type(frame.expandTemplate) ~= 'function' then
error('একটি উত্তরাধিকার অবস্থান মানচিত্র ব্যবহার করার সময় একটি ফ্রেম প্রদান করা আবশ্যক')
end
return function(name, params)
if params then
return frame:expandTemplate{title = 'Location map ' .. map, args = { name, unpack(params) }}
else
if name == nil then
return 'ढाँचा:Location map ' .. map
elseif cache[name] == nil then
cache[name] = frame:expandTemplate{title = 'Location map ' .. map, args = { name }}
end
return cache[name]
end
end
else
error('নির্দিষ্ট অবস্থান মানচিত্রের সংজ্ঞা খুঁজে পাওয়া যায়নি। "মডিউল:অবস্থান মানচিত্র/উপাত্ত/' .. map .. '" বা "টেমপ্লেট:অবস্থান মানচিত্র ' .. map .. '" দুটির একটিও বিদ্যমান নয়', 2)
end
end
function p.data(frame, args, map)
args = getArgsX(args, frame, {frameOnly = true})
if not map then
map = p.getMapParams(args[1], frame)
end
local params = {}
for k,v in ipairs(args) do
if k > 2 then
params[k-2] = v
end
end
return map(args[2], #params ~= 0 and params)
end
local hemisphereMultipliers = {
longitude = { W = -1, w = -1, E = 1, e = 1 },
latitude = { S = -1, s = -1, N = 1, n = 1 }
}
local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction)
if decimal then
if degrees then
error(direction .. '-এর জন্য দশমিক এবং DMS ডিগ্রী উভয় প্রদান করা যাবে না', 2)
elseif minutes then
error(direction .. '-এর জন্য শুধুমাত্র DMS ডিগ্রীসহ মিনিট প্রদান করা যেতে পারে', 2)
elseif seconds then
error(direction .. '-এর জন্য শুধুমাত্র DMS ডিগ্রীসহ সেকেন্ড প্রদান করা যেতে পারে', 2)
elseif hemisphere then
error(direction .. '-এর জন্য শুধুমাত্র DMS ডিগ্রীসহ গোলার্ধ প্রদান করা যেতে পারে', 2)
end
local retval = tonumber(decimal)
if retval then
return retval
end
error(direction .. '-এর জন্য প্রণীত "'.. decimal .. '" মানটি বৈধ নয়', 2)
elseif seconds and not minutes then
error('মিনিট প্রদান করা ছাড়াই ' .. direction .. '-এর জন্য সেকেন্ড প্রদান করা হয়েছে', 2)
elseif not degrees then
if minutes then
error('ডিগ্রি প্রদান করা ছাড়াই ' .. direction .. '-এর জন্য মিনিট প্রদান করা হয়েছে', 2)
elseif hemisphere then
error('ডিগ্রি প্রদান করা ছাড়াই ' .. direction .. '-এর জন্য গোলার্ধ প্রদান করা হয়েছে', 2)
end
return nil
end
decimal = tonumber(degrees)
if not decimal then
error(direction .. '-এর জন্য প্রণীত "'.. degrees .. '" ডিগ্রি মানটি বৈধ নয়', 2)
elseif minutes and not tonumber(minutes) then
error(direction .. '-এর জন্য প্রণীত "'.. minutes .. '" মিনিট মানটি বৈধ নয়', 2)
elseif seconds and not tonumber(seconds) then
error(direction .. '-এর জন্য প্রণীত "'.. seconds .. '"সেকেন্ড মানটি বৈধ নয়', 2)
end
decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600
if hemisphere then
local multiplier = hemisphereMultipliers[direction][hemisphere]
if not multiplier then
error(direction .. '-এর জন্য প্রণীত "'.. hemisphere .. '" গোলার্ধ মানটি বৈধ নয়', 2)
end
decimal = decimal * multiplier
end
return decimal
end
-- Finds a parameter in a transclusion of {{Coord}}.
local function coord2text(para, coord)
local value, direction, longitude, ew = coord:match('(%-?[.%d]+)°([NS]) (%-?[.%d]+)°([EW])')
if para == 'longitude' then value, direction = longitude, ew end
value = tonumber(value)
if value then
return value * hemisphereMultipliers[para][direction]
end
error('विकृत निर्देशाङ्क मान', 2)
end
-- effectively make removeBlanks false for caption and maplink, and true for everything else
-- if useWikidata is present but blank, convert it to false instead of nil
-- p.top, p.bottom, and their callers need to use this
function p.valueFunc(key, value)
if value then
value = mw.text.trim(value)
end
if value ~= '' or key == 'caption' or key == 'maplink' then
return value
elseif key == 'useWikidata' then
return false
end
end
local function getContainerImage(args, map)
if args.AlternativeMap then
return args.AlternativeMap
elseif args.relief and map('image1') ~= '' then
return map('image1')
else
return map('image')
end
end
function p.top(frame, args, map)
args = getArgsX(args, frame, {frameOnly = true, valueFunc = p.valueFunc})
if not map then
map = p.getMapParams(args[1], frame)
end
local width
if not args.width then
width = round((args.default_width or 240) * (tonumber(map('defaultscale')) or 1))
elseif mw.ustring.sub(args.width, -2) == 'px' then
width = mw.ustring.sub(args.width, 1, -3)
else
width = args.width
end
local retval = args.float == 'center' and '<div class="center">' or ''
if args.caption and args.caption ~= '' and args.border ~= 'infobox' then
retval = retval .. '<div class="noviewer thumb '
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'tleft'
elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then
retval = retval .. 'tnone'
else
retval = retval .. 'tright'
end
retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px'
if args.border == 'none' then
retval = retval .. ';border:none'
elseif args.border then
retval = retval .. ';border-color:' .. args.border
end
retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">')
else
retval = retval .. '<div style="width:' .. width .. 'px;'
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'float:left;clear:left'
elseif args.float == '"center"' or args.float == 'center' then
retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto'
elseif args.float == '"none"' or args.float == 'none' then
retval = retval .. 'float:none;clear:none'
else
retval = retval .. 'float:right;clear:right'
end
retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">'
end
local image = getContainerImage(args, map)
retval = string.format(
'%s[[File:%s|%spx|%s%s]]',
retval,
image,
width,
args.alt or ((args.label or mw.title.getCurrentTitle().text) .. ' ' .. map('name') .. '-এ অবস্থিত'),
args.maplink and ('|link=' .. args.maplink) or ''
)
if args.overlay_image then
return retval .. '<div style="position:absolute;top:0;left:0">[[File:' .. args.overlay_image .. '|' .. width .. 'px]]</div>'
else
return retval
end
end
function p.bottom(frame, args, map)
args = getArgsX(args, frame, {frameOnly = true, valueFunc = p.valueFunc})
if not map then
map = p.getMapParams(args[1], frame)
end
local retval = '</div>'
if not args.caption or args.border == 'infobox' then
if args.border then
retval = retval .. '<div>'
else
retval = retval .. '<div style="font-size:90%;padding-top:3px">'
end
retval = retval
.. (args.caption or (args.label or mw.title.getCurrentTitle().text) .. ' (' .. map('name') .. ')')
.. '</div>'
elseif args.caption ~= '' then
-- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image
retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '| ]]</div>' .. args.caption .. '</div>'
end
if args.switcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>'
elseif args.autoSwitcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">' .. erjog(map('name')) .. ' नक्सामा हेर्नुहोस्</span>'
end
retval = retval .. '</div></div>'
if args.caption_undefined then
mw.log('সরানো হয়েছে প্যারামিটার caption_undefined ব্যবহার করা হয়েছে।')
local parent = frame:getParent()
if parent then
mw.log('প্রধানটি হচ্ছে ' .. parent:getTitle())
end
mw.logObject(args, 'args')
retval = retval .. '[[বিষয়শ্রেণী:সম্ভাব্য ত্রুটিসহ অবস্থান মানচিত্র|পাতা সরানো প্যারামিটার ব্যবহার করছে]]'
end
if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then
mw.log(map().. ' মানচিত্রের নামের সংজ্ঞায় সরানো প্যারামিটার ব্যবহৃত হয়েছে')
retval = retval .. '[[বিষয়শ্রেণী:সম্ভাব্য ত্রুটিসহ অবস্থান মানচিত্র|পাতা সরানো প্যারামিটার ব্যবহার করছে]]'
end
if string.find(map('name'), '|', 1, true) then
mw.log(map().. ' মানচিত্রের নামের সংজ্ঞায় পাইপ ব্যবহৃত হয়েছে')
retval = retval .. '[[বিষয়শ্রেণী:সম্ভাব্য ত্রুটিসহ অবস্থান মানচিত্র|নামে পাইপ রয়েছে]]'
end
if args.float == 'center' then
retval = retval .. '</div>'
end
return retval
end
local function markOuterDiv(x, y, imageDiv, labelDiv)
return mw.html.create('div')
:cssText('position:absolute;top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%')
:node(imageDiv)
:node(labelDiv)
end
local function markImageDiv(mark, marksize, label, link, alt, title)
local builder = mw.html.create('div')
:cssText('position:absolute;left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px;line-height:0')
:attr('title', title)
if marksize ~= 0 then
builder:wikitext(string.format(
'[[File:%s|%dx%dpx|%s|link=%s%s]]',
mark,
marksize,
marksize,
label,
link,
alt and ('|alt=' .. alt) or ''
))
end
return builder
end
local function markLabelDiv(label, label_size, label_width, position, background, x, marksize)
if tonumber(label_size) == 0 then
return mw.html.create('div'):cssText('font-size:0%;position:absolute'):wikitext(label)
end
local builder = mw.html.create('div')
:cssText('font-size:' .. label_size .. '%;line-height:110%;position:absolute;width:' .. label_width .. 'em')
local distance = round(marksize / 2 + 1)
local spanCss
if position == 'top' then -- specified top
builder:cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em;text-align:center')
elseif position == 'bottom' then -- specified bottom
builder:cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em;text-align:center')
elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left
builder:cssText('top:-0.75em;right:' .. distance .. 'px;text-align:right')
spanCss = 'float:right'
else -- specified right or autodetected to right
builder:cssText('top:-0.75em;left:' .. distance .. 'px;text-align:left')
spanCss = 'float:left'
end
builder = builder:tag('span')
:cssText('padding:1px')
:cssText(spanCss)
:wikitext(label)
if background then
builder:cssText('background-color:' .. background)
end
return builder:done()
end
local function getX(longitude, left, right)
local width = (right - left) % 360
if width == 0 then
width = 360
end
local distanceFromLeft = (longitude - left) % 360
-- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter
if distanceFromLeft - width / 2 >= 180 then
distanceFromLeft = distanceFromLeft - 360
end
return 100 * distanceFromLeft / width
end
local function getY(latitude, top, bottom)
return 100 * (top - latitude) / (top - bottom)
end
function p.mark(frame, args, map)
args = getArgsX(args, frame, {wrappers = 'টেমপ্লেট:অবস্থান মানচিত্র~'})
if not map then
map = p.getMapParams(args[1], frame)
end
local x, y, longitude, latitude
longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude')
latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'latitude')
if args.coordinates then
-- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]]
-- if longitude or latitude then
-- error('Coordinates from [[Module:Coordinates]] and individual coordinates cannot both be provided')
-- end
longitude = coord2text('longitude', args.coordinates)
latitude = coord2text('latitude', args.coordinates)
elseif not longitude and not latitude and args.useWikidata then
-- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't.
local entity = mw.wikibase.getEntity()
if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then
local value = entity.claims.P625[1].mainsnak.datavalue.value
longitude, latitude = value.longitude, value.latitude
end
end
if not longitude then
error('দ্রাঘিমাংশের জন্য কোন মান প্রদান করা হয়নি')
elseif not latitude then
error('অক্ষাংশের জন্য কোন মান প্রদান করা হয়নি')
end
local builder = mw.html.create()
if (not args.lon_deg) ~= (not args.lat_deg) then
builder:wikitext('[[বিষয়শ্রেণী:আলাদা দ্রাঘিমাংশ ও অক্ষাংশ স্পষ্টতাসহ অবস্থান মানচিত্র|ডিগ্রি]]')
elseif (not args.lon_min) ~= (not args.lat_min) then
builder:wikitext('[[বিষয়শ্রেণী:আলাদা দ্রাঘিমাংশ ও অক্ষাংশ স্পষ্টতাসহ অবস্থান মানচিত্র|মিনিট]]')
elseif (not args.lon_sec) ~= (not args.lat_sec) then
builder:wikitext('[[বিষয়শ্রেণী:আলাদা দ্রাঘিমাংশ ও অক্ষাংশ স্পষ্টতাসহ অবস্থান মানচিত্র|সেকেন্ড]]')
elseif (not args.lon_dir) ~= (not args.lat_dir) then
builder:wikitext('[[বিষয়শ্রেণী:আলাদা দ্রাঘিমাংশ ও অক্ষাংশ স্পষ্টতাসহ অবস্থান মানচিত্র|গোলার্ধ]]')
elseif (not args.long) ~= (not args.lat) then
builder:wikitext('[[বিষয়শ্রেণী:আলাদা দ্রাঘিমাংশ ও অক্ষাংশ স্পষ্টতাসহ অবস্থান মানচিত্র|দশমিক]]')
end
if args.skew or args.lon_shift or args.markhigh then
mw.log('নামোচ্চারণে সরানো প্যারামিটার ব্যবহার করা হয়েছে।')
local parent = frame:getParent()
if parent then
mw.log('প্রধানটি ' .. parent:getTitle())
end
mw.logObject(args, 'args')
builder:wikitext('[[বিষয়শ্রেণী:সম্ভাব্য ত্রুটিসহ অবস্থান মানচিত্র|পাতা সরানো প্যারামিটার ব্যবহার করছে]]')
end
if map('x') ~= '' then
x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude })))
else
x = tonumber(getX(longitude, map('left'), map('right')))
end
if map('y') ~= '' then
y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude })))
else
y = tonumber(getY(latitude, map('top'), map('bottom')))
end
if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then
mw.log('বাইরে পতাকা সেট ছাড়াই মার্ক মানচিত্রের সীমানা বাইরে স্থাপিত হয়েছে। x = ' .. x .. ', y = ' .. y)
local parent = frame:getParent()
if parent then
mw.log('প্রধানটি হচ্ছে ' .. parent:getTitle())
end
mw.logObject(args, 'args')
builder:wikitext('[[বিষয়শ্রেণী:সম্ভাব্য ত্রুটিসহ অবস্থান মানচিত্র|মানচিত্রের বাইরে চিহ্নসহ বাইরের পতাকা নির্ধারন করা হয়নি]]')
end
local mark = args.mark or map('mark')
if mark == '' then
mark = 'Red pog.svg'
end
local marksize = tonumber(args.marksize) or tonumber(map('marksize')) or 8
local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2])
local labelDiv
if args.label and args.position ~= 'none' then
labelDiv = markLabelDiv(args.label, args.label_size or 90, args.label_width or 6, args.position, args.background, x, marksize)
end
return builder:node(markOuterDiv(x, y, imageDiv, labelDiv))
end
local function switcherSeparate(s)
if s == nil then return {} end
local retval = {}
for i in string.gmatch(s .. '#', '([^#]*)#') do
i = mw.text.trim(i)
retval[#retval + 1] = (i ~= '' and i)
end
return retval
end
function p.main(frame, args, map)
args = getArgsX(args, frame, {wrappers = 'ढाँचा:Location map', valueFunc = p.valueFunc})
if args.useWikidata == nil then
args.useWikidata = true
end
if not map then
if args[1] then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = p.getMapParams(mapname, frame)
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('पृथ्वी', frame)
end
end
if type(map) == 'table' then
local altmaps = switcherSeparate(args.AlternativeMap)
if #altmaps > #map then
error(string.format('%d AlternativeMaps প্রদান করা হয়েছে, কিন্তু শুধুমাত্র %d মানচিত্রগুলি প্রদান করা হয়েছে', #altmaps, #map))
end
local overlays = switcherSeparate(args.overlay_image)
if #overlays > #map then
error(string.format('%d overlay_images প্রদান করা হয়েছে, কিন্তু শুধুমাত্র %d মানচিত্রগুলি প্রদান করা হয়েছে', #overlays, #map))
end
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
args.AlternativeMap = altmaps[k]
args.overlay_image = overlays[k]
outputs[k] = p.main(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map)
end
end
return p
2vtdt0zffozl992479lsjgr6hgwuoyi
1372346
1372338
2026-08-26T03:36:07Z
पर्वत सुवेदी
31224
1372346
Scribunto
text/plain
require('strict')
local p = {}
local _getArgs = require('Module:Arguments').getArgs
local erjog = require('मोड्युल:को')._fix
local function getArgsX(args, ...)
-- Return args after translation.
local noTranslate = {
[1] = true, -- do not translate name of map
AlternativeMap = true,
alt = true,
caption = true,
label = true,
link = true,
mark = true,
overlay_image = true,
}
args = args or _getArgs(...)
if not args._doneTranslate_ then
local clone = {} -- cleaner to not change caller's table
for k, v in pairs(args) do
if type(v) ~= 'string' or noTranslate[k] then
clone[k] = v
else
v = mw.ustring.gsub(v, '%d', {
['०'] = '0',
['१'] = '1',
['२'] = '2',
['३'] = '3',
['४'] = '4',
['५'] = '5',
['६'] = '6',
['७'] = '7',
['८'] = '8',
['९'] = '9',
})
clone[k] = v
:gsub(' *उत्तर', 'N')
:gsub(' *पूर्व' , 'E')
:gsub(' *दक्षिण', 'S')
:gsub(' *पश्चिम', 'W')
end
end
clone._doneTranslate_ = true
return clone
end
return args
end
local function round(n, decimals)
local pow = 10^(decimals or 0)
return math.floor(n * pow + 0.5) / pow
end
function p.getMapParams(map, frame)
if not map then
error('ব্যবহারের জন্য অবস্থান মানচিত্রের সংজ্ঞার নাম অবশ্যই সুনির্দিষ্ট করতে হবে', 2)
end
local moduletitle = mw.title.new('Module:Location map/data/' .. map)
if not moduletitle then
error('অবস্থান মানচিত্রের সংজ্ঞার জন্য "' .. map .. '" কোনো বৈধ নাম নয়', 2)
elseif moduletitle.exists then
local mapData = mw.loadData('Module:Location map/data/' .. map)
return function(name, params)
if name == nil then
return 'मोड्युल:location map/data/' .. map
elseif mapData[name] == nil then
return ''
elseif params then
return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain()
else
return mapData[name]
end
end
elseif mw.title.new('ढाँचा:Location map ' .. map).exists then
local cache = {}
if type(frame) ~= 'table' or type(frame.expandTemplate) ~= 'function' then
error('একটি উত্তরাধিকার অবস্থান মানচিত্র ব্যবহার করার সময় একটি ফ্রেম প্রদান করা আবশ্যক')
end
return function(name, params)
if params then
return frame:expandTemplate{title = 'Location map ' .. map, args = { name, unpack(params) }}
else
if name == nil then
return 'ढाँचा:Location map ' .. map
elseif cache[name] == nil then
cache[name] = frame:expandTemplate{title = 'Location map ' .. map, args = { name }}
end
return cache[name]
end
end
else
error('নির্দিষ্ট অবস্থান মানচিত্রের সংজ্ঞা খুঁজে পাওয়া যায়নি। "मोड्युल:location map/data/' .. map .. '" বা "টেমপ্লেট:অবস্থান মানচিত্র ' .. map .. '" দুটির একটিও বিদ্যমান নয়', 2)
end
end
function p.data(frame, args, map)
args = getArgsX(args, frame, {frameOnly = true})
if not map then
map = p.getMapParams(args[1], frame)
end
local params = {}
for k,v in ipairs(args) do
if k > 2 then
params[k-2] = v
end
end
return map(args[2], #params ~= 0 and params)
end
local hemisphereMultipliers = {
longitude = { W = -1, w = -1, E = 1, e = 1 },
latitude = { S = -1, s = -1, N = 1, n = 1 }
}
local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction)
if decimal then
if degrees then
error(direction .. '-এর জন্য দশমিক এবং DMS ডিগ্রী উভয় প্রদান করা যাবে না', 2)
elseif minutes then
error(direction .. '-এর জন্য শুধুমাত্র DMS ডিগ্রীসহ মিনিট প্রদান করা যেতে পারে', 2)
elseif seconds then
error(direction .. '-এর জন্য শুধুমাত্র DMS ডিগ্রীসহ সেকেন্ড প্রদান করা যেতে পারে', 2)
elseif hemisphere then
error(direction .. '-এর জন্য শুধুমাত্র DMS ডিগ্রীসহ গোলার্ধ প্রদান করা যেতে পারে', 2)
end
local retval = tonumber(decimal)
if retval then
return retval
end
error(direction .. '-এর জন্য প্রণীত "'.. decimal .. '" মানটি বৈধ নয়', 2)
elseif seconds and not minutes then
error('মিনিট প্রদান করা ছাড়াই ' .. direction .. '-এর জন্য সেকেন্ড প্রদান করা হয়েছে', 2)
elseif not degrees then
if minutes then
error('ডিগ্রি প্রদান করা ছাড়াই ' .. direction .. '-এর জন্য মিনিট প্রদান করা হয়েছে', 2)
elseif hemisphere then
error('ডিগ্রি প্রদান করা ছাড়াই ' .. direction .. '-এর জন্য গোলার্ধ প্রদান করা হয়েছে', 2)
end
return nil
end
decimal = tonumber(degrees)
if not decimal then
error(direction .. '-এর জন্য প্রণীত "'.. degrees .. '" ডিগ্রি মানটি বৈধ নয়', 2)
elseif minutes and not tonumber(minutes) then
error(direction .. '-এর জন্য প্রণীত "'.. minutes .. '" মিনিট মানটি বৈধ নয়', 2)
elseif seconds and not tonumber(seconds) then
error(direction .. '-এর জন্য প্রণীত "'.. seconds .. '"সেকেন্ড মানটি বৈধ নয়', 2)
end
decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600
if hemisphere then
local multiplier = hemisphereMultipliers[direction][hemisphere]
if not multiplier then
error(direction .. '-এর জন্য প্রণীত "'.. hemisphere .. '" গোলার্ধ মানটি বৈধ নয়', 2)
end
decimal = decimal * multiplier
end
return decimal
end
-- Finds a parameter in a transclusion of {{Coord}}.
local function coord2text(para, coord)
local value, direction, longitude, ew = coord:match('(%-?[.%d]+)°([NS]) (%-?[.%d]+)°([EW])')
if para == 'longitude' then value, direction = longitude, ew end
value = tonumber(value)
if value then
return value * hemisphereMultipliers[para][direction]
end
error('विकृत निर्देशाङ्क मान', 2)
end
-- effectively make removeBlanks false for caption and maplink, and true for everything else
-- if useWikidata is present but blank, convert it to false instead of nil
-- p.top, p.bottom, and their callers need to use this
function p.valueFunc(key, value)
if value then
value = mw.text.trim(value)
end
if value ~= '' or key == 'caption' or key == 'maplink' then
return value
elseif key == 'useWikidata' then
return false
end
end
local function getContainerImage(args, map)
if args.AlternativeMap then
return args.AlternativeMap
elseif args.relief and map('image1') ~= '' then
return map('image1')
else
return map('image')
end
end
function p.top(frame, args, map)
args = getArgsX(args, frame, {frameOnly = true, valueFunc = p.valueFunc})
if not map then
map = p.getMapParams(args[1], frame)
end
local width
if not args.width then
width = round((args.default_width or 240) * (tonumber(map('defaultscale')) or 1))
elseif mw.ustring.sub(args.width, -2) == 'px' then
width = mw.ustring.sub(args.width, 1, -3)
else
width = args.width
end
local retval = args.float == 'center' and '<div class="center">' or ''
if args.caption and args.caption ~= '' and args.border ~= 'infobox' then
retval = retval .. '<div class="noviewer thumb '
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'tleft'
elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then
retval = retval .. 'tnone'
else
retval = retval .. 'tright'
end
retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px'
if args.border == 'none' then
retval = retval .. ';border:none'
elseif args.border then
retval = retval .. ';border-color:' .. args.border
end
retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">')
else
retval = retval .. '<div style="width:' .. width .. 'px;'
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'float:left;clear:left'
elseif args.float == '"center"' or args.float == 'center' then
retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto'
elseif args.float == '"none"' or args.float == 'none' then
retval = retval .. 'float:none;clear:none'
else
retval = retval .. 'float:right;clear:right'
end
retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">'
end
local image = getContainerImage(args, map)
retval = string.format(
'%s[[File:%s|%spx|%s%s]]',
retval,
image,
width,
args.alt or ((args.label or mw.title.getCurrentTitle().text) .. ' ' .. map('name') .. '-এ অবস্থিত'),
args.maplink and ('|link=' .. args.maplink) or ''
)
if args.overlay_image then
return retval .. '<div style="position:absolute;top:0;left:0">[[File:' .. args.overlay_image .. '|' .. width .. 'px]]</div>'
else
return retval
end
end
function p.bottom(frame, args, map)
args = getArgsX(args, frame, {frameOnly = true, valueFunc = p.valueFunc})
if not map then
map = p.getMapParams(args[1], frame)
end
local retval = '</div>'
if not args.caption or args.border == 'infobox' then
if args.border then
retval = retval .. '<div>'
else
retval = retval .. '<div style="font-size:90%;padding-top:3px">'
end
retval = retval
.. (args.caption or (args.label or mw.title.getCurrentTitle().text) .. ' (' .. map('name') .. ')')
.. '</div>'
elseif args.caption ~= '' then
-- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image
retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '| ]]</div>' .. args.caption .. '</div>'
end
if args.switcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>'
elseif args.autoSwitcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">' .. erjog(map('name')) .. ' नक्सामा हेर्नुहोस्</span>'
end
retval = retval .. '</div></div>'
if args.caption_undefined then
mw.log('সরানো হয়েছে প্যারামিটার caption_undefined ব্যবহার করা হয়েছে।')
local parent = frame:getParent()
if parent then
mw.log('প্রধানটি হচ্ছে ' .. parent:getTitle())
end
mw.logObject(args, 'args')
retval = retval .. '[[বিষয়শ্রেণী:সম্ভাব্য ত্রুটিসহ অবস্থান মানচিত্র|পাতা সরানো প্যারামিটার ব্যবহার করছে]]'
end
if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then
mw.log(map().. ' মানচিত্রের নামের সংজ্ঞায় সরানো প্যারামিটার ব্যবহৃত হয়েছে')
retval = retval .. '[[বিষয়শ্রেণী:সম্ভাব্য ত্রুটিসহ অবস্থান মানচিত্র|পাতা সরানো প্যারামিটার ব্যবহার করছে]]'
end
if string.find(map('name'), '|', 1, true) then
mw.log(map().. ' মানচিত্রের নামের সংজ্ঞায় পাইপ ব্যবহৃত হয়েছে')
retval = retval .. '[[বিষয়শ্রেণী:সম্ভাব্য ত্রুটিসহ অবস্থান মানচিত্র|নামে পাইপ রয়েছে]]'
end
if args.float == 'center' then
retval = retval .. '</div>'
end
return retval
end
local function markOuterDiv(x, y, imageDiv, labelDiv)
return mw.html.create('div')
:cssText('position:absolute;top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%')
:node(imageDiv)
:node(labelDiv)
end
local function markImageDiv(mark, marksize, label, link, alt, title)
local builder = mw.html.create('div')
:cssText('position:absolute;left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px;line-height:0')
:attr('title', title)
if marksize ~= 0 then
builder:wikitext(string.format(
'[[File:%s|%dx%dpx|%s|link=%s%s]]',
mark,
marksize,
marksize,
label,
link,
alt and ('|alt=' .. alt) or ''
))
end
return builder
end
local function markLabelDiv(label, label_size, label_width, position, background, x, marksize)
if tonumber(label_size) == 0 then
return mw.html.create('div'):cssText('font-size:0%;position:absolute'):wikitext(label)
end
local builder = mw.html.create('div')
:cssText('font-size:' .. label_size .. '%;line-height:110%;position:absolute;width:' .. label_width .. 'em')
local distance = round(marksize / 2 + 1)
local spanCss
if position == 'top' then -- specified top
builder:cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em;text-align:center')
elseif position == 'bottom' then -- specified bottom
builder:cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em;text-align:center')
elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left
builder:cssText('top:-0.75em;right:' .. distance .. 'px;text-align:right')
spanCss = 'float:right'
else -- specified right or autodetected to right
builder:cssText('top:-0.75em;left:' .. distance .. 'px;text-align:left')
spanCss = 'float:left'
end
builder = builder:tag('span')
:cssText('padding:1px')
:cssText(spanCss)
:wikitext(label)
if background then
builder:cssText('background-color:' .. background)
end
return builder:done()
end
local function getX(longitude, left, right)
local width = (right - left) % 360
if width == 0 then
width = 360
end
local distanceFromLeft = (longitude - left) % 360
-- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter
if distanceFromLeft - width / 2 >= 180 then
distanceFromLeft = distanceFromLeft - 360
end
return 100 * distanceFromLeft / width
end
local function getY(latitude, top, bottom)
return 100 * (top - latitude) / (top - bottom)
end
function p.mark(frame, args, map)
args = getArgsX(args, frame, {wrappers = 'টেমপ্লেট:অবস্থান মানচিত্র~'})
if not map then
map = p.getMapParams(args[1], frame)
end
local x, y, longitude, latitude
longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude')
latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'latitude')
if args.coordinates then
-- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]]
-- if longitude or latitude then
-- error('Coordinates from [[Module:Coordinates]] and individual coordinates cannot both be provided')
-- end
longitude = coord2text('longitude', args.coordinates)
latitude = coord2text('latitude', args.coordinates)
elseif not longitude and not latitude and args.useWikidata then
-- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't.
local entity = mw.wikibase.getEntity()
if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then
local value = entity.claims.P625[1].mainsnak.datavalue.value
longitude, latitude = value.longitude, value.latitude
end
end
if not longitude then
error('দ্রাঘিমাংশের জন্য কোন মান প্রদান করা হয়নি')
elseif not latitude then
error('অক্ষাংশের জন্য কোন মান প্রদান করা হয়নি')
end
local builder = mw.html.create()
if (not args.lon_deg) ~= (not args.lat_deg) then
builder:wikitext('[[বিষয়শ্রেণী:আলাদা দ্রাঘিমাংশ ও অক্ষাংশ স্পষ্টতাসহ অবস্থান মানচিত্র|ডিগ্রি]]')
elseif (not args.lon_min) ~= (not args.lat_min) then
builder:wikitext('[[বিষয়শ্রেণী:আলাদা দ্রাঘিমাংশ ও অক্ষাংশ স্পষ্টতাসহ অবস্থান মানচিত্র|মিনিট]]')
elseif (not args.lon_sec) ~= (not args.lat_sec) then
builder:wikitext('[[বিষয়শ্রেণী:আলাদা দ্রাঘিমাংশ ও অক্ষাংশ স্পষ্টতাসহ অবস্থান মানচিত্র|সেকেন্ড]]')
elseif (not args.lon_dir) ~= (not args.lat_dir) then
builder:wikitext('[[বিষয়শ্রেণী:আলাদা দ্রাঘিমাংশ ও অক্ষাংশ স্পষ্টতাসহ অবস্থান মানচিত্র|গোলার্ধ]]')
elseif (not args.long) ~= (not args.lat) then
builder:wikitext('[[বিষয়শ্রেণী:আলাদা দ্রাঘিমাংশ ও অক্ষাংশ স্পষ্টতাসহ অবস্থান মানচিত্র|দশমিক]]')
end
if args.skew or args.lon_shift or args.markhigh then
mw.log('নামোচ্চারণে সরানো প্যারামিটার ব্যবহার করা হয়েছে।')
local parent = frame:getParent()
if parent then
mw.log('প্রধানটি ' .. parent:getTitle())
end
mw.logObject(args, 'args')
builder:wikitext('[[বিষয়শ্রেণী:সম্ভাব্য ত্রুটিসহ অবস্থান মানচিত্র|পাতা সরানো প্যারামিটার ব্যবহার করছে]]')
end
if map('x') ~= '' then
x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude })))
else
x = tonumber(getX(longitude, map('left'), map('right')))
end
if map('y') ~= '' then
y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude })))
else
y = tonumber(getY(latitude, map('top'), map('bottom')))
end
if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then
mw.log('বাইরে পতাকা সেট ছাড়াই মার্ক মানচিত্রের সীমানা বাইরে স্থাপিত হয়েছে। x = ' .. x .. ', y = ' .. y)
local parent = frame:getParent()
if parent then
mw.log('প্রধানটি হচ্ছে ' .. parent:getTitle())
end
mw.logObject(args, 'args')
builder:wikitext('[[বিষয়শ্রেণী:সম্ভাব্য ত্রুটিসহ অবস্থান মানচিত্র|মানচিত্রের বাইরে চিহ্নসহ বাইরের পতাকা নির্ধারন করা হয়নি]]')
end
local mark = args.mark or map('mark')
if mark == '' then
mark = 'Red pog.svg'
end
local marksize = tonumber(args.marksize) or tonumber(map('marksize')) or 8
local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2])
local labelDiv
if args.label and args.position ~= 'none' then
labelDiv = markLabelDiv(args.label, args.label_size or 90, args.label_width or 6, args.position, args.background, x, marksize)
end
return builder:node(markOuterDiv(x, y, imageDiv, labelDiv))
end
local function switcherSeparate(s)
if s == nil then return {} end
local retval = {}
for i in string.gmatch(s .. '#', '([^#]*)#') do
i = mw.text.trim(i)
retval[#retval + 1] = (i ~= '' and i)
end
return retval
end
function p.main(frame, args, map)
args = getArgsX(args, frame, {wrappers = 'ढाँचा:Location map', valueFunc = p.valueFunc})
if args.useWikidata == nil then
args.useWikidata = true
end
if not map then
if args[1] then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = p.getMapParams(mapname, frame)
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('पृथ्वी', frame)
end
end
if type(map) == 'table' then
local altmaps = switcherSeparate(args.AlternativeMap)
if #altmaps > #map then
error(string.format('%d AlternativeMaps প্রদান করা হয়েছে, কিন্তু শুধুমাত্র %d মানচিত্রগুলি প্রদান করা হয়েছে', #altmaps, #map))
end
local overlays = switcherSeparate(args.overlay_image)
if #overlays > #map then
error(string.format('%d overlay_images প্রদান করা হয়েছে, কিন্তু শুধুমাত্র %d মানচিত্রগুলি প্রদান করা হয়েছে', #overlays, #map))
end
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
args.AlternativeMap = altmaps[k]
args.overlay_image = overlays[k]
outputs[k] = p.main(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map)
end
end
return p
e0l8tlz6is8k6lwvs5oypsbo8bzmnxn
1372360
1372346
2026-08-26T07:10:21Z
पर्वत सुवेदी
31224
1372360
Scribunto
text/plain
require('strict')
local p = {}
local getArgs = require('Module:Arguments').getArgs
local function round(n, decimals)
local pow = 10^(decimals or 0)
return math.floor(n * pow + 0.5) / pow
end
function p.getMapParams(map, frame)
if not map then
error('The name of the location map definition to use must be specified', 2)
end
local moduletitle = mw.title.new('Module:Location map/data/' .. map)
if not moduletitle then
error(string.format('%q is not a valid name for a location map definition', map), 2)
elseif moduletitle.exists then
local mapData = mw.loadData('Module:Location map/data/' .. map)
return function(name, params)
if name == nil then
return 'Module:Location map/data/' .. map
elseif mapData[name] == nil then
return ''
elseif params then
return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain()
else
return mapData[name]
end
end
else
error('Unable to find the specified location map definition: "Module:Location map/data/' .. map .. '" does not exist', 2)
end
end
function p.data(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local params = {}
for k,v in ipairs(args) do
if k > 2 then
params[k-2] = v
end
end
return map(args[2], #params ~= 0 and params)
end
local hemisphereMultipliers = {
longitude = { W = -1, w = -1, E = 1, e = 1 },
latitude = { S = -1, s = -1, N = 1, n = 1 }
}
local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction)
if decimal then
if degrees then
error('Decimal and DMS degrees cannot both be provided for ' .. direction, 2)
elseif minutes then
error('Minutes can only be provided with DMS degrees for ' .. direction, 2)
elseif seconds then
error('Seconds can only be provided with DMS degrees for ' .. direction, 2)
elseif hemisphere then
error('A hemisphere can only be provided with DMS degrees for ' .. direction, 2)
end
local retval = tonumber(decimal)
if retval then
return retval
end
error('The value "' .. decimal .. '" provided for ' .. direction .. ' is not valid', 2)
elseif seconds and not minutes then
error('Seconds were provided for ' .. direction .. ' without minutes also being provided', 2)
elseif not degrees then
if minutes then
error('Minutes were provided for ' .. direction .. ' without degrees also being provided', 2)
elseif hemisphere then
error('A hemisphere was provided for ' .. direction .. ' without degrees also being provided', 2)
end
return nil
end
decimal = tonumber(degrees)
if not decimal then
error('The degree value "' .. degrees .. '" provided for ' .. direction .. ' is not valid', 2)
elseif minutes and not tonumber(minutes) then
error('The minute value "' .. minutes .. '" provided for ' .. direction .. ' is not valid', 2)
elseif seconds and not tonumber(seconds) then
error('The second value "' .. seconds .. '" provided for ' .. direction .. ' is not valid', 2)
end
decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600
if hemisphere then
local multiplier = hemisphereMultipliers[direction][hemisphere]
if not multiplier then
error('The hemisphere "' .. hemisphere .. '" provided for ' .. direction .. ' is not valid', 2)
end
decimal = decimal * multiplier
end
return decimal
end
-- Finds a parameter in a transclusion of {{Coord}}.
local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign
local lat, long = mw.ustring.match(coord,'<span class="p%-latitude latitude">([^<]+)</span><span class="p%-longitude longitude">([^<]+)</span>')
if lat then
return tonumber(para == 'longitude' and long or lat)
end
local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NS] %-?[%.%d]+°[EW]') or '', '[ °]')
if para == 'longitude' then result = {result[3], result[4]} end
if not tonumber(result[1]) or not result[2] then
mw.log('Malformed coordinates value')
mw.logObject(para, 'para')
mw.logObject(coord, 'coord')
return error('Malformed coordinates value', 2)
end
return tonumber(result[1]) * hemisphereMultipliers[para][result[2]]
end
-- effectively make removeBlanks false for caption and maplink, and true for everything else
-- if useWikidata is present but blank, convert it to false instead of nil
-- p.top, p.bottom, and their callers need to use this
function p.valueFunc(key, value)
if value then
value = mw.text.trim(value)
end
if value ~= '' or key == 'caption' or key == 'maplink' then
return value
elseif key == 'useWikidata' then
return false
end
end
local function getContainerImage(args, map)
if args.AlternativeMap then
return args.AlternativeMap
elseif args.relief then
local digits = mw.ustring.match(args.relief,'^[1-9][0-9]?$') -- image1 to image99
if digits then
local imageDigits = map('image' .. digits)
if imageDigits ~= '' then return imageDigits end
end
local yesNo = require('Module:Yesno')
if yesNo(args.relief,true) then
local image1 = map('image1')
if image1 ~= '' then return image1 end
end
end
return map('image')
end
function p.top(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local width
local default_as_number = tonumber(mw.ustring.match(tostring(args.default_width),"%d*"))
if not args.width then
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
elseif mw.ustring.sub(args.width, -2) == 'px' then
width = mw.ustring.sub(args.width, 1, -3)
else
width = args.width
end
local width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
if width_as_number == 0 then
-- check to see if width is junk. If it is, then use default calculation
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
end
if args.max_width ~= "" and args.max_width ~= nil then
-- check to see if width bigger than max_width
local max_as_number = tonumber(mw.ustring.match(args.max_width,"%d*")) or 0;
if width_as_number>max_as_number and max_as_number>0 then
width = args.max_width;
end
end
local retval = frame:extensionTag{name = 'templatestyles', args = {src = 'Module:Location map/styles.css'}}
if args.float == 'center' then
retval = retval .. '<div class="center">'
end
if args.caption and args.caption ~= '' and args.border ~= 'infobox' then
retval = retval .. '<div class="locmap noresize thumb '
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'floatleft'
elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then
retval = retval .. 'tnone'
else
retval = retval .. 'floatright'
end
retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px'
if args.border == 'none' then
retval = retval .. ';border:none'
elseif args.border then
retval = retval .. ';border-color:' .. args.border
end
retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">')
else
retval = retval .. '<div class="locmap" style="width:' .. width .. 'px;'
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'float:left;clear:left'
elseif args.float == '"center"' or args.float == 'center' then
retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto'
elseif args.float == '"none"' or args.float == 'none' then
retval = retval .. 'float:none;clear:none'
else
retval = retval .. 'float:right;clear:right'
end
retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">'
end
local image = getContainerImage(args, map)
local currentTitle = mw.title.getCurrentTitle()
retval = string.format(
'%s[[File:%s|%spx|%s%s|class=notpageimage noviewer]]',
retval,
image,
width,
args.alt or ((args.label or currentTitle.text) .. ' is located in ' .. map('name')),
args.maplink and ('|link=' .. args.maplink) or ''
)
if args.caption and args.caption ~= '' then
if (currentTitle.namespace == 0) and mw.ustring.find(args.caption, '##') then
retval = retval .. '[[Category:Pages using location map with a double number sign in the caption]]'
end
end
if args.overlay_image then
return retval .. '<div style="position:absolute;top:0;left:0">[[File:' .. args.overlay_image .. '|' .. width .. 'px|class=notpageimage noviewer]]</div>'
else
return retval
end
end
function p.bottom(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local retval = '</div>'
local currentTitle = mw.title.getCurrentTitle()
if not args.caption or args.border == 'infobox' then
if args.border then
retval = retval .. '<div style="padding-top:0.2em">'
else
retval = retval .. '<div style="font-size:91%;padding-top:3px">'
end
retval = retval
.. (args.caption or (args.label or currentTitle.text) .. ' (' .. map('name') .. ')')
.. '</div>'
elseif args.caption ~= '' then
-- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image
retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '| ]]</div>' .. args.caption .. '</div>'
end
if args.switcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>'
elseif args.autoSwitcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">Show map of ' .. map('name') .. '</span>'
end
retval = retval .. '</div></div>'
if args.caption_undefined then
mw.log('Removed parameter caption_undefined used.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
retval = retval .. '[[Category:Location maps with removed parameters|caption_undefined]]'
end
end
if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then
mw.log('Removed parameter used in map definition ' .. map())
if currentTitle.namespace == 0 then
local key = (map('skew') ~= '' and 'skew' or '') ..
(map('lat_skew') ~= '' and 'lat_skew' or '') ..
(map('crosses180') ~= '' and 'crosses180' or '') ..
(map('type') ~= '' and 'type' or '')
retval = retval .. '[[Category:Location maps with removed parameters|' .. key .. ' ]]'
end
end
if string.find(map('name'), '|', 1, true) then
mw.log('Pipe used in name of map definition ' .. map())
if currentTitle.namespace == 0 then
retval = retval .. '[[Category:Location maps with a name containing a pipe]]'
end
end
if args.float == 'center' then
retval = retval .. '</div>'
end
return retval
end
local function markOuterDiv(x, y, imageDiv, labelDiv, label_size)
return mw.html.create('div')
:addClass('od')
:addClass('notheme') -- T236137
:cssText('top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%;font-size:' .. label_size .. '%')
:node(imageDiv)
:node(labelDiv)
end
local function markImageDiv(mark, marksize, label, link, alt, title)
local builder = mw.html.create('div')
:addClass('id')
:cssText('left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px')
:attr('title', title)
if marksize ~= 0 then
builder:wikitext(string.format(
'[[File:%s|%dx%dpx|%s|link=%s%s|class=notpageimage noviewer]]',
mark,
marksize,
marksize,
label,
link,
alt and ('|alt=' .. alt) or ''
))
end
return builder
end
local function markLabelDiv(label, label_size, label_width, position, background, x, marksize)
if tonumber(label_size) == 0 then
return mw.html.create('div'):addClass('l0'):wikitext(label)
end
local builder = mw.html.create('div')
:cssText('width:' .. label_width .. 'em')
local distance = round(marksize / 2 + 1)
if position == 'top' then -- specified top
builder:addClass('pv'):cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'bottom' then -- specified bottom
builder:addClass('pv'):cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left
builder:addClass('pl'):cssText('right:' .. distance .. 'px')
else -- specified right or autodetected to right
builder:addClass('pr'):cssText('left:' .. distance .. 'px')
end
builder = builder:tag('div')
:wikitext(label)
if background then
builder:cssText('background-color:' .. background)
end
return builder:done()
end
local function getX(longitude, left, right)
local width = (right - left) % 360
if width == 0 then
width = 360
end
local distanceFromLeft = (longitude - left) % 360
-- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter
if distanceFromLeft - width / 2 >= 180 then
distanceFromLeft = distanceFromLeft - 360
end
return 100 * distanceFromLeft / width
end
local function getY(latitude, top, bottom)
return 100 * (top - latitude) / (top - bottom)
end
function p.mark(frame, args, map)
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map~'})
end
local mapnames = {}
if not map then
if args[1] then
map = {}
for mapname in mw.text.gsplit(args[1], '#', true) do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
mapnames[#mapnames + 1] = mapname
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
args[1] = 'World'
end
end
if type(map) == 'table' then
local outputs = {}
local oldargs = args[1]
for k,v in ipairs(map) do
args[1] = mapnames[k]
outputs[k] = tostring(p.mark(frame, args, v))
end
args[1] = oldargs
return table.concat(outputs, '#PlaceList#') .. '#PlaceList#'
end
local x, y, longitude, latitude
longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude')
latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'latitude')
if args.excludefrom then
-- If this mark is to be excluded from certain maps entirely (useful in the context of multiple maps)
for exclusionmap in mw.text.gsplit(args.excludefrom, '#', true) do
-- Check if this map is excluded. If so, return an empty string.
if args[1] == exclusionmap then
return ''
end
end
end
local builder = mw.html.create()
local currentTitle = mw.title.getCurrentTitle()
if args.coordinates then
-- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]]
-- if longitude or latitude then
-- error('Coordinates from [[Module:Coordinates]] and individual coordinates cannot both be provided')
-- end
longitude = coord2text('longitude', args.coordinates)
latitude = coord2text('latitude', args.coordinates)
elseif not longitude and not latitude and args.useWikidata then
-- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't.
local entity = mw.wikibase.getEntity()
if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then
local value = entity.claims.P625[1].mainsnak.datavalue.value
longitude, latitude = value.longitude, value.latitude
end
if args.link and (currentTitle.namespace == 0) then
builder:wikitext('[[Category:Location maps with linked markers with coordinates from Wikidata]]')
end
end
if not longitude then
error('No value was provided for longitude')
elseif not latitude then
error('No value was provided for latitude')
end
if currentTitle.namespace > 0 then
if (not args.lon_deg) ~= (not args.lat_deg) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Degrees]]')
elseif (not args.lon_min) ~= (not args.lat_min) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Minutes]]')
elseif (not args.lon_sec) ~= (not args.lat_sec) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Seconds]]')
elseif (not args.lon_dir) ~= (not args.lat_dir) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Hemisphere]]')
elseif (not args.long) ~= (not args.lat) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Decimal]]')
end
end
if ((tonumber(args.lat_deg) or 0) < 0) and ((tonumber(args.lat_min) or 0) ~= 0 or (tonumber(args.lat_sec) or 0) ~= 0 or (args.lat_dir and args.lat_dir ~='')) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if ((tonumber(args.lon_deg) or 0) < 0) and ((tonumber(args.lon_min) or 0) ~= 0 or (tonumber(args.lon_sec) or 0) ~= 0 or (args.lon_dir and args.lon_dir ~= '')) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if (((tonumber(args.lat_min) or 0) < 0) or ((tonumber(args.lat_sec) or 0) < 0)) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if (((tonumber(args.lon_min) or 0) < 0) or ((tonumber(args.lon_sec) or 0) < 0)) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if args.skew or args.lon_shift or args.markhigh then
mw.log('Removed parameter used in invocation.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = (args.skew and 'skew' or '') ..
(args.lon_shift and 'lon_shift' or '') ..
(args.markhigh and 'markhigh' or '')
builder:wikitext('[[Category:Location maps with removed parameters|' .. key ..' ]]')
end
end
if map('x') ~= '' then
x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude })))
else
x = tonumber(getX(longitude, map('left'), map('right')))
end
if map('y') ~= '' then
y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude })))
else
y = tonumber(getY(latitude, map('top'), map('bottom')))
end
if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then
mw.log('Mark placed outside map boundaries without outside flag set. x = ' .. x .. ', y = ' .. y)
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = currentTitle.prefixedText
builder:wikitext('[[Category:Location maps with marks outside map and outside parameter not set|' .. key .. ' ]]')
end
end
local mark = args.mark or map('mark')
if mark == '' then
mark = 'Red pog.svg'
end
local marksize = tonumber(args.marksize) or tonumber(map('marksize')) or 8
local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2])
local label_size = args.label_size or 91
local labelDiv
if args.label and args.position ~= 'none' then
labelDiv = markLabelDiv(args.label, label_size, args.label_width or 6, args.position, args.background, x, marksize)
end
return builder:node(markOuterDiv(x, y, imageDiv, labelDiv, label_size))
end
local function switcherSeparate(s)
if s == nil then return {} end
local retval = {}
for i in string.gmatch(s .. '#', '([^#]*)#') do
i = mw.text.trim(i)
retval[#retval + 1] = (i ~= '' and i)
end
return retval
end
function p.infobox_pushpin_map(frame)
--This function is designed to be invoked from an infobox template
--* Some parameters (generally starting with "pushpin_") are meant to be exposed as parameters
-- in the outer infobox, settable by editors
--* Others are meant to be "hidden" (e.g., only set inside the infobox template code)
-- First get the combined arguments from both parent and invocation frame
local raw_args = getArgs(frame,{parentFirst=true})
--If no map is supplied, return.
if not raw_args['pushpin_map'] then
return
end
-- Now get arguments from just the invocation frame
local frame_args = getArgs(frame,{frameOnly=true})
-- parsed_args will have the resulting merged parameters
local parsed_args = {}
-- Default to using wikidata coodinates if no other coordiantes supplied.
if raw_args.useWikidata == nil then
parsed_args.useWikidata = true
else
parsed_args.useWikidata = raw_args.useWikidata
end
-- Parse the arguments
parsed_args[1] = raw_args['pushpin_map']
parsed_args.float = frame_args.float or 'center'
parsed_args.border = frame_args.border or 'infobox'
parsed_args.default_width = frame_args.default_width
parsed_args.max_width = frame_args.max_width
parsed_args.coordinates = raw_args['coordinates']
parsed_args.caption = raw_args['pushpin_caption']
parsed_args.relief = raw_args['pushpin_relief']
parsed_args.label = raw_args['pushpin_label']
parsed_args.label_size = raw_args['pushpin_label_size']
parsed_args.position = raw_args['pushpin_label_position']
parsed_args.mark = raw_args['pushpin_mark']
parsed_args.marksize = raw_args['pushpin_mark_size']
parsed_args.alt = raw_args['pushpin_alt']
parsed_args.background = raw_args['pushpin_background']
parsed_args.width = raw_args['pushpin_map_size']
local map = {}
local caption_list = {}
for mapname in string.gmatch(parsed_args[1], '[^#]+') do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
end
if parsed_args['caption'] then
for caption in mw.text.gsplit(parsed_args['caption'], '##', true) do
caption_list[#caption_list + 1] = caption
end
end
if #map == 1 then
map = map[1]
if not parsed_args.caption then
parsed_args.caption = 'Location within ' .. map('name')
end
end
if type(map) == 'table' then
mw.log('----')
mw.logObject(map)
if #caption_list > #map then
error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map))
elseif not parsed_args.caption then
-- Set a default caption for each of the multiple maps
for i=1, #map do
caption_list[#caption_list + 1] = 'Location within '.. map[i]('name')
end
end
local outputs = {}
parsed_args.autoSwitcherLabel = true
for k,v in ipairs(map) do
parsed_args.caption = caption_list[k]
outputs[k] = p.main(frame, parsed_args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return p.top(frame, parsed_args, map) .. tostring( p.mark(frame, parsed_args, map) ) .. p.bottom(frame, parsed_args, map)
end
end
function p.main(frame, args, map)
local caption_list = {}
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map', valueFunc = p.valueFunc})
end
if args.useWikidata == nil then
args.useWikidata = true
end
if not map then
if args[1] then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
end
if args['caption'] then
if args['caption'] == "" then
while #caption_list < #map do
caption_list[#caption_list + 1] = args['caption']
end
else
for caption in mw.text.gsplit(args['caption'], '##', true) do
caption_list[#caption_list + 1] = caption
end
end
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
end
end
if type(map) == 'table' then
local altmaps = switcherSeparate(args.AlternativeMap)
if #altmaps > #map then
error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map))
end
local overlays = switcherSeparate(args.overlay_image)
if #overlays > #map then
error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map))
end
if #caption_list > #map then
error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map))
end
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
args.AlternativeMap = altmaps[k]
args.overlay_image = overlays[k]
args.caption = caption_list[k]
outputs[k] = p.main(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map)
end
end
return p
3pqbnkg8pemwulwnvka0szt6hqc0tii
युर्गेन क्लोप
0
75803
1372322
1299167
2026-08-25T21:58:08Z
Dostojewskij
18315
श्रेणी:सन् १९६७ मा जन्म
1372322
wikitext
text/x-wiki
{{Infobox football biography
| name = योर्गन क्लोप
| image = Jürgen Klopp, Liverpool vs. Chelsea, UEFA Super Cup 2019-08-14 04.jpg
| caption = सन् २०१९ मा क्लोप [[लिभरपुल फुटबल क्लब|लिभरपुल]]सँग
| fullname = योर्गन नरबर्ट क्लोप<ref>{{cite news |first=चार्ली |last=मेलम |title=योर्गन क्लोपको कथा |url=https://www.vavel.com/en/football/2015/12/24/liverpool-fc/582754.html |website=भिभेल |date=24 December 2015 |accessdate=12 August 2018}}</ref>
| dateofbirth = १६ जुन १९६७ (उमेर ४७)
| height = १.९४ मि (६ फिट ४ इन्च)
| cityofbirth = स्टुटगार्ट
| countryofbirth = प.जर्मनी<ref>{{cite web |url=http://www.leaguemanagers.com/managers/jurgen-klopp/ |title=योर्गन क्लोप एक लिग प्रशिक्षक |website=लिग प्रशिक्षक सङ्घ |accessdate=12 August 2018 }} {{Webarchive|url=https://web.archive.org/web/20180817100232/http://leaguemanagers.com/managers/jurgen-klopp/ |date=17 August 2018 }}</ref>
| position = [[रक्षापङ्क्ति (फुटबल)|रक्षापङ्क्ति]] र [[अग्रपङ्क्ति (फुटबल)|अग्रपङ्क्ति]]
| currentclub = [[लिभरपुल फुटबल क्लब|लिभरपुल]](प्रशिक्षक)<ref>{{cite web|url=https://www.dfb.de/datencenter/personen/juergen-klopp/trainer|title=योर्गन क्लोप - प्रोफाइल|website=डिएफबी|accessdate=21 January 2019}}</ref>|
| youthyears1 = १९७२–१९८३
| youthclubs1 = एसभी ग्लाट्टेन
| youthyears2 = १९८३–१९८७
| youthclubs2 = टुस इर्जेनजिन्गेन
| years1 = १९८७
| clubs1 = [[१. एफसी पिफरजिम]]
| caps1 = ४
| goals1 = ०
| years2 = १९८७–१९८८
| clubs2 = [[फ्र्याङ्कफर्ट II]]
| caps2 =
| goals2 =
| years3 = १९८८–१९८९
| clubs3 =
| caps3 =
| goals3 =
| years4 = १९८९–१९९०
| clubs4 = [[रोट-विइस फ्र्याङ्कफर्ट]]
| caps4 = ५
| goals4 = ०
| years5 = १९९०–२००१
| clubs5 = [[१. एफएसभी माइन्ज ०५|माइन्ज ०५]]
| caps5 = ३२५
| goals5 = ५२
| manageryears1 = २००१–२००८
| managerclubs1 = [[१. एफएसभी माइन्ज ०५]]
| manageryears2 = २००८–२०१५
| managerclubs2 = [[बोरुसिया डर्टमन्ड|बोरूसिया डर्टमन्ड]]
| manageryears3 = २०१५–
| managerclubs3 = [[लिभरपुल फुटबल क्लब|लिभरपुल]]
}}
'''योर्गेन नरबर्ट क्लोप''' (जर्मन उच्चारण: [ˈjʏɐ̯ɡən ˈklɔp]; जन्म १६ जुन १९६७) पुर्व फुटबल खेलाडी तथा तत्कालीन प्रशिक्षक हुन्। उनी अहिले [[प्रिमियर लिग]]बाट खेल्ने [[लिभरपुल फुटबल क्लब|लिभरपुल]]का प्रशिक्षक हुन्। उनी लिभरपुलका प्रशिक्षक हुनु भन्दा अघि [[बुन्डेसलिगा|बुन्डेस लिगा]]को क्लब माइन्ज ०५ का लागि सन् २००१-२००८ र [[बोरुसिया डर्टमन्ड|बोरूसिया डर्टमन्ड]]का लागि सन् २००८-२००९ सम्म प्रशिक्षक पद सम्हालेका थिए। उनी २०११ र २०१२ वर्षका उत्कृष्ट जर्मन फुटबल प्रशिक्षक पनि घोषित भएका थिए र उनलाई एक अनुभवी प्रशिक्षकको रूपमा लिइन्छ।
==व्यक्तिगत जीवन==
क्लोपले दुइ विवाह गरे। उनका दुइ छोरा छन्। सन् २००९ यता, क्लोप हर्डेक भन्ने ठाउँमा बस्दै आएका छन् जहाँ धेरै बोरूसिया डर्टमन्डका खेलाडीको बसोबास छ। सन् १९९५ मा,क्लोपले सफलतापूर्वक खेल विज्ञानमा गोथे विश्वविद्यालय फ्रान्कफर्टबाट आफ्नो अध्ययन पुरा गरेका थिए। क्लोप क्रिस्टियन हुन जो आफ्नो भगवानप्रतिको आस्था व्यक्त गर्छन्। उनी जिसस क्राइस्टलाई आफ्नो जीवनको आधार मान्दछन्।
==सन्दर्भ सामग्रीहरू==
{{reflist}}
==बाह्य कडीहरू==
{{Commonscat|Jürgen Klopp|योर्गन क्लोप}}
[[श्रेणी:जर्मनीका फुटबल खेलाडीहरू]]
[[श्रेणी:जीवित मानिसहरू]]
[[श्रेणी:सन् १९६७ मा जन्म]]
1tmhzffsrtus742uyznbtnjhi94oiu0
सेतो मछिन्द्ननाथ मन्दिर
0
87342
1372310
1025583
2026-08-25T12:17:06Z
Bishaldev100
28807
1372310
wikitext
text/x-wiki
{{Infobox Mandir
| name = '''सेतो मछिन्द्ननाथ मन्दिर'''
| image =Seto Machhindranath Temple-IMG 2949.jpg
| image_alt =
| caption =सेतो मछिन्द्ननाथ मन्दिर
| pushpin_map =
| map_caption =
| latd = | latm = | lats = | latNS =
| longd = | longm = | longs = | longEW =
| coordinates_region =
| coordinates_display= title
| other_names =
| proper_name = सेतो मछिन्द्ननाथ मन्दिर
| devanagari =
| sanskrit_translit =
| tamil =
| marathi =
| newari =
| bengali =
| country = [[नेपाल]]
| state/province =
| district = [[काठमाडौँ जिल्ला|काठमाडौँ]], [[मच्छिन्द्र बहाल]]
| location =
| elevation_m =
| primary_deity =
| important_festivals=
| architecture =
| number_of_temples =
| number_of_monuments=
| inscriptions =
| date_built =
| creator =
| website =
}}
'''सेतो मछिन्द्ननाथ मन्दिर''' ([[अङ्ग्रेजी भाषा|अङ्ग्रेजी]]: Seto Machhindranath Temple) [[काठमाडौँ|काठमाडौँ उपत्यका]]मा अवस्थित एक [[मन्दिर]] हो।
==नामाकरण==
==यो पनि हेर्नुहोस्==
# [[मन्दिर]]
<br><center><gallery caption="सेतो मछिन्द्ननाथ मन्दिर">
Kathmandu-Janbahal-18-Seto Machindranath-2015-gje.jpg|after earthquake 2015
Kathmandu-Janbahal-02-Seto Machindranath-Waechterfigur-2007-gje.jpg
Kathmandu-Janbahal-13-Seto Machindranath-2013-gje.jpg
Kathmandu-Janbahal-26-Seto Machindranath-Venus-2015-gje.jpg
Kathmandu-Janbahal-30-Seto Machindranath-Venus-2015-gje.jpg
Kathmandu-Janbahal-38-Erdbebenschaden-2015-gje.jpg|after earthquake 2015
</gallery></center>
==सन्दर्भ सामग्रीहरू==
{{reflist}}
==बाह्य कडीहरू==
* {{Commonscat-inline|Hindu temples in Nepal|नेपालका मन्दिरहरु}}
* {{commonscat-inline|Temples|मन्दिरहरु}}
{{काठमाडौँका दर्शनीय स्थलहरू}}
[[श्रेणी:नेपालका मन्दिरहरू]]
[[श्रेणी:काठमाडौँ उपत्यकाका मन्दिरहरू]]
iyycelyboeda6irlfj85fb5ojl3doch
मैवाखोला गाउँपालिका
0
94864
1372354
1371400
2026-08-26T05:09:39Z
~2026-46317-18
80528
स्थानीय भाषाको नाम थपियो
1372354
wikitext
text/x-wiki
{{Infobox settlement
<!--See the table at Infobox settlement for all fields and descriptions of usage-->
<!-- आधारभूत जानकारी -->| name =
| other_name =མཻ་ཝ་ཁོ་ལ
| native_name = མཻ་ཝ་ཁོ་ལ་གྲོང་གསེབ་གྲོང་ཁྱེར།
| settlement_type = [[गाउँपालिका]]
| motto = <!-- images and maps -->
| image_skyline =
| image_caption =
| image_flag =
| image_seal =
| image_map =
| pushpin_label_position = bottom
| pushpin_map_caption =
| pushpin_map =ताप्लेजुङ जिल्ला#कोशी प्रदेश#नेपाल
<!-- अवस्थिति-->
| subdivision_type = [[देश]]
| subdivision_name = {{झण्डा|नेपाल}}
| subdivision_type1 = [[नेपालका प्रदेशहरू|प्रदेश]]
| subdivision_name1 = [[कोशी प्रदेश]]
| subdivision_type2 = [[नेपालका जिल्लाहरू|जिल्ला]]
| subdivision_name2 = [[ताप्लेजुङ जिल्ला|ताप्लेजुङ]]
|<!-- राजनीति-->
| government_footnotes =<ref name="निर्वाचन २०७९">{{cite news|title=स्थानीय तह निर्वाचन २०७९|url=https://localelection2079.ekantipur.com/pradesh-1/district-taplejung/maiwakhola?lng=nep|accessdate=०९ साउन २०८१|language=नेपाली|publisher=कान्तिपुर दैनिक}}</ref>
| government_type =
| leader_title = अध्यक्ष
| leader_name =
विजयप्रकाश वनेम <small> ([[नेकपा (माओवादी केन्द्र)]])
| leader_title1 = उपाध्यक्ष
| leader_name1 =
कमलकुमारी लिम्बु <small> ([[नेपाली काङ्ग्रेस]])
| established_title = स्थापित
| established_date = २७ फागुन २०७३
| unit_pref = <!--Enter: Imperial, if Imperial (metric) is desired-->
| area_footnotes =
| area_total_km2 = 138<!-- ALL fields dealing with a measurements are subject to automatic unit conversion-->
|population_as_of = [[नेपालको बाह्रौँ राष्ट्रिय जनगणना, २०७८|राष्ट्रिय जनगणना २०७८]]
|population_footnotes =<ref name="जनगणना २०७८">{{cite web |title=जनसङ्ख्याको आकार र वितरण|url=https://censusnepal.cbs.gov.np/results/np/population?province=1&district=1&municipality=4|accessdate=२९ जेठ २०८१|work=राष्ट्रिय जनगणना २०७८|publisher=[[राष्ट्रिय तथ्याङ्क कार्यालय (नेपाल)|राष्ट्रिय तथ्याङ्क कार्यालय]]|language=नेपाली}}</ref>
| population_total = 10213
| population_density_km2 = auto
| population_blank1_title = Ethnicities
<!-- साधारण जानकारी -->| timezone = [[नेपाली समय]]
| utc_offset = +५:४५
| timezone_DST =
| utc_offset_DST =
| coordinates = {{Coord|27|18|26.07|N|87|36|32.77|E|display=inline,title}}
| elevation_footnotes = <!--for references: use <ref> </ref> tags-->
| elevation_m = <!-- Area/postal codes & others -->
| postal_code_type =
| postal_code =
| area_code = +९७७-०२४
| blank_name = केन्द्र
| blank_info = साविक [[साँघु]] गाविसको कार्यालय
| website = [https://www.maiwakholamun.gov.np/ आधिकारिक वेबसाइट]
| footnotes =
}}
'''{{पृष्ठको नाम}}''' [[ताप्लेजुङ जिल्ला]]का ८ [[गाउँपालिका]]हरू मध्ये एक हो।<ref name="गाउँपालिका वा नगरपालिका">{{cite web|title=हेर्नुहोस्, तपाईँ कुन गाउँपालिका वा नगरपालिकामा पर्नुभयो?|url=http://setopati.com/raajneeti/64651/|publisher=सेतोपाटी|accessdate=फाल्गुन २०७३|ref=http://setopati.com/raajneeti/64651/}} {{Webarchive|url=https://web.archive.org/web/20170312170008/http://setopati.com/raajneeti/64651/ |date=2017-03-12 }}</ref> २७ फागुन २०७३ मा, गाउँपालिका घोषणा गर्दा साविकका [[फाकुम्बा]], [[साँघु]] र [[ढुङ्गेसाँघु]] [[गाविस]]हरू यसमा गाभिएका थिए।<ref name="गाउँपालिका र नगरपालिका (सूची)">{{cite news|title=गाउँपालिका र नगरपालिका कुन जिल्लामा कति? (सूची)|url=http://lokaantar.com/taja_samachar/2084|accessdate=२३ पौष २०७३|publisher=लोकान्तर|date=२३ पौष २०७३|ref=http://lokaantar.com/taja_samachar/2084}}</ref>
==जनसङ्ख्या==
[[नेपालको बाह्रौँ राष्ट्रिय जनगणना, २०७८|राष्ट्रिय जनगणना २०७८]]को जनगणना अनुसार {{पृष्ठको नाम}}को कुल जनसङ्ख्या १०,२१३ रहेको छ भने यहाँ २,२४९ घरधुरी रहेका छन्।<ref name="जनगणना २०७८"/>
{| class="wikitable sortable" style="text-align: center;"
|+ मैवाखोला गाउँपालिकाको वडागत तथ्याङ्क
|-
! नयाँ वडा !! समावेश साविकका गाविसहरू !! जनसङ्ख्या !! क्षेत्रफल (वर्ग कि.मी.) !! जनघनत्व (व्यक्ति/वर्ग कि.मी.)
|-
| १ || [[ढुङ्गेसाँघु]] (१–५) || १,८८१ || ८.३६ || २२४.९९
|-
| २ || [[ढुङ्गेसाँघु]] (६–९) || १,५९९ || १८.९८ || ८४.२५
|-
| ३ || [[साँघु]] (१–६) || १,८०२ || १४.७० || १२२.५९
|-
| ४ || [[साँघु]] (७–९) || १,५५७ || २९.१७ || ५३.३८
|-
| ५ || [[फाकुम्बा]] (१–४) || १,८६३ || ८.७० || २१४.१४
|-
| ६ || [[फाकुम्बा]] (५–९) || १,५११ || ५७.९१ || २६.०९
|- class="sortbottom" style="font-weight: bold; background: #f2f2f2;"
| colspan="2" | '''जम्मा''' || '''१०,२१३''' || '''१३७.८२''' || ७४.११
|}
==सन्दर्भ सामग्रीहरू==
{{सन्दर्भसूची}}
{{ताप्लेजुङ जिल्लाका स्थानीय तहहरू}}
==बाह्य कडीहरू==
*[http://ddctaplejung.gov.np/ जिल्ला समन्वय समितिको कार्यालय, ताप्लेजुङ, नेपाल] {{Webarchive|url=https://web.archive.org/web/20171018203403/http://ddctaplejung.gov.np/ |date=2017-10-18 }}
[[श्रेणी:ताप्लेजुङ जिल्लाका गाउँपालिकाहरू]]
[[श्रेणी:कोशी प्रदेशका गाउँपालिकाहरू]]
140msuqsuka4ztiw6zhfjfqiqegzpjb
याङवरक गाउँपालिका
0
94881
1372361
1371376
2026-08-26T07:32:21Z
~2026-46317-18
80528
स्थानीय भाषाको नाम थपियो
1372361
wikitext
text/x-wiki
{{Infobox settlement
<!--See the table at Infobox settlement for all fields and descriptions of usage-->
<!-- आधारभूत जानकारी -->| name =
| other_name =ཡང་ཝ་རག་གྲོང་གསེབ་གྲོང་ཁྱེར།
| native_name = ཡང་ཝ་རག
| nickname =Yangwarak
| settlement_type = [[गाउँपालिका]]
| motto = <!-- images and maps -->
| image_skyline =
| image_caption =
| image_flag =
| image_seal =
| image_map =
| pushpin_label_position = bottom
| pushpin_map_caption =
| pushpin_map = पाँचथर जिल्ला#कोशी प्रदेश#नेपाल
<!-- अवस्थिति-->
| subdivision_type = [[देश]]
| subdivision_name = {{झण्डा|नेपाल}}
| subdivision_type1 = [[नेपालका प्रदेशहरू|प्रदेश]]
| subdivision_name1 = [[कोशी प्रदेश]]
| subdivision_type2 = [[नेपालका जिल्लाहरू|जिल्ला]]
| subdivision_name2 = [[पाँचथर जिल्ला|पाँचथर]]
|<!-- राजनीति-->
| government_footnotes =<ref name="निर्वाचन २०७९">{{cite news|title=स्थानीय तह निर्वाचन २०७९|url=https://localelection2079.ekantipur.com/pradesh-1/district-panchthar/yangwarak?lng=nep|accessdate=०९ साउन २०८१|language=नेपाली|publisher=कान्तिपुर दैनिक}}</ref>
| government_type =
| leader_title = अध्यक्ष
| leader_name =
भीमबहादुर योङया <small> ([[नेकपा (एमाले)]])
| leader_title1 = उपाध्यक्ष
| leader_name1 =
बावा मेयाङवो <small> ([[नेकपा (एमाले)]])
| established_title = स्थापित
| established_date = २७ फागुन २०७३
| unit_pref = <!--Enter: Imperial, if Imperial (metric) is desired-->
| area_footnotes =
| area_total_km2 = 208.63<!-- ALL fields dealing with a measurements are subject to automatic unit conversion-->
|population_as_of = [[नेपालको बाह्रौँ राष्ट्रिय जनगणना, २०७८|राष्ट्रिय जनगणना २०७८]]
|population_footnotes =<ref name="जनगणना २०७८">{{cite web |title=जनसङ्ख्याको आकार र वितरण|url=https://censusnepal.cbs.gov.np/results/np/population?province=1&district=9&municipality=1|accessdate=२९ जेठ २०८१|work=राष्ट्रिय जनगणना २०७८|publisher=[[राष्ट्रिय तथ्याङ्क कार्यालय (नेपाल)|राष्ट्रिय तथ्याङ्क कार्यालय]]|language=नेपाली}}</ref>
| population_total = 16821
| population_density_km2 = auto
| population_blank1_title = Ethnicities
<!-- साधारण जानकारी -->| timezone = [[नेपाली समय]]
| utc_offset = +५:४५
| timezone_DST =
| utc_offset_DST =
| coordinates = {{coord|27.2|87.96|type:adm2nd_region:NP_source:unmaps-enwiki|display=inline,title}}
| elevation_footnotes = <!--for references: use <ref> </ref> tags-->
| elevation_m = <!-- Area/postal codes & others -->
| postal_code_type =
| postal_code =
| area_code = +९७७-०२४
| blank_name = केन्द्र
| blank_info = साविक [[थर्पु]] गाविसको कार्यालय
| website = [http://www.yangwarakmunpanchthar.gov.np/ आधिकारिक वेबसाइट]
| footnotes =
}}
'''{{पृष्ठको नाम}}''' [[पाँचथर जिल्ला]]का ७ [[गाउँपालिका]]हरू मध्ये एक हो।<ref name="गाउँपालिका वा नगरपालिका">{{cite web|title=हेर्नुहोस्, तपाईँ कुन गाउँपालिका वा नगरपालिकामा पर्नुभयो?|url=http://setopati.com/raajneeti/64651/|publisher=सेतोपाटी|accessdate=फाल्गुन २०७३|ref=http://setopati.com/raajneeti/64651/}} {{Webarchive|url=https://web.archive.org/web/20170312170008/http://setopati.com/raajneeti/64651/ |date=2017-03-12 }}</ref> २७ फागुन २०७३ मा, गाउँपालिका घोषणा गर्दा साविकका [[च्याङथापु]], [[फलैँचा, पाँचथर|फलैँचा]], [[ओयाम]], [[थर्पु]] र [[नागी, पाँचथर|नागी]] [[गाविस]]हरू यसमा गाभिएका थिए।<ref name="गाउँपालिका र नगरपालिका (सूची)">{{cite news|title=गाउँपालिका र नगरपालिका कुन जिल्लामा कति? (सूची)|url=http://lokaantar.com/taja_samachar/2084|accessdate=२३ पौष २०७३|publisher=लोकान्तर|date=२३ पौष २०७३|ref=http://lokaantar.com/taja_samachar/2084}}</ref>
==जनसङ्ख्या==
[[नेपालको बाह्रौँ राष्ट्रिय जनगणना, २०७८|राष्ट्रिय जनगणना २०७८]]को जनगणना अनुसार {{पृष्ठको नाम}}को कुल जनसङ्ख्या १६,८२१ रहेको छ भने यहाँ ३,९५६ घरधुरी रहेका छन्।<ref name="जनगणना २०७८"/>
{| class="wikitable sortable" style="text-align: center;"
|+ याङवरक गाउँपालिकाको वडागत तथ्याङ्क
|-
! नयाँ वडा !! समावेश साविकका गाविसहरू !! जनसङ्ख्या !! क्षेत्रफल (वर्ग कि.मी.) !! जनघनत्व (व्यक्ति/वर्ग कि.मी.)
|-
| १ || [[च्याङथापु]] || २,१५४ || ५७.०८ || ३७.७३
|-
| २ || [[फलैँचा, पाँचथर|फलैँचा]] || ३,११० || ८४.९८ || ३६.५९
|-
| ३ || [[ओयाम]] || ३,३७८ || ३०.०२ || ११२.५२
|-
| ४ || [[थर्पु]] (१–५) || ३,१५४ || ८.३७ || ३७६.८२
|-
| ५ || [[थर्पु]] (६–९) र [[नागी, पाँचथर|नागी]] (१, २) || २,३२८ || १५.३३ || १५१.८५
|-
| ६ || [[नागी, पाँचथर|नागी]] (३–९) || २,६९७ || १२.५७ || २१४.५५
|- class="sortbottom" style="font-weight: bold; background: #f2f2f2;"
| colspan="2" | '''जम्मा''' || '''१६,८२१''' || '''२०८.३५''' || ८०.७३
|}
==सन्दर्भ सामग्रीहरू==
{{सन्दर्भसूची}}
{{पाँचथर जिल्लाका स्थानीय तहहरू}}
==बाह्य कडीहरू==
*[http://ddcpanchthar.gov.np/ जिल्ला समन्वय समितिको कार्यालय, पाँचथर, नेपाल] {{Webarchive|url=https://web.archive.org/web/20171028062036/http://www.ddcpanchthar.gov.np/ |date=2017-10-28 }}
[[श्रेणी:पाँचथर जिल्लाका गाउँपालिकाहरू]]
[[श्रेणी:कोशी प्रदेशका गाउँपालिकाहरू]]
404ptbky76zxuuy73v9iun7gk4h1n48
एयरटेल बङ्गलादेश
0
100773
1372321
1203256
2026-08-25T17:30:04Z
Shah Emtiaj
80521
1372321
wikitext
text/x-wiki
{{Infobox company
| name = रोबि आजीयाटा लिमिटेड
| logo = [[File:Cirkle logo.svg
|185px]]
| type = [[रोबी (कम्पनी)|रोबि]]को स्वतन्त्र उत्पादन
| predecessor = एयरटेल बङ्गलादेश लिमिटेड; वारिद टेलिकम लिमिटेड
| fate = [[रोबी (कम्पनी)|रोबि]]मा समायोजित
| key_people = महताब उद्दिन अहमद ([[प्रमुख कार्यकारी अधिकृत|प्राकाअ]])
| industry = दूरसञ्चार
| products = [[मोबाइल टेलिफोन]], [[Enhanced Data Rates for GSM Evolution|एज]], [[विश्वव्यापी मोबाइल सञ्चार प्रणाली|जिएसएम]], [[जिपिआरएस]], [[युएमटिएस]], [[एचएसडिपिए]], [[एचएसयुपिए]], [[High Speed Packet Access|एचएसपिए]], [[एचएसपिए+]], [[Frequency-division duplex|एफडिडि]]-[[LTE (telecommunication)|एलटिइ]], [[एलटिइ-ए]]
| services =
| parent = [[आजीयाटा ग्रुप बेरहाड|आजीयाटा]] (६८.७%), [[एयरटेल इन्डिया|भारती एयरटेल]] (२५%), [[एनटिटि डोकोमो]] (६.३%)
| homepage = {{URL|http://www.bd.airtel.com/en|बीडी.एयरटेल.कम}}
| foundation = १० मे २००७
| location = [[ढाका]] बङ्गलादेश
}}
'''एयरटेल''' ({{lang-bn|এয়ারটেল}}) [[बङ्गलादेश]]मा रोबी आजीयाटाको एक स्वतन्त्र उत्पादन ब्रान्ड हो जसले रोबी आजीयाटा लिमिटेड बङ्गलादेशमा 'एयरटेल' ब्रान्डको इजाजतपत्र पाएको थियो । यो जीएसएम आधारित मोबाइल दूरसञ्चार पनि हो । यो [[रोबी (कम्पनी)|रोबि]]मा नोभेम्बर २०१६ मा समायोजित भएको थियो । यो १० मे २००७ मा स्थापना भएको थियो भने यसको मुख्यालय बङ्गलादेशको राजधानी [[ढाका]]मा अवस्थित छ । यसका दुबै प्रिपेड र पोस्टपेड सेवाहरू उपलब्ध रहेका छन् ।
यो बङ्गलादेशको सबैभन्दा ठूलो मित्र नेटवर्क हो जुन अगस्ट २०१८ का अनुसार यसका लगभग १३.४ मिलियन सक्रिय ग्राहकहरू रहेका छन् । कम्पनीले ५०० भन्दा बढि थानाहरूका जनसङ्ख्यालाई ४ जी नेटवर्कको साथ ९०% सम्मको व्यापक नेटवर्क कभरेज प्रदान गरेको छ । यसले हाल रोबिका नाममा सेवा दिइरहेको छ
==विकासक्रम==
संयुक्त अरब इमिरेट्सको एक प्रमुख टेलिकम, वारिद टेलीकमले, यस कम्पनीलाई भारतको [[एयरटेल इन्डिया|भारती एयरटेल]] लिमिटेडमा ३०० मिलियन अमेरिकी डलरमा ७०% भाग बेच्दिएको थियो ।
भारतीय एयरटेलको प्रस्तावमा कम्पनीको नयाँ शेयरहरू सिर्जना गर्न वारीदमा ३०० मिलियन डलर लगानी गरेको थियो । बङ्गलादेश दूरसञ्चार विनियामक आयोगले ४ जनवरी २०१० मा यस सम्झौता स्वीकृत गर्यो ।
भारती एयरटेल लिमिटेड र यसको बोर्डको प्रबन्धन नियन्त्रणले २० डिसेम्बर २०१० देखि कम्पनीको सेवाहरूलाई आफ्नो ''एयरटेल''मा पुनः सञ्चालन गरेको थियो ।
मार्च २०१३ मा, वारिद टेलिकमले बाँकी रहेको ३०% शेयरलाई भारती एयरटेलको सिंगापुर-आधारित भारती एयरटेल होल्डिङ्स पिटिइ लिमिटेडको ८५ करोड अमेरिकी डलरमा बेच्दिएको थियो ।
८ सेप्टेम्बर २०१३ मा, एयरटेल बङ्गलादेश ५ मेगाहर्ज ३ जी स्पेक्ट्रम प्राप्त गरेको थियो ।
जनवरी २०१६ मा एयरटेल बङ्गलादेश र रोबि ले आ-आफ्नो सेवालाई एउटैमा समायोजन गर्ने घोषण गरेका थिए र यो समायोजन पछि त्यसलाई रोबिको नाम दिने भनिएको थियो र जसले त्यसबेलाका छुट्टाछुट्टै प्रदायकका ३२ मिलियन प्रयोगकर्ताहरूलाई सेवा दिएको थियो । यो समायोजित [[रोबी (कम्पनी)|रोबि]]लाई ६८.७% मलेसियाको इन्टरनेट कम्पनी [[आजीयाटा ग्रुप बेरहाड|आजीयाटा]] को स्वामित्वमा रहेको छ भने, भारतको [[एयरटेल इन्डिया|भारती एयरटेल]]को २५% रहेकोे छ भने बाँकी ६.३% चाहि जापानको [[एनटिटि डोकोमो]]को स्वामित्व रहेको छ ।<ref>{{cite web|url=http://www.axiata.com/mroom/news-article/121/|title=दुइ प्रमुख दूरसञ्चार कम्पनी बिच समायोजन हुने निर्णय भएको छ|publisher=आजीयाटा|date=2016-01-28|accessdate=2016-01-29}} {{Webarchive|url=https://web.archive.org/web/20171201081642/https://www.axiata.com/mroom/news-article/121 |date=2017-12-01 }}</ref><ref>{{cite web|url= https://sg.finance.yahoo.com/news/malaysias-axiata-indias-bharti-merge-115709908.html|title= आजीयाटा र भारती एयरटेलले आ-आफ्ना नियन्त्रणमा रहेका कम्पनीलाई समायोजन गरेका छन्
|publisher=रेउटर्स|date=2016-01-28|accessdate=2016-01-29}}</ref> नोभेम्बर २०१६ मा समायोजन सफल<ref>
यो समायोजन नोभेम्बर २०१६ मा पुर्ण भएको थियो र बङ्गलादेशमा दोस्रो सबैभन्दा ठूलो टेलिकम कम्पनी बन्न सफल भएको थियो ।
==यो पनि हेर्नुहोस==
* [[एयरटेल इन्डिया|एयरटेल भारत]]
* [[एयरटेल श्रीलङ्का]]
* [[एयरटेल अफ्रिका]]
==सन्दर्भ सामग्री==
{{reflist}}
==बाह्य कडीहरू==
[https://www.bd.airtel.com/bn आधिकारिक वेबसाइट]
[[श्रेणी:विकिथन-७ मा बनाइएका वा सुधारिएका लेखहरू]]
[[श्रेणी:दूरसञ्चार]]
[[श्रेणी:इन्टरनेट सेवा प्रदायकहरू]]
[[श्रेणी:टेलिकम]]
b2hmy7vo5mw127q9yjtfeoidkxkqi0w
काँच
0
101803
1372362
1357862
2026-08-26T08:00:48Z
Omnathpokh1
20435
/* */ केही विवरण सुधारिएको र केही विवरण थपिएको
1372362
wikitext
text/x-wiki
[[File:Gluehlampe 01 KMJ.jpg|thumb|स्वच्छ पारदर्शी काँचबाट बनेको बिजुली बल्ब]]
'''काँच''' एक पारदर्शी ठोस वस्तु हो। यो [[मणिभ]] नबनी अर्ध ठोस अवस्थाबाट ठोसमा बदलिन्छ। यो एक अति चिस्याइएको तरल (''सुपर कुल्ड लिक्विड'') हो। यसको कारण यो ठोस हुनुभन्दा पहिले नै यसको पग्लिने [[तापक्रम]]भन्दा तल चिसिन्छ। ठाडो पारेर राखेको झ्यालमा रहेका [[अणु]]हरू माथिल्लो तहबाट तल्लो तहतिर बिस्तारै बग्छन्। यो अल्काली र अल्कालाइन धातुहरूको समान मिश्रण हो। यसको मुख्य [[कच्चा पदार्थ]] सिलिका (SiO<sub>2</sub>) हो। [[बालुवा]]मा यो पदार्थ पाइन्छ। सिलिका र केही धातुहरूको यौगिकसँग प्रतिक्रिया भई सिलिकेटहरू बन्छन्। [[धातु]]को सिलिकेटबाट काँच बनाइन्छ। काँच विभिन्न प्रकारका हुन्छन्। तीमध्ये केही क्वार्ज काँच, वाटर काँच, साधारण काँच, कडा काँच, बोरो सिलिकेट काँच, लेड क्रिस्टल काँच, रङ्गीन काँच आदि हुन्।
==सिलिका काँच ==
सिलिकालाई लगभग १६०० डिग्री सेल्सियसमा तताउँदा यो पग्लन्छ। यसलाई चिस्याउँदा ठोसमा परिर्वतन भई एक प्रकारको कृस्टलाइन काँच बन्छ। यसैलाई सिलिका काँच भनिन्छ। यो अम्ल, पानी र अन्य रसायनहरूमा घुल्दैन। वातावरणमा भएको फरक तापक्रमले यसलाई असर गर्दैन किनकि सिलिकामा तन्कने गुण हुन्छ। यो काँच गम बनाउन, विद्युतीय सामग्रीहरू बनाउन र प्रयोगशालामा प्रयोग हुने सामग्रीहरू बनाउन प्रयोग गरिन्छ।
==वाटर काँच==
सिलिकालाई करिब ८०० डिग्री सम्म [[सोडियम कार्बोनेट]] वा [[पोटासियम कार्बोनेट]]सँग तताउँदा [[सोडियम सिलिकेट]] वा पोटासियम सिलिकेट बन्छ। यो काँच पानीमा घुल्ने हुनाले यसलाई वाटर काँच पनि भनिन्छ। यस प्रकारको काँच अग्नि प्रतिरोधक सामान र सिलिका गार्डेन बनाउन प्रयोग गरिन्छ। यस काँचको घोल पेस्ट, गम आदि बनाउन पनि प्रयोग गरिन्छ ।
== भौतिक गुण ==
काँचको उपयोग कैयौँ प्रकारको वतुहरूमा गरिन्छ जुनमा विभिन्न भौतिक गुणहरूको आवश्यकता रहन्छ। काँचको भौतिक गुणहरूमा भिन्नता विभिन्न आक्साइडहरूद्वारा आउँछ।
'''घनत्व'''- काँचमा अधिक घनत्व सीस आक्साइडद्वारा आउँछ भने सबैभन्दा कम बोरिक आक्साइडद्वारा आउँछ।
'''विद्धुतीय गुण'''- काँचको विद्युच्चालकता काँचको रचना, ताप एवं वातावरण मा निर्भर रहन्छ। आजकल काँचको उपयोग अचालक (insulator) को लागि गरिन्छ।
'''तापीय गुण'''- तप्त हुँदा काँच ताप प्रसारित हुन्छ
'''प्रकाशीय गुण'''-
[[श्रेणी:रासायनिक पदार्थहरू|काँच]]
8wl5u3s1pjy08j71413avye0bj0ril8
1372363
1372362
2026-08-26T08:14:37Z
Omnathpokh1
20435
/* सिलिका काँच र क्वार्ज काँच */ विवरण सुधार र थप गरिएको
1372363
wikitext
text/x-wiki
[[File:Gluehlampe 01 KMJ.jpg|thumb|स्वच्छ पारदर्शी काँचबाट बनेको बिजुली बल्ब]]
'''काँच''' एक पारदर्शी ठोस वस्तु हो। यो [[मणिभ]] नबनी अर्ध ठोस अवस्थाबाट ठोसमा बदलिन्छ। यो एक अति चिस्याइएको तरल (''सुपर कुल्ड लिक्विड'') हो। यसको कारण यो ठोस हुनुभन्दा पहिले नै यसको पग्लिने [[तापक्रम]]भन्दा तल चिसिन्छ। ठाडो पारेर राखेको झ्यालमा रहेका [[अणु]]हरू माथिल्लो तहबाट तल्लो तहतिर बिस्तारै बग्छन्। यो अल्काली र अल्कालाइन धातुहरूको समान मिश्रण हो। यसको मुख्य [[कच्चा पदार्थ]] सिलिका (SiO<sub>2</sub>) हो। [[बालुवा]]मा यो पदार्थ पाइन्छ। सिलिका र केही धातुहरूको यौगिकसँग प्रतिक्रिया भई सिलिकेटहरू बन्छन्। [[धातु]]को सिलिकेटबाट काँच बनाइन्छ। काँच विभिन्न प्रकारका हुन्छन्। तीमध्ये केही क्वार्ज काँच, वाटर काँच, साधारण काँच, कडा काँच, बोरो सिलिकेट काँच, लेड क्रिस्टल काँच, रङ्गीन काँच आदि हुन्।
==सिलिका काँच र क्वार्ज काँच==
सिलिका काँच र क्वार्ज काँच एक-अर्कासँग निकै मिल्दाजुल्दा हुन्छन् र प्रायः यी शब्दहरूलाई एउटै अर्थमा प्रयोग गरिन्छ, तर यिनीहरू बनाइने प्रक्रिया र शुद्धताको स्तरमा भने केही भिन्नताहरू छन्। क्वार्ज काँच प्राकृतिक खनिजबाट बन्ने हुनाले यसमा केही अशुद्धताहरू हुन सक्छन् तर सिलिका काँच रासायनिक ग्याँसहरूबाट बन्ने हुँदा यो अत्यधिक शुद्ध र प्रकाश (विशेष गरी परावैजनी किरण) पार गर्न उत्कृष्ट मानिन्छ। सिलिकालाई लगभग १७०० डिग्री सेल्सियसभन्दा उच्च तापक्रममा तताउँदा यो पग्लन्छ। यसलाई चिस्याउँदा यो मणिभ नबनी ''एमर्फस'' ठोसमा परिवर्तन हुन्छ, जसलाई सिलिका काँच भनिन्छ। यो अम्ल (हाईड्रोफ्लोरिक अम्ल बाहेक), पानी र अन्य रसायनहरूमा घुल्दैन। वातावरणमा हुने तीव्र तापक्रमको परिवर्तनले यसलाई असर गर्दैन, किनकि यसको तापीय प्रसार गुणाङ्क निकै कम हुन्छ, जसले गर्दा यो तातो-चिसोमा फैलिने वा खुम्चिने हुँदैन। यो काँच अत्याधुनिक अप्टिकल लेन्स, विद्युतीय सामग्रीहरू, अप्टिकल फाइबर र प्रयोगशालामा प्रयोग हुने उच्च ताप प्रतिरोधी सामग्रीहरू बनाउन प्रयोग गरिन्छ।
==वाटर काँच==
सिलिकालाई करिब ८०० डिग्री सम्म [[सोडियम कार्बोनेट]] वा [[पोटासियम कार्बोनेट]]सँग तताउँदा [[सोडियम सिलिकेट]] वा पोटासियम सिलिकेट बन्छ। यो काँच पानीमा घुल्ने हुनाले यसलाई वाटर काँच पनि भनिन्छ। यस प्रकारको काँच अग्नि प्रतिरोधक सामान र सिलिका गार्डेन बनाउन प्रयोग गरिन्छ। यस काँचको घोल पेस्ट, गम आदि बनाउन पनि प्रयोग गरिन्छ ।
== भौतिक गुण ==
काँचको उपयोग कैयौँ प्रकारको वतुहरूमा गरिन्छ जुनमा विभिन्न भौतिक गुणहरूको आवश्यकता रहन्छ। काँचको भौतिक गुणहरूमा भिन्नता विभिन्न आक्साइडहरूद्वारा आउँछ।
'''घनत्व'''- काँचमा अधिक घनत्व सीस आक्साइडद्वारा आउँछ भने सबैभन्दा कम बोरिक आक्साइडद्वारा आउँछ।
'''विद्धुतीय गुण'''- काँचको विद्युच्चालकता काँचको रचना, ताप एवं वातावरण मा निर्भर रहन्छ। आजकल काँचको उपयोग अचालक (insulator) को लागि गरिन्छ।
'''तापीय गुण'''- तप्त हुँदा काँच ताप प्रसारित हुन्छ
'''प्रकाशीय गुण'''-
[[श्रेणी:रासायनिक पदार्थहरू|काँच]]
2pb4uobimmyn1m8nv2ncz8jxf5qhpp2
1372364
1372363
2026-08-26T08:29:13Z
Omnathpokh1
20435
/* वाटर काँच */ रसायनिक समिकरण थप गरिएको।
1372364
wikitext
text/x-wiki
[[File:Gluehlampe 01 KMJ.jpg|thumb|स्वच्छ पारदर्शी काँचबाट बनेको बिजुली बल्ब]]
'''काँच''' एक पारदर्शी ठोस वस्तु हो। यो [[मणिभ]] नबनी अर्ध ठोस अवस्थाबाट ठोसमा बदलिन्छ। यो एक अति चिस्याइएको तरल (''सुपर कुल्ड लिक्विड'') हो। यसको कारण यो ठोस हुनुभन्दा पहिले नै यसको पग्लिने [[तापक्रम]]भन्दा तल चिसिन्छ। ठाडो पारेर राखेको झ्यालमा रहेका [[अणु]]हरू माथिल्लो तहबाट तल्लो तहतिर बिस्तारै बग्छन्। यो अल्काली र अल्कालाइन धातुहरूको समान मिश्रण हो। यसको मुख्य [[कच्चा पदार्थ]] सिलिका (SiO<sub>2</sub>) हो। [[बालुवा]]मा यो पदार्थ पाइन्छ। सिलिका र केही धातुहरूको यौगिकसँग प्रतिक्रिया भई सिलिकेटहरू बन्छन्। [[धातु]]को सिलिकेटबाट काँच बनाइन्छ। काँच विभिन्न प्रकारका हुन्छन्। तीमध्ये केही क्वार्ज काँच, वाटर काँच, साधारण काँच, कडा काँच, बोरो सिलिकेट काँच, लेड क्रिस्टल काँच, रङ्गीन काँच आदि हुन्।
==सिलिका काँच र क्वार्ज काँच==
सिलिका काँच र क्वार्ज काँच एक-अर्कासँग निकै मिल्दाजुल्दा हुन्छन् र प्रायः यी शब्दहरूलाई एउटै अर्थमा प्रयोग गरिन्छ, तर यिनीहरू बनाइने प्रक्रिया र शुद्धताको स्तरमा भने केही भिन्नताहरू छन्। क्वार्ज काँच प्राकृतिक खनिजबाट बन्ने हुनाले यसमा केही अशुद्धताहरू हुन सक्छन् तर सिलिका काँच रासायनिक ग्याँसहरूबाट बन्ने हुँदा यो अत्यधिक शुद्ध र प्रकाश (विशेष गरी परावैजनी किरण) पार गर्न उत्कृष्ट मानिन्छ। सिलिकालाई लगभग १७०० डिग्री सेल्सियसभन्दा उच्च तापक्रममा तताउँदा यो पग्लन्छ। यसलाई चिस्याउँदा यो मणिभ नबनी ''एमर्फस'' ठोसमा परिवर्तन हुन्छ, जसलाई सिलिका काँच भनिन्छ। यो अम्ल (हाईड्रोफ्लोरिक अम्ल बाहेक), पानी र अन्य रसायनहरूमा घुल्दैन। वातावरणमा हुने तीव्र तापक्रमको परिवर्तनले यसलाई असर गर्दैन, किनकि यसको तापीय प्रसार गुणाङ्क निकै कम हुन्छ, जसले गर्दा यो तातो-चिसोमा फैलिने वा खुम्चिने हुँदैन। यो काँच अत्याधुनिक अप्टिकल लेन्स, विद्युतीय सामग्रीहरू, अप्टिकल फाइबर र प्रयोगशालामा प्रयोग हुने उच्च ताप प्रतिरोधी सामग्रीहरू बनाउन प्रयोग गरिन्छ।
==वाटर काँच==
सिलिकालाई करिब ८०० डिग्री सम्म [[सोडियम कार्बोनेट]] वा [[पोटासियम कार्बोनेट]]सँग तताउँदा [[सोडियम सिलिकेट]] वा पोटासियम सिलिकेट बन्छ।
<chem>SiO2 + Na2CO3 -> Na2SiO3 + CO2</chem>
<chem>SiO2 + K2CO3 -> K2SiO3 + CO2</chem>
यो काँच पानीमा घुल्ने हुनाले यसलाई वाटर काँच पनि भनिन्छ। यस प्रकारको काँच अग्नि प्रतिरोधक सामान र सिलिका गार्डेन बनाउन प्रयोग गरिन्छ। यस काँचको घोल पेस्ट, गम आदि बनाउन पनि प्रयोग गरिन्छ ।
== भौतिक गुण ==
काँचको उपयोग कैयौँ प्रकारको वतुहरूमा गरिन्छ जुनमा विभिन्न भौतिक गुणहरूको आवश्यकता रहन्छ। काँचको भौतिक गुणहरूमा भिन्नता विभिन्न आक्साइडहरूद्वारा आउँछ।
'''घनत्व'''- काँचमा अधिक घनत्व सीस आक्साइडद्वारा आउँछ भने सबैभन्दा कम बोरिक आक्साइडद्वारा आउँछ।
'''विद्धुतीय गुण'''- काँचको विद्युच्चालकता काँचको रचना, ताप एवं वातावरण मा निर्भर रहन्छ। आजकल काँचको उपयोग अचालक (insulator) को लागि गरिन्छ।
'''तापीय गुण'''- तप्त हुँदा काँच ताप प्रसारित हुन्छ
'''प्रकाशीय गुण'''-
[[श्रेणी:रासायनिक पदार्थहरू|काँच]]
hh3wyv32mhq6kydsw0lhviluvef5hnb
1372365
1372364
2026-08-26T08:40:15Z
Omnathpokh1
20435
/* साधारण काँच */ विवरण थपिएको
1372365
wikitext
text/x-wiki
[[File:Gluehlampe 01 KMJ.jpg|thumb|स्वच्छ पारदर्शी काँचबाट बनेको बिजुली बल्ब]]
'''काँच''' एक पारदर्शी ठोस वस्तु हो। यो [[मणिभ]] नबनी अर्ध ठोस अवस्थाबाट ठोसमा बदलिन्छ। यो एक अति चिस्याइएको तरल (''सुपर कुल्ड लिक्विड'') हो। यसको कारण यो ठोस हुनुभन्दा पहिले नै यसको पग्लिने [[तापक्रम]]भन्दा तल चिसिन्छ। ठाडो पारेर राखेको झ्यालमा रहेका [[अणु]]हरू माथिल्लो तहबाट तल्लो तहतिर बिस्तारै बग्छन्। यो अल्काली र अल्कालाइन धातुहरूको समान मिश्रण हो। यसको मुख्य [[कच्चा पदार्थ]] सिलिका (SiO<sub>2</sub>) हो। [[बालुवा]]मा यो पदार्थ पाइन्छ। सिलिका र केही धातुहरूको यौगिकसँग प्रतिक्रिया भई सिलिकेटहरू बन्छन्। [[धातु]]को सिलिकेटबाट काँच बनाइन्छ। काँच विभिन्न प्रकारका हुन्छन्। तीमध्ये केही क्वार्ज काँच, वाटर काँच, साधारण काँच, कडा काँच, बोरो सिलिकेट काँच, लेड क्रिस्टल काँच, रङ्गीन काँच आदि हुन्।
==सिलिका काँच र क्वार्ज काँच==
सिलिका काँच र क्वार्ज काँच एक-अर्कासँग निकै मिल्दाजुल्दा हुन्छन् र प्रायः यी शब्दहरूलाई एउटै अर्थमा प्रयोग गरिन्छ, तर यिनीहरू बनाइने प्रक्रिया र शुद्धताको स्तरमा भने केही भिन्नताहरू छन्। क्वार्ज काँच प्राकृतिक खनिजबाट बन्ने हुनाले यसमा केही अशुद्धताहरू हुन सक्छन् तर सिलिका काँच रासायनिक ग्याँसहरूबाट बन्ने हुँदा यो अत्यधिक शुद्ध र प्रकाश (विशेष गरी परावैजनी किरण) पार गर्न उत्कृष्ट मानिन्छ। सिलिकालाई लगभग १७०० डिग्री सेल्सियसभन्दा उच्च तापक्रममा तताउँदा यो पग्लन्छ। यसलाई चिस्याउँदा यो मणिभ नबनी ''एमर्फस'' ठोसमा परिवर्तन हुन्छ, जसलाई सिलिका काँच भनिन्छ। यो अम्ल (हाईड्रोफ्लोरिक अम्ल बाहेक), पानी र अन्य रसायनहरूमा घुल्दैन। वातावरणमा हुने तीव्र तापक्रमको परिवर्तनले यसलाई असर गर्दैन, किनकि यसको तापीय प्रसार गुणाङ्क निकै कम हुन्छ, जसले गर्दा यो तातो-चिसोमा फैलिने वा खुम्चिने हुँदैन। यो काँच अत्याधुनिक अप्टिकल लेन्स, विद्युतीय सामग्रीहरू, अप्टिकल फाइबर र प्रयोगशालामा प्रयोग हुने उच्च ताप प्रतिरोधी सामग्रीहरू बनाउन प्रयोग गरिन्छ।
==वाटर काँच==
सिलिकालाई करिब ८०० डिग्री सम्म [[सोडियम कार्बोनेट]] वा [[पोटासियम कार्बोनेट]]सँग तताउँदा [[सोडियम सिलिकेट]] वा पोटासियम सिलिकेट बन्छ।
<chem>SiO2 + Na2CO3 -> Na2SiO3 + CO2</chem>
<chem>SiO2 + K2CO3 -> K2SiO3 + CO2</chem>
यो काँच पानीमा घुल्ने हुनाले यसलाई वाटर काँच पनि भनिन्छ। यस प्रकारको काँच अग्नि प्रतिरोधक सामान र सिलिका गार्डेन बनाउन प्रयोग गरिन्छ। यस काँचको घोल पेस्ट, गम आदि बनाउन पनि प्रयोग गरिन्छ ।
== साधारण काँच ==
साधारण काँचलाई वैज्ञानिक भाषामा ''सोडा लाइम ग्लास'' वा कम तापक्रममा पग्लिने गुण भएकाले नरम काँच पनि भनिन्छ। यसको औद्योगिक उत्पादन ''ट्याङ्क फर्नेस'' मा ५०% सिलिका, २५% काँचका टुक्राहरू, १५% सोडियम कार्बोनेट र १०% क्याल्सियम कार्बोनेटको मिश्रणलाई तताएर गरिन्छ। पानीमा नघुल्ने यो काँच दैनिक जीवनमा साधारण सिसी, झ्यालका ऐना र प्रयोगशालाका सामान्य सामानहरू बनाउन व्यापक रूपमा प्रयोग हुन्छ। यसै मिश्रणमा लेड मोनोअक्साइड थप्दा लेड सिलिकेट बन्दछ, जसले काँचको ''रिफ्र्याक्टिभ इन्डेक्स'' बढाउने हुनाले यसबाट लेन्स र प्रिज्म जस्ता अत्याधुनिक प्रकाश सम्बन्धी उपकरणहरू निर्माण गर्न सकिन्छ।
<chem>PbO + SiO2 -> PbSiO3</chem>
== भौतिक गुण ==
काँचको उपयोग कैयौँ प्रकारको वतुहरूमा गरिन्छ जुनमा विभिन्न भौतिक गुणहरूको आवश्यकता रहन्छ। काँचको भौतिक गुणहरूमा भिन्नता विभिन्न आक्साइडहरूद्वारा आउँछ।
'''घनत्व'''- काँचमा अधिक घनत्व सीस आक्साइडद्वारा आउँछ भने सबैभन्दा कम बोरिक आक्साइडद्वारा आउँछ।
'''विद्धुतीय गुण'''- काँचको विद्युच्चालकता काँचको रचना, ताप एवं वातावरण मा निर्भर रहन्छ। आजकल काँचको उपयोग अचालक (insulator) को लागि गरिन्छ।
'''तापीय गुण'''- तप्त हुँदा काँच ताप प्रसारित हुन्छ
'''प्रकाशीय गुण'''-
[[श्रेणी:रासायनिक पदार्थहरू|काँच]]
go9r5f2xomkqk9vtr2cer43c0xnimam
ढाँचा:Efn-ua
10
101808
1372344
1276587
2026-08-26T03:33:01Z
पर्वत सुवेदी
31224
/* */
1372344
wikitext
text/x-wiki
<includeonly>{{safesubst<noinclude />:efn|name={{{name|}}}|reference={{{1|{{{reference|{{{content|{{{text|}}}}}}}}}}}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
fmxszew095oivorztjw4t0me3uqf4s0
मोड्युल:Coordinates test
828
112230
1372352
1335353
2026-08-26T04:20:21Z
पर्वत सुवेदी
31224
1372352
Scribunto
text/plain
--[[
This module is intended to replace the functionality of {{Coord}} and related
templates. It provides several methods, including
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true);
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '¶ms='
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(coords)
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span id="coordinates">[[Geographic coordinate system|Coordinates]]: ' .. coords .. '</span>'
}
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:স্থানাঙ্ক/খেলাঘর'
})
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
result = result .. '<strong class="error">Coordinates: ' .. v[2] .. '</strong><br />'
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "ERROR param was empty"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="Maps, aerial photos, and other data for this location">'
.. '<span class="latitude">' .. coordinateSpec["dms-lat"] .. '</span> '
.. '<span class="longitude">' ..coordinateSpec["dms-long"] .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "°S"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "°N"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "°W"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "°E"
end
local geodechtml = '<span class="geo-dec" title="Maps, aerial photos, and other data for this location">'
.. geodeclat .. ' '
.. geodeclong
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = stylesheetLink }
} .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents ..
' ' .. inner .. ']</span>' .. '[[Category:Pages using gadget WikiMiniAtlas]]'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "latitude degrees < 0 with hemisphere flag"})
end
if long_d < 0 then
table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"})
end
--[[
#coordinates is inconsistent about whether this is an error. If globe: is
specified, it won't error on this condition, but otherwise it will.
For not simply disable this check.
if long_d > 180 then
table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"})
end
]]
end
if lat_d > 90 then
table.insert(errors, {source, "latitude degrees > 90"})
end
if lat_d < -90 then
table.insert(errors, {source, "latitude degrees < -90"})
end
if lat_m >= 60 then
table.insert(errors, {source, "latitude minutes >= 60"})
end
if lat_m < 0 then
table.insert(errors, {source, "latitude minutes < 0"})
end
if lat_s >= 60 then
table.insert(errors, {source, "latitude seconds >= 60"})
end
if lat_s < 0 then
table.insert(errors, {source, "latitude seconds < 0"})
end
if long_d >= 360 then
table.insert(errors, {source, "longitude degrees >= 360"})
end
if long_d <= -360 then
table.insert(errors, {source, "longitude degrees <= -360"})
end
if long_m >= 60 then
table.insert(errors, {source, "longitude minutes >= 60"})
end
if long_m < 0 then
table.insert(errors, {source, "longitude minutes < 0"})
end
if long_s >= 60 then
table.insert(errors, {source, "longitude seconds >= 60"})
end
if long_s < 0 then
table.insert(errors, {source, "longitude seconds < 0"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "Missing longitude"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f:upper();
long_f = long_f:upper();
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "Missing longitude" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. lat_f
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. long_f
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "Missing latitude"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "Unable to parse latitude as a number:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
-- formatting for geohack: geohack expects D_N_D_E notation or D;D notation
-- wikiminiatlas doesn't support D;D notation
-- #coordinates parserfunction doesn't support negative decimals with NSWE
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "Unknown argument format"}}) .. '[[Category:Pages with malformed coordinate tags]]'
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
-- coordinates exist both here and on Wikidata, and can be compared.
ret = 'Coordinates on Wikidata'
elseif snaktype == 'somevalue' then
ret = 'Coordinates on Wikidata set to unknown value'
elseif snaktype == 'novalue' then
ret = 'Coordinates on Wikidata set to no value'
end
else
-- We have to either import the coordinates to Wikidata or remove them here.
ret = 'Coordinates not on Wikidata'
end
end
if ret then
return string.format('[[Category:%s]]', ret)
else
return ''
end
end
--[[
link
Simple function to export the coordinates link for other uses.
Usage:
{{#invoke:Coordinates | link }}
]]
function coordinates.link(frame)
return coord_link;
end
--[[
dec2dms
Wrapper to allow templates to call dec2dms directly.
Usage:
{{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix |
negative_suffix | precision }}
decimal_coordinate is converted to DMS format. If positive, the positive_suffix
is appended (typical N or E), if negative, the negative suffix is appended. The
specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail
to use.
]]
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
--[[
Helper function to determine whether to use D, DM, or DMS
format depending on the precision of the decimal input.
]]
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
--[[
dms2dec
Wrapper to allow templates to call dms2dec directly.
Usage:
{{#invoke:Coordinates | dms2dec | direction_flag | degrees |
minutes | seconds }}
Converts DMS values specified as degrees, minutes, seconds too decimal format.
direction_flag is one of N, S, E, W, and determines whether the output is
positive (i.e. N and E) or negative (i.e. S and W).
]]
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
--[[
coord
Main entry point for Lua function to replace {{coord}}
Usage:
{{#invoke:Coordinates | coord }}
{{#invoke:Coordinates | coord | lat | long }}
{{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }}
...
Refer to {{coord}} documentation page for many additional parameters and
configuration options.
Note: This function provides the visual display elements of {{coord}}. In
order to load coordinates into the database, the {{#coordinates:}} parser
function must also be called, this is done automatically in the Lua
version of {{coord}}.
]]
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
-- it and ti are short for inline,title and title,inline
local function isInline(s)
-- Finds whether coordinates are displayed inline.
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
-- Finds whether coordinates are displayed in the title.
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- Calls the parser function {{#coordinates:}}.
return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or ''
end
local text = ''
if isInline(Display) then
text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>'
end
if isInTitle(Display) then
-- Add to output since indicator content is invisible to Lua later on
if not isInline(Display) then
text = text .. '<span class="geo-inline-hidden noexcerpt">' .. contents .. Notes .. '</span>'
end
text = text .. displaytitle(contents .. Notes) .. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'testcases' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
--[[
coord2text
Extracts a single value from a transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coord2text | {{Coord}} | parameter }}
Valid values for the second parameter are: lat (signed integer), long (signed integer), type, scale, dim, region, globe, source
]]
function coordinates._coord2text(coord,type)
if coord == '' or type == '' or not type then return nil end
type = mw.text.trim(type)
if type == 'lat' or type == 'long' then
local result, negative = mw.text.split((mw.ustring.match(coord,'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ')
if type == 'lat' then
result, negative = result[1], 'S'
else
result, negative = result[2], 'W'
end
result = mw.text.split(result, '°')
if result[2] == negative then result[1] = '-'..result[1] end
return result[1]
else
return mw.ustring.match(coord, 'params=.-_' .. type .. ':(.-)[ _]')
end
end
function coordinates.coord2text(frame)
return coordinates._coord2text(frame.args[1],frame.args[2])
end
--[[
coordinsert
Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }}
Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation.
]]
function coordinates.coordinsert(frame)
-- for the 2nd or later integer parameter (the first is the coord template, as above)
for i, v in ipairs(frame.args) do
if i ~= 1 then
-- if we cannot find in the coord_template the i_th coordinsert parameter e.g. region
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
-- find from the params= up to the first possibly-present underscore
-- and append the i_th coordinsert parameter and a space
-- IDK why we're adding a space but it does seem somewhat convenient
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
-- if we can't find the vcard class
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
-- take something that looks like a coord template and add the vcard span with class and fn org class
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3'
)
-- then find anything from coordinates parameters to the 'end' and attach the title parameter
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(¶ms=[^&"<>%[%] ]*) ',
'%1&title=' .. mw.uri.encode(namestr) .. ' '
)
end
end
-- replace the existing indicator with a new indicator using the modified content
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-inline[^"]*">(.+)</span>)\127[^\127]*UNIQ%-%-indicator%-%x+%-%-?QINU[^\127]*\127',
function (inline, coord) return inline .. displaytitle(coord) end
)
return frame.args[1]
end
return coordinates
0lnyvr3c1d2wmo259odkxkon4fmsr1f
ढाँचा:Efn-lr
10
126502
1372343
1073180
2026-08-26T03:32:15Z
पर्वत सुवेदी
31224
/* */
1372343
wikitext
text/x-wiki
<includeonly>{{efn|name={{{name|}}}|reference={{{1|}}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
bog6or78nqxwgs7l90h5jitylirgzkt
ढाँचा:Efn-ur
10
126503
1372345
1073181
2026-08-26T03:33:24Z
पर्वत सुवेदी
31224
/* */
1372345
wikitext
text/x-wiki
<includeonly>{{efn|name={{{name|}}}|reference={{{1|}}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
bog6or78nqxwgs7l90h5jitylirgzkt
मोड्युल:Coordinates/styles.css
828
129117
1372353
1314959
2026-08-26T04:21:06Z
पर्वत सुवेदी
31224
1372353
sanitized-css
text/css
/* Geographical coordinates defaults. The classes "geo", "longitude", and
"latitude" are used by the [[Geo microformat]]. */
.geo-default,
.geo-dms,
.geo-dec {
display: inline;
}
.geo-nondefault,
.geo-multi-punct {
display: none;
}
.longitude,
.latitude {
white-space: nowrap;
}
c1sxbljkmwch6oev7gffqqpsgwmtnah
सिन्धुलीमाढी
0
148193
1372314
1370315
2026-08-25T15:08:29Z
Coolsan71
75463
1372314
wikitext
text/x-wiki
{{Distinguish|सिन्धुलीगढी|text=ऐतिहासिक किल्ला [[सिन्धुलीगढी]]}}
{{Infobox settlement
| name = सिन्धुलीमाढी
| settlement_type = जिल्ला [[सदरमुकाम]]
| other_name = सिन्धुली, सिन्धुली बजार
| subdivision_type = देश
| subdivision_name = {{झण्डा|नेपाल}}
| subdivision_type1 = [[नेपालका प्रदेशहरू|प्रदेश]]
| subdivision_name1 = [[बागमती प्रदेश|बागमती]]
| subdivision_type2 = [[नेपालका जिल्लाहरू|जिल्ला]]
| subdivision_name2 = [[सिन्धुली]]
| subdivision_type3 = [[नेपालका नगरपालिकाहरू|नगरपालिका]]
| subdivision_name3 = [[कमलामाई]]
| subdivision_type4 = वडाहरू
| subdivision_name4 = ४,५,६ र ७
| established_title = जिल्ला सदरमुकाम घोषित
| established_date = वि.सं. २०२३ पुष १८
| established_title1 = कमलामाई नगरपालिकाको भाग
| established_date1 = वि.सं. २०५३ चैत १४
| pushpin_map = Nepal Bagmati Pradesh#Nepal
| pushpin_mapsize = 300
| pushpin_map_caption = नक्सामा सिन्धुलीमाढी
| coordinates = {{coord|27|12|37|N|85|54|45|E|region:NP_type:city_source:GNS-enwiki|display=inline,title}}
| image_skyline = Sindhulimadhi 2020.jpg
| area_total_km2 = ८८.६८
| elevation_m = ५१०
| population_total = ३६४३६
| population_as_of = वि.सं. २०७८
| timezone1 = [[युटिसी+५:४५]] ([[नेपालको प्रमाणिक समय]])
| postal_code_type = हुलाक कोड
| postal_code = ४५९००
| area_code = ०४७
| image_caption = सिन्धुलीमाढीको दृश्य
| population_density_km2 = auto
| imagesize = 300
}}
'''सिन्धुलीमाढी''' वा '''सिन्धुलीमाडी''', जसलाई सामान्यतया '''सिन्धुली''' वा '''सिन्धुली बजार''' पनि भनिन्छ, नेपालको [[बागमती प्रदेश]] अन्तर्गत पर्ने [[सिन्धुली जिल्ला]]को सदरमुकाम तथा [[कमलामाई नगरपालिका]]को प्रशासनिक केन्द्र हो।<ref>{{Cite web |title=सिन्धुली सदरमुकामका जंगल खरानी हुँदै |url=https://ekantipur.com/bagmati-pradesh/2020/04/11/158657446003523508.html |access-date=२०२६-०२-२५ |website=Ekantipur}}</ref><ref name=":1" /><ref name=":0" /> यसको कुल क्षेत्रफल ८८.६८ वर्ग किलोमिटर रहेको छ। [[नेपालको बाह्रौँ राष्ट्रिय जनगणना, २०७८|वि.सं २०७८ सालको जनगणना]] अनुसार यहाँको जनसंख्या ३६,४३६ रहेको छ।<ref name=":2" />
सिन्धुलीमाढी सिन्धुली उपत्यकामा अवस्थित छ र यसमा कमलामाई नगरपालिकाका चार वटा वडाहरू पर्दछन्। यो राष्ट्रिय राजधानी [[काठमाडौँ]]बाट करिब १५० किलोमिटर तथा प्रदेश राजधानी [[हेटौँडा उपमहानगरपालिका|हेटौँडा]]बाट करिब १२० किलोमिटरको दूरीमा रहेको छ।
== पृष्ठभूमि ==
तत्कालिन श्री ५ को सरकारद्वारा नेपाल अधिराज्यलाई १४ अञ्चल र ७५ जिल्लामा विभाजन गर्ने वि.सं. २०१९ मङ्सिर ५ गतेको निर्णय र वि.सं. २०१९ पुष २ गते नेपाल गजेटमा प्रकाशित सूचना अनुसार सिन्धुली जिल्ला गठन गरि [[सिन्धुलीगढी]]लाई सदरमुकाम तोकिएको थियो।<ref>{{Cite web |title=नेपाल अधिराज्यलाई १४ अञ्चल ७५ जिल्लामा विभाजित |url=http://rajpatra.dop.gov.np/welcome/book/?ref=2685 |access-date=२०२६-०१-२१ |website=नेपाल गजेट, नेपाल सरकार}}</ref> वि.सं. २०२३ कार्तिक ३ गते तत्कालिन श्री ५ को सरकार गृह पञ्चायत मन्त्रालयद्वारा गरिएको निर्णय र वि.सं. २०२३ पुष १८ गते नेपाल राजपत्रमा प्रकाशित सूचना अनुसार सदरमुकाम सिन्धुलीमाढी कायम गरिएको थियो।<ref name=":0">{{Cite web |title=जिल्ला सदरमुकामहरू तोकेको बारे |url=http://rajpatra.dop.gov.np/welcome/book?ref=3851 |access-date=२०२६-०१-२१ |website=नेपाल राजपत्र, नेपाल सरकार}}</ref> वि.सं. २०५३ चैत १३ गतेसम्म सिद्धेश्वर गाउँ विकास समितिको भाग रहेको सिन्धुलीमाढी नेपाल सरकारको निर्णय बमोजिम वि.सं. २०५३ चैत १४ गते सिद्धेश्वर र भिमान गाउँ विकास समिति गाभिएर बनेको [[कमलामाई नगरपालिका]]को भाग भएको थियो।<ref name=":1">{{Cite web |title=नगरपालिका क्षेत्र तोकी बिभाजन गरेको |url=http://rajpatra.dop.gov.np/welcome/book/?ref=17917 |access-date=२०२६-०१-२१ |website=नेपाल राजपत्र, नेपाल सरकार}}</ref>
== विभाजन ==
{| class="wikitable"
|+कमलामाई नगरपालिका<ref name=":2">{{Cite web |title=वडा प्रोफाइल |url=https://kamalamaimun.gov.np/ne/ward-profile |access-date=२०२६-०१-२१ |website=कमलामाई नगरपालिका }} {{Webarchive|url=https://web.archive.org/web/20260211151605/https://www.kamalamaimun.gov.np/ne/ward-profile |date=2026-02-11 }}</ref>
!हालको वडा
!साविक वडाहरू
!'''क्षेत्रफल (किमी'''<sup>२</sup>''')'''
!जनसंख्या (२०७८)
!केन्द्र
|-
|४
|१,२,५ र ९
|२७.१२
|८,८१८
|ढुङ्ग्रेबास
|-
|५
|४
|२६.८४
|८,२९२
|मधुटार
|-
|६
|६
|५.९३
|१२,४९८
|माढीबजार
|-
|७
|७ र ८
|२८.७९
|६,८२८
|माझीटार
|}
== सन्दर्भ सामग्रीहरू ==
{{सन्दर्भसूची}}
{{सिन्धुली जिल्लाका स्थानीय तहहरू}}
[[श्रेणी:नेपालका जिल्ला सदरमुकामहरू]]
oy86qkvlsyc1sl38re7k9c5mcs0r85l
सोल्डर
0
151415
1372311
1372304
2026-08-25T13:21:57Z
Bishaldev100
28807
1372311
wikitext
text/x-wiki
[[चित्र:Solder_on_spool.jpeg|अङ्गुठाकार|सोल्डर, 1. mm मिमी व्यासमा बाहिर तानिएको र स्पूलको वरिपरि घाउ/झुकेको]]
[[चित्र:Solderedjoint.jpg|अङ्गुठाकार|सोल्डर्ड एक [[विद्युत प्रबाह बोर्ड|विद्युत सर्किट बोर्ड]]को पछाडि एक घटक को एक थ्रू-पिन मा एक तार संलग्न गर्न प्रयोग]]
'''सोल्डर''' ({{IPAc-en|UK|ˈ|s|ɒ|l|d|ə|,_|ˈ|s|ə|ʊ|l|d|ə}};<ref name="OED">{{Cite encyclopedia|url=http://www.lexico.com/definition/solder|archive-url=https://web.archive.org/web/20220110071207/https://www.lexico.com/definition/solder|url-status=dead|archive-date=January 10, 2022|title=solder|dictionary=[[Lexico]] UK English Dictionary|publisher=[[Oxford University Press]]}}</ref> [[:en:North_American_English|NA]]: {{IPAc-en|ˈ|s|ɒ|d|ər}})<ref>{{cite encyclopedia|title=solder|encyclopedia=[[Oxford American Dictionary]]|publisher=[[Oxford University Press]]|year=1980}}</ref> पग्लने धातुहरूको [[मिश्रधातु|मिश्र धातु]] हो, जसको प्रयोग धातुका टुक्राहरूबीच स्थायी बन्धन (जोड) बनाउन गरिन्छ। जोडिने भागहरूलाई भिजाउनका लागि सोल्डरलाई पगालिन्छ, जहाँ यो सेलाएपछि टुक्राहरूमा टाँसिन्छ र तिनीहरूलाई जोड्छ। सोल्डरको रूपमा प्रयोग गर्न उपयुक्त धातु वा मिश्रधातुहरूको पग्लने विन्दु जोडिने टुक्राहरूको भन्दा कम हुनुपर्छ। सोल्डर अक्सीकरण र क्षयकारी प्रभावहरूबाट पनि सुरक्षित हुनुपर्छ, जसले समयसँगै जोडलाई कमजोर बनाउन सक्छ। विद्युतीय जडानहरू बनाउन प्रयोग गरिने सोल्डरमा कम विद्युतीय प्रतिरोध (उच्च चालकता) र टिकाउ जोड जस्ता अनुकूल विद्युतीय गुणहरू हुन पनि आवश्यक छ।
== संरचना ==
=== सिसामा-आधारित ===
[[चित्र:60-40_Solder.jpg|अङ्गुठाकार| ६०/४० [[टिन]]-सीसा सोल्डर ]]
[[टिन]]-[[सीसा]] (Sn-Pb) सोल्डरहरू, जसलाई सफ्ट सोल्डर (नरम सोल्डर) पनि भनिन्छ, तौलको आधारमा ५% देखि ७०% सम्म टिनको मात्रामा व्यावसायिक रूपमा उपलब्ध हुन्छन्। टिनको मात्रा जति बढी हुन्छ, सोल्डरको तन्किने र काटिने क्षमता वा शक्ति त्यति नै बढी हुन्छ। सीसाले 'टिन व्हिस्कर्स' (टिनमा आउने मसिना रौं जस्ता रेसाहरू) बन्नबाट रोक्छ, यद्यपि यसको निश्चित प्रक्रिया अझै अज्ञात छ। आज भोलि, यो समस्या कम गर्न धेरै प्रविधिहरू प्रयोग गरिन्छ, जसमा तताउने र सेलाउने प्रक्रिया (annealing) मा परिवर्तन, तामा र निकेल जस्ता तत्वहरूको मिश्रण, र कन्फर्मल कोटिंग्स (conformal coatings) को प्रयोग समावेश छन्। विद्युतीय सोल्डरिङका लागि सामान्यतया प्रयोग हुने मिश्रधातुहरू ६०/४० [[टिन]]-सीसा हुन्, जुन {{Convert|188|°C|°F}} मा पग्लिन्छ, र ६३/३७ [[टिन]]-सीसा हुन् जुन मुख्य रूपमा विद्युतीय र इलेक्ट्रोनिक कामहरूमा प्रयोग गरिन्छ।
=== सिसा-मुक्त ===
==सन्दर्भ सामग्रीहरू==
{{सन्दर्भसूची}}
nfy8lgcne1e0bpjj9fujlu065q12r0o
मच्छिन्द्र बहाल
0
151416
1372306
2026-08-25T12:05:07Z
Bishaldev100
28807
"[[:en:Special:Redirect/revision/1288866042|Jana bahal]]"पृष्ठलाई अनुवाद गरि सृजना गरियो
1372306
wikitext
text/x-wiki
[[चित्र:Old_Kathmandu0668_Janabaha.JPG|अङ्गुठाकार|मच्छिन्द्र बहालमा करुणामयको मन्दिर]]
'''मच्छिन्द्र बहाल''' ('''नेपाल भाषा''' जन बहाः) प्राय: जनाबहा: भनिन्छ वा कनक चैत्य महाविहार पनि भनिन्छ, चौकको बीचमा पूर्ण रूपमा निर्मित बहुतले मन्दिर भएको केही बहालहरू मध्ये एक हो। यस मन्दिरमा विराजमान प्रमुख देवता [[सेतो मछिन्द्ननाथ मन्दिर|सेतो मछिन्द्रनाथ]] हुन्, जसलाई जनबहा द्यो, [[अवलोकितेश्वर|आर्यवलोकितेश्वर]] र करूणामयका नामले पनि चिनिन्छ।<ref>{{Cite web |date=2023-08-28 |title=आजदेखि बहाल बहीहरूमा बहिद्यः प्रदर्शन |url=https://maitrinews.com/2023/08/28/101636 |access-date=2024-02-05 |work=Maitri News}}</ref><ref>{{Citation |last=Banjara |first=Anup |title=Historical significance and cultural aspects of the Ashok Vinayak in Kathmandu |date=2023}}</ref>
== प्रमुख सांस्कृतिक गतिविधिहरू ==
मुख्य [[सेतो मच्छिन्द्रनाथको रथयात्रा]] बाहेक, दर्शनार्थीहरू—मुख्यतया बौद्ध धर्मावलम्बीहरू—सेतो मछिन्द्रनाथको दर्शन र प्रार्थना गर्न आउने गर्छन्। उनीहरू [[जपमाला]]मा उनिएका दानाहरू गन्दै र सार्दै प्रार्थना गर्छन्। [[नेवार बौद्ध]]हरू प्रत्येक अष्टमीमा सप्तविध अनुत्तर सत्वपूजा गरेर र पाते (छत्र) चढाएर उपोसधव्रत (एक प्रकारको उपवास) बस्छन्। उनीहरू शतपूजा पनि गर्छन्, जसमा तोन्छा, बत्ती र प्रसाद सबै १००० को बराबर मात्रामा चढाइन्छ। कनकमुनि बुद्धको चैत्य परिसरमा शाक्य, बुद्धाचार्य र बज्राचार्य जातका युवा पुरुषहरूका लागि 'बारे छुयेगु' (बरेछुइउ) संस्कार गरिन्छ। नेवारहरू प्रायः मन्दिरको वरिपरि पालाहरू बाल्ने वा १०८ वटा दियो बाल्ने कार्यक्रम आयोजना गर्छन्। हिन्दूहरू द्वारा यो मन्दिर मुख्य गरी पूर्णिमा, अष्टमी र संहू (सङ्क्रान्ति) को दिनमा भ्रमण गरिन्छ। मन्दिरको दैनिकी पूजाआजा पुजारीहरूद्वारा बिहान करिब ४ बजेदेखि सुरु हुन्छ।{{Buddhist temples in Nepal}}
ji2b7i1ngel1i0nmbnyj7uqhtoszggc
1372307
1372306
2026-08-25T12:05:28Z
Bishaldev100
28807
/* प्रमुख सांस्कृतिक गतिविधिहरू */
1372307
wikitext
text/x-wiki
[[चित्र:Old_Kathmandu0668_Janabaha.JPG|अङ्गुठाकार|मच्छिन्द्र बहालमा करुणामयको मन्दिर]]
'''मच्छिन्द्र बहाल''' ('''नेपाल भाषा''' जन बहाः) प्राय: जनाबहा: भनिन्छ वा कनक चैत्य महाविहार पनि भनिन्छ, चौकको बीचमा पूर्ण रूपमा निर्मित बहुतले मन्दिर भएको केही बहालहरू मध्ये एक हो। यस मन्दिरमा विराजमान प्रमुख देवता [[सेतो मछिन्द्ननाथ मन्दिर|सेतो मछिन्द्रनाथ]] हुन्, जसलाई जनबहा द्यो, [[अवलोकितेश्वर|आर्यवलोकितेश्वर]] र करूणामयका नामले पनि चिनिन्छ।<ref>{{Cite web |date=2023-08-28 |title=आजदेखि बहाल बहीहरूमा बहिद्यः प्रदर्शन |url=https://maitrinews.com/2023/08/28/101636 |access-date=2024-02-05 |work=Maitri News}}</ref><ref>{{Citation |last=Banjara |first=Anup |title=Historical significance and cultural aspects of the Ashok Vinayak in Kathmandu |date=2023}}</ref>
== प्रमुख सांस्कृतिक गतिविधिहरू ==
मुख्य [[सेतो मच्छिन्द्रनाथको रथयात्रा]] बाहेक, दर्शनार्थीहरू—मुख्यतया बौद्ध धर्मावलम्बीहरू—सेतो मछिन्द्रनाथको दर्शन र प्रार्थना गर्न आउने गर्छन्। उनीहरू [[जपमाला]]मा उनिएका दानाहरू गन्दै र सार्दै प्रार्थना गर्छन्। [[नेवार बौद्ध]]हरू प्रत्येक अष्टमीमा सप्तविध अनुत्तर सत्वपूजा गरेर र पाते (छत्र) चढाएर उपोसधव्रत (एक प्रकारको उपवास) बस्छन्। उनीहरू शतपूजा पनि गर्छन्, जसमा तोन्छा, बत्ती र प्रसाद सबै १००० को बराबर मात्रामा चढाइन्छ। कनकमुनि बुद्धको चैत्य परिसरमा शाक्य, बुद्धाचार्य र बज्राचार्य जातका युवा पुरुषहरूका लागि 'बारे छुयेगु' (बरेछुइउ) संस्कार गरिन्छ। नेवारहरू प्रायः मन्दिरको वरिपरि पालाहरू बाल्ने वा १०८ वटा दियो बाल्ने कार्यक्रम आयोजना गर्छन्। हिन्दूहरू द्वारा यो मन्दिर मुख्य गरी पूर्णिमा, अष्टमी र संहू (सङ्क्रान्ति) को दिनमा भ्रमण गरिन्छ। मन्दिरको दैनिकी पूजाआजा पुजारीहरूद्वारा बिहान करिब ४ बजेदेखि सुरु हुन्छ।{{Buddhist temples in Nepal}}
==सन्दर्भ सामग्रीहरू==
{{सन्दर्भसूची}}
65wkayfci2va1tdhqdutky3hj7xfyvm
1372308
1372307
2026-08-25T12:08:01Z
Bishaldev100
28807
1372308
wikitext
text/x-wiki
[[चित्र:Old_Kathmandu0668_Janabaha.JPG|अङ्गुठाकार|मच्छिन्द्र बहालमा करुणामयको मन्दिर]]
'''मच्छिन्द्र बहाल''' ('''नेपाल भाषा''' जन बहाः) प्राय: जनाबहा: भनिन्छ वा कनक चैत्य महाविहार पनि भनिन्छ, कतै जन बहा र जमाल बह जस्ता नामले पनि चिनिन्छ । यी सबै नामहरु जमलमा मूर्ति भेटिएको किंवदन्तीसँग जोड्ने गरिन्छ । जमल क्षेत्रका रैथानेले सेतो मत्स्येन्द्रनाथलाई जन बहा द्यः, जनम द्याः, लोकेश्वर वा करुणामय भन्छन् । आफ्नो क्षेत्रबाट जनबहा द्यः लगेको ठाउँ भएकोले त्यसैको अपभ्रंश भएर जनबहाल भएको शाक्य बताउँछन् । जमल र आसपासका रैथानेबाहेक अरुले त्यो क्षेत्रलाई मच्छिन्द्रबहाल भन्छन् ।<ref>{{Cite web |title=जमलसँग जोडिएको मच्छिन्द्र बहालको साइनो |url=https://www.onlinekhabar.com/2021/07/977003/%e0%a4%9c%e0%a4%ae%e0%a4%b2%e0%a4%b8%e0%a4%81%e0%a4%97-%e0%a4%9c%e0%a5%8b%e0%a4%a1%e0%a4%bf%e0%a4%8f%e0%a4%95%e0%a5%8b-%e0%a4%ae%e0%a4%9a%e0%a5%8d%e0%a4%9b%e0%a4%bf%e0%a4%a8%e0%a5%8d%e0%a4%a6%e0%a5%8d |access-date=2026-08-25 |website=Online Khabar |language=en-US}}</ref>
चौकको बीचमा पूर्ण रूपमा निर्मित बहुतले मन्दिर भएको केही बहालहरू मध्ये एक हो। यस मन्दिरमा विराजमान प्रमुख देवता [[सेतो मछिन्द्ननाथ मन्दिर|सेतो मछिन्द्रनाथ]] हुन्, जसलाई जनबहा द्यो, [[अवलोकितेश्वर|आर्यवलोकितेश्वर]] र करूणामयका नामले पनि चिनिन्छ।<ref>{{Cite web |date=2023-08-28 |title=आजदेखि बहाल बहीहरूमा बहिद्यः प्रदर्शन |url=https://maitrinews.com/2023/08/28/101636 |access-date=2024-02-05 |work=Maitri News}}</ref><ref>{{Citation |last=Banjara |first=Anup |title=Historical significance and cultural aspects of the Ashok Vinayak in Kathmandu |date=2023}}</ref>
== प्रमुख सांस्कृतिक गतिविधिहरू ==
मुख्य [[सेतो मच्छिन्द्रनाथको रथयात्रा]] बाहेक, दर्शनार्थीहरू—मुख्यतया बौद्ध धर्मावलम्बीहरू—सेतो मछिन्द्रनाथको दर्शन र प्रार्थना गर्न आउने गर्छन्। उनीहरू [[जपमाला]]मा उनिएका दानाहरू गन्दै र सार्दै प्रार्थना गर्छन्। [[नेवार बौद्ध]]हरू प्रत्येक अष्टमीमा सप्तविध अनुत्तर सत्वपूजा गरेर र पाते (छत्र) चढाएर उपोसधव्रत (एक प्रकारको उपवास) बस्छन्। उनीहरू शतपूजा पनि गर्छन्, जसमा तोन्छा, बत्ती र प्रसाद सबै १००० को बराबर मात्रामा चढाइन्छ। कनकमुनि बुद्धको चैत्य परिसरमा शाक्य, बुद्धाचार्य र बज्राचार्य जातका युवा पुरुषहरूका लागि 'बारे छुयेगु' (बरेछुइउ) संस्कार गरिन्छ। नेवारहरू प्रायः मन्दिरको वरिपरि पालाहरू बाल्ने वा १०८ वटा दियो बाल्ने कार्यक्रम आयोजना गर्छन्। हिन्दूहरू द्वारा यो मन्दिर मुख्य गरी पूर्णिमा, अष्टमी र संहू (सङ्क्रान्ति) को दिनमा भ्रमण गरिन्छ। मन्दिरको दैनिकी पूजाआजा पुजारीहरूद्वारा बिहान करिब ४ बजेदेखि सुरु हुन्छ।{{Buddhist temples in Nepal}}
==सन्दर्भ सामग्रीहरू==
{{सन्दर्भसूची}}
oii1zqt0u7pxed0i20yb6u5o9xz8tmh
1372309
1372308
2026-08-25T12:15:25Z
Bishaldev100
28807
1372309
wikitext
text/x-wiki
{{Infobox street
| name = मच्छिन्द्र बहाल
| marker_image =
| other_name =
| image = Old_Kathmandu0668_Janabaha.JPG
| caption = मच्छिन्द्र बहालमा करुणामयको मन्दिर
| coordinates = {{coord|27|42|45.40|N|85|19|4.70|E}}
| native_name = {{native name|new|जन बहाः}}
| former_names =
| maint =
| length_mi =
| length_ref =
| length_m =
| length_ft =
| width =
| addresses = [[काठमाडौं]], [[असन]]
| location =
| postal_code = 44600
| terminus_a =
| direction_a =
| junction =
| terminus_b =
| direction_b =
| north =
| east =
| south =
| west =
| commissioning_date =
| construction_start_date =
| completion_date =
| inauguration_date = <!-- {{Start date|YYYY|MM|DD}} -->
| demolition_date =
}}
'''मच्छिन्द्र बहाल''' ('''नेपाल भाषा''' जन बहाः) प्राय: जनाबहा: भनिन्छ वा कनक चैत्य महाविहार पनि भनिन्छ, कतै जन बहा र जमाल बह जस्ता नामले पनि चिनिन्छ । यी सबै नामहरु जमलमा मूर्ति भेटिएको किंवदन्तीसँग जोड्ने गरिन्छ । जमल क्षेत्रका रैथानेले सेतो मत्स्येन्द्रनाथलाई जन बहा द्यः, जनम द्याः, लोकेश्वर वा करुणामय भन्छन् । आफ्नो क्षेत्रबाट जनबहा द्यः लगेको ठाउँ भएकोले त्यसैको अपभ्रंश भएर जनबहाल भएको शाक्य बताउँछन् । जमल र आसपासका रैथानेबाहेक अरुले त्यो क्षेत्रलाई मच्छिन्द्रबहाल भन्छन् ।<ref>{{Cite web |title=जमलसँग जोडिएको मच्छिन्द्र बहालको साइनो |url=https://www.onlinekhabar.com/2021/07/977003/%e0%a4%9c%e0%a4%ae%e0%a4%b2%e0%a4%b8%e0%a4%81%e0%a4%97-%e0%a4%9c%e0%a5%8b%e0%a4%a1%e0%a4%bf%e0%a4%8f%e0%a4%95%e0%a5%8b-%e0%a4%ae%e0%a4%9a%e0%a5%8d%e0%a4%9b%e0%a4%bf%e0%a4%a8%e0%a5%8d%e0%a4%a6%e0%a5%8d |access-date=2026-08-25 |website=Online Khabar |language=en-US}}</ref>
चौकको बीचमा पूर्ण रूपमा निर्मित बहुतले मन्दिर भएको केही बहालहरू मध्ये एक हो। यस मन्दिरमा विराजमान प्रमुख देवता [[सेतो मछिन्द्ननाथ मन्दिर|सेतो मछिन्द्रनाथ]] हुन्, जसलाई जनबहा द्यो, [[अवलोकितेश्वर|आर्यवलोकितेश्वर]] र करूणामयका नामले पनि चिनिन्छ।<ref>{{Cite web |date=2023-08-28 |title=आजदेखि बहाल बहीहरूमा बहिद्यः प्रदर्शन |url=https://maitrinews.com/2023/08/28/101636 |access-date=2024-02-05 |work=Maitri News}}</ref><ref>{{Citation |last=Banjara |first=Anup |title=Historical significance and cultural aspects of the Ashok Vinayak in Kathmandu |date=2023}}</ref>
== प्रमुख सांस्कृतिक गतिविधिहरू ==
मुख्य [[सेतो मच्छिन्द्रनाथको रथयात्रा]] बाहेक, दर्शनार्थीहरू—मुख्यतया बौद्ध धर्मावलम्बीहरू—सेतो मछिन्द्रनाथको दर्शन र प्रार्थना गर्न आउने गर्छन्। उनीहरू [[जपमाला]]मा उनिएका दानाहरू गन्दै र सार्दै प्रार्थना गर्छन्। [[नेवार बौद्ध]]हरू प्रत्येक अष्टमीमा सप्तविध अनुत्तर सत्वपूजा गरेर र पाते (छत्र) चढाएर उपोसधव्रत (एक प्रकारको उपवास) बस्छन्। उनीहरू शतपूजा पनि गर्छन्, जसमा तोन्छा, बत्ती र प्रसाद सबै १००० को बराबर मात्रामा चढाइन्छ। कनकमुनि बुद्धको चैत्य परिसरमा शाक्य, बुद्धाचार्य र बज्राचार्य जातका युवा पुरुषहरूका लागि 'बारे छुयेगु' (बरेछुइउ) संस्कार गरिन्छ। नेवारहरू प्रायः मन्दिरको वरिपरि पालाहरू बाल्ने वा १०८ वटा दियो बाल्ने कार्यक्रम आयोजना गर्छन्। हिन्दूहरू द्वारा यो मन्दिर मुख्य गरी पूर्णिमा, अष्टमी र संहू (सङ्क्रान्ति) को दिनमा भ्रमण गरिन्छ। मन्दिरको दैनिकी पूजाआजा पुजारीहरूद्वारा बिहान करिब ४ बजेदेखि सुरु हुन्छ।{{Buddhist temples in Nepal}}
==सन्दर्भ सामग्रीहरू==
{{सन्दर्भसूची}}
t720cglexg0u6oxb3vky8epygf314ya
श्रावणी मेला
0
151417
1372329
2026-08-26T01:18:36Z
Rajeeb bastola
39875
"[[:en:Special:Redirect/revision/1368368252|Shravani Mela]]"पृष्ठलाई अनुवाद गरि सृजना गरियो
1372329
wikitext
text/x-wiki
<templatestyles src="Template:Template for discussion/styles.css" />{{Infobox recurring event
| native_name_lang =
| logo =
| logo_size =
| image = File:Baidyanathdham.jpg
| image_size =
| caption = Devotees at Shravani Mela in [[Deoghar]]
| genre = [[Pilgrimage]]
| dates =
| frequency = Annually
| venue = [[Baidyanath Temple]]
| location = [[Deoghar]], [[Jharkhand]], India
| coordinates = {{coord|24|29|33|N|86|42|00|E||display=inline,title}}
| participants = 50 Lac+ (2025)<ref>{{Cite news |title=Deoghar Shravani Mela 2025 concludes, over 50 lakh devotees offer prayers; Sparsh Puja begins |url=https://navbharat... |work=Navbharat Times |date=2025-08-09 |access-date=2026-08-08}}</ref>
| budget =
| patrons = *[[Government of Jharkhand]]
*[[Government of Bihar]]
| homepage =
}}
<templatestyles src="Hlist/styles.css"></templatestyles><templatestyles src="Plainlist/styles.css"></templatestyles><templatestyles src="Module:Sidebar/styles.css"></templatestyles>{{हिन्दु धर्म बाकस}}'''श्रावणी मेला''' भारतको [[झारखण्ड]] देवघर रहेको [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ धाम]] मन्दिरमा श्रावण (जुलाई-अगस्ट) महिनामा मनाइने एक महिना लामो हिन्दू चाड हो।<ref>{{Cite web |title=Deoghar Authorities Ensure Smooth Shravani Mela |url=https://www.news18.com/india/shravani-mela-deoghar-arrangements |access-date=2024-02-01 |website=News18}}</ref> यो पर्व भारतको सबैभन्दा ठुलो धार्मिक जमघटहरू मध्ये एक हो, जसले लाखौं भक्तहरू आकर्षित गर्दछ, मुख्यतया काँवरीयाहरू, जसले [[गङ्गा नदी|गङ्गा]] भगवान [[शिव]] पवित्र जल चढाउन तीर्थयात्रा गर्छन।<ref>{{Cite journal |last=Verma |first=Amit |year=2020 |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99}}</ref><ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
== महत्व ==
श्रावणी मेला भगवान [[शिव]] मा समर्पित छ र यसलाई अत्यन्त शुभ मानिन्छ। [[कांवड यात्रा|काँवर यात्रा]] भनेर पनि चिनिने यस [[तीर्थयात्रा]] भक्तहरूले सुल्तानगञ्ज अजगाइबिनाथ धाममा [[गङ्गा नदी|गङ्गा]] पानी सङ्कलन गरेर लगभग १०५ किलोमिटर पैदल हिँडेर देवघर [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] पुर्याउँछन्। यात्रा भक्ति, तपस्या र शुद्धताको प्रतीक हो <ref>{{Cite journal |last=Verma |first=Amit |year=2020 |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99}}</ref>
== अनुष्ठानहरू ==
* काँवरीया भनेर चिनिने भक्तहरूले केसर रङको लुगा लगाउँछन् र काँवर भनिने सजाइएको बाँस संरचनामा सन्तुलित भाँडोमा पवित्र पानी बोक्छन्।<ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
* तीर्थयात्रा सुल्तानगञ्ज अजगाइबिनाथ धामबाट सुरु हुन्छ, जहाँ [[गङ्गा नदी|गङ्गा]] उत्तरतर्फ बग्छ, जसले यसलाई पानी सङ्कलनका लागि पवित्र बनाउँछ।<ref>{{Cite journal |last=Sharma |first=Anita |year=2021 |title=Sacred Geography of Indian Pilgrimages |journal=Journal of Religious Studies |volume=45 |issue=3 |pages=112–127}}</ref>
* भक्तहरू नंगे खुट्टा हिँड्छन् र यात्राको क्रममा काँवरलाई भुइँमा राख्न अनुमति दिइँदैन।<ref>{{Cite book|title=Hindu Festivals and Pilgrimages}}</ref>
* देवघर पुगेपछि, उनीहरूले पवित्र पानीले [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] अभिषेक ([[शिव]] लिङ्गको धार्मिक स्नान) गर्छन्।<ref>{{Cite news|url=https://www.hindustantimes.com/india-news/baba-baidyanath-dham-abshishek|title=Thousands Perform Abhishek at Baba Baidyanath Dham|date=2023-08-10|work=Hindustan Times|access-date=2024-02-01}}</ref>
== प्रमुख आकर्षणहरू ==
* '''[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]'''-भगवान [[शिव]] को बाह्र ज्योतिर्लिंगहरू मध्ये एक।<ref>{{Cite book|title=Jyotirlingas of India}}</ref>
* शिवगङ्गा ताल-मन्दिर नजिकैको एउटा पवित्र पोखरी जहाँ भक्तहरूले प्रार्थना गर्नु अघि डुबकी लगाउँछन्।<ref>{{Cite web |title=Sacred Ponds in Hinduism |url=https://www.indiaheritage.org/sacred-ponds-in-hinduism/ |access-date=2024-02-01}}</ref>
* बाबा अजगाइबिनाथ मन्दिर-तीर्थयात्रीहरूले पानी सङ्कलन गर्ने मन्दिर र स्थान र यसरी श्रावणी मेलाको सुरुवात हुन्छ। <ref>{{Cite book|url=https://www.google.co.in/books/edition/Pilgrimage_Centres_of_India/Qqei_Wo1qXwC?hl=en&gbpv=1&dq=ajgaibinath+dham&pg=PA186&printsec=frontcover|title=Pilgrimage Centres of India|date=2003}}</ref>
* बसुकिनाथ मन्दिर-[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बैद्यनाथ धाम]] प्रार्थना गरेपछि [[तीर्थयात्रा|तीर्थयात्रीहरू]] भ्रमण गर्ने महत्त्वपूर्ण मन्दिर।<ref>{{Cite news|url=https://www.ndtv.com/religion/basukinath-temple-history-and-significance-4283619|title=Basukinath Temple: A Pilgrim's Guide|date=2023-08-15|work=NDTV|access-date=2024-02-01}}</ref>
== पनि हेर्नुहोस् ==
* [[कांवड यात्रा|काँवर यात्रा]]
* [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]
* सुल्तानगञ्ज
== सन्दर्भहरू ==
<references />
[[श्रेणी:हिन्दु चाडपर्वहरू]]
0x0vos7l9bit9p1a10f4qslaxnab628
1372330
1372329
2026-08-26T01:20:37Z
Rajeeb bastola
39875
1372330
wikitext
text/x-wiki
<templatestyles src="Template:Template for discussion/styles.css" />{{Infobox recurring event
| native_name_lang =
| logo =
| logo_size =
| image = File:Baidyanathdham.jpg
| image_size =
| caption = [[देवघर]]को श्रावणी मेलामा भक्तजन
| genre = [[Pilgrimage]]
| dates =
| frequency = Annually
| venue = [[Baidyanath Temple]]
| location = [[Deoghar]], [[Jharkhand]], India
| coordinates = {{coord|24|29|33|N|86|42|00|E||display=inline,title}}
| participants = 50 Lac+ (2025)<ref>{{Cite news |title=Deoghar Shravani Mela 2025 concludes, over 50 lakh devotees offer prayers; Sparsh Puja begins |url=https://navbharat... |work=Navbharat Times |date=2025-08-09 |access-date=2026-08-08}}</ref>
| budget =
| patrons = *[[Government of Jharkhand]]
*[[Government of Bihar]]
| homepage =
}}
<templatestyles src="Hlist/styles.css"></templatestyles><templatestyles src="Plainlist/styles.css"></templatestyles><templatestyles src="Module:Sidebar/styles.css"></templatestyles>{{हिन्दु धर्म बाकस}}'''श्रावणी मेला''' भारतको [[झारखण्ड]] देवघर रहेको [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ धाम]] मन्दिरमा श्रावण (जुलाई-अगस्ट) महिनामा मनाइने एक महिना लामो हिन्दू चाड हो।<ref>{{Cite web |title=Deoghar Authorities Ensure Smooth Shravani Mela |url=https://www.news18.com/india/shravani-mela-deoghar-arrangements |access-date=2024-02-01 |website=News18}}</ref> यो पर्व भारतको सबैभन्दा ठुलो धार्मिक जमघटहरू मध्ये एक हो, जसले लाखौं भक्तहरू आकर्षित गर्दछ, मुख्यतया काँवरीयाहरू, जसले [[गङ्गा नदी|गङ्गा]] भगवान [[शिव]] पवित्र जल चढाउन तीर्थयात्रा गर्छन।<ref>{{Cite journal |last=Verma |first=Amit |year=2020 |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99}}</ref><ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
== महत्व ==
श्रावणी मेला भगवान [[शिव]] मा समर्पित छ र यसलाई अत्यन्त शुभ मानिन्छ। [[कांवड यात्रा|काँवर यात्रा]] भनेर पनि चिनिने यस [[तीर्थयात्रा]] भक्तहरूले सुल्तानगञ्ज अजगाइबिनाथ धाममा [[गङ्गा नदी|गङ्गा]] पानी सङ्कलन गरेर लगभग १०५ किलोमिटर पैदल हिँडेर देवघर [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] पुर्याउँछन्। यात्रा भक्ति, तपस्या र शुद्धताको प्रतीक हो <ref>{{Cite journal |last=Verma |first=Amit |year=2020 |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99}}</ref>
== अनुष्ठानहरू ==
* काँवरीया भनेर चिनिने भक्तहरूले केसर रङको लुगा लगाउँछन् र काँवर भनिने सजाइएको बाँस संरचनामा सन्तुलित भाँडोमा पवित्र पानी बोक्छन्।<ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
* तीर्थयात्रा सुल्तानगञ्ज अजगाइबिनाथ धामबाट सुरु हुन्छ, जहाँ [[गङ्गा नदी|गङ्गा]] उत्तरतर्फ बग्छ, जसले यसलाई पानी सङ्कलनका लागि पवित्र बनाउँछ।<ref>{{Cite journal |last=Sharma |first=Anita |year=2021 |title=Sacred Geography of Indian Pilgrimages |journal=Journal of Religious Studies |volume=45 |issue=3 |pages=112–127}}</ref>
* भक्तहरू नंगे खुट्टा हिँड्छन् र यात्राको क्रममा काँवरलाई भुइँमा राख्न अनुमति दिइँदैन।<ref>{{Cite book|title=Hindu Festivals and Pilgrimages}}</ref>
* देवघर पुगेपछि, उनीहरूले पवित्र पानीले [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] अभिषेक ([[शिव]] लिङ्गको धार्मिक स्नान) गर्छन्।<ref>{{Cite news|url=https://www.hindustantimes.com/india-news/baba-baidyanath-dham-abshishek|title=Thousands Perform Abhishek at Baba Baidyanath Dham|date=2023-08-10|work=Hindustan Times|access-date=2024-02-01}}</ref>
== प्रमुख आकर्षणहरू ==
* '''[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]'''-भगवान [[शिव]] को बाह्र ज्योतिर्लिंगहरू मध्ये एक।<ref>{{Cite book|title=Jyotirlingas of India}}</ref>
* शिवगङ्गा ताल-मन्दिर नजिकैको एउटा पवित्र पोखरी जहाँ भक्तहरूले प्रार्थना गर्नु अघि डुबकी लगाउँछन्।<ref>{{Cite web |title=Sacred Ponds in Hinduism |url=https://www.indiaheritage.org/sacred-ponds-in-hinduism/ |access-date=2024-02-01}}</ref>
* बाबा अजगाइबिनाथ मन्दिर-तीर्थयात्रीहरूले पानी सङ्कलन गर्ने मन्दिर र स्थान र यसरी श्रावणी मेलाको सुरुवात हुन्छ। <ref>{{Cite book|url=https://www.google.co.in/books/edition/Pilgrimage_Centres_of_India/Qqei_Wo1qXwC?hl=en&gbpv=1&dq=ajgaibinath+dham&pg=PA186&printsec=frontcover|title=Pilgrimage Centres of India|date=2003}}</ref>
* बसुकिनाथ मन्दिर-[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बैद्यनाथ धाम]] प्रार्थना गरेपछि [[तीर्थयात्रा|तीर्थयात्रीहरू]] भ्रमण गर्ने महत्त्वपूर्ण मन्दिर।<ref>{{Cite news|url=https://www.ndtv.com/religion/basukinath-temple-history-and-significance-4283619|title=Basukinath Temple: A Pilgrim's Guide|date=2023-08-15|work=NDTV|access-date=2024-02-01}}</ref>
== पनि हेर्नुहोस् ==
* [[कांवड यात्रा|काँवर यात्रा]]
* [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]
* सुल्तानगञ्ज
== सन्दर्भहरू ==
<references />
[[श्रेणी:हिन्दु चाडपर्वहरू]]
3hy545btif4xtwtdn53edf9fscixfaj
1372331
1372330
2026-08-26T01:22:15Z
Rajeeb bastola
39875
1372331
wikitext
text/x-wiki
{{Short description|Hindu pilgrimage and festival in India}}
{{Infobox recurring event
| native_name_lang =
| logo =
| logo_size =
| image = File:Baidyanathdham.jpg
| image_size =
| caption = [[देवघर]]को श्रावणी मेलामा भक्तजन
| genre = [[Pilgrimage]]
| dates =
| frequency = Annually
| venue = [[Baidyanath Temple]]
| location = [[Deoghar]], [[Jharkhand]], India
| coordinates = {{coord|24|29|33|N|86|42|00|E||display=inline,title}}
| participants = 50 Lac+ (2025)<ref>{{Cite news |title=Deoghar Shravani Mela 2025 concludes, over 50 lakh devotees offer prayers; Sparsh Puja begins |url=https://navbharat... |work=Navbharat Times |date=2025-08-09 |access-date=2026-08-08}}</ref>
| budget =
| patrons = *[[Government of Jharkhand]]
*[[Government of Bihar]]
| homepage =
}}
<templatestyles src="Hlist/styles.css"></templatestyles><templatestyles src="Plainlist/styles.css"></templatestyles><templatestyles src="Module:Sidebar/styles.css"></templatestyles>{{हिन्दु धर्म बाकस}}'''श्रावणी मेला''' भारतको [[झारखण्ड]] देवघर रहेको [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ धाम]] मन्दिरमा श्रावण (जुलाई-अगस्ट) महिनामा मनाइने एक महिना लामो हिन्दू चाड हो।<ref>{{Cite web |title=Deoghar Authorities Ensure Smooth Shravani Mela |url=https://www.news18.com/india/shravani-mela-deoghar-arrangements |access-date=2024-02-01 |website=News18}}</ref> यो पर्व भारतको सबैभन्दा ठुलो धार्मिक जमघटहरू मध्ये एक हो, जसले लाखौं भक्तहरू आकर्षित गर्दछ, मुख्यतया काँवरीयाहरू, जसले [[गङ्गा नदी|गङ्गा]] भगवान [[शिव]] पवित्र जल चढाउन तीर्थयात्रा गर्छन।<ref>{{Cite journal |last=Verma |first=Amit |year=2020 |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99}}</ref><ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
== महत्व ==
श्रावणी मेला भगवान [[शिव]] मा समर्पित छ र यसलाई अत्यन्त शुभ मानिन्छ। [[कांवड यात्रा|काँवर यात्रा]] भनेर पनि चिनिने यस [[तीर्थयात्रा]] भक्तहरूले सुल्तानगञ्ज अजगाइबिनाथ धाममा [[गङ्गा नदी|गङ्गा]] पानी सङ्कलन गरेर लगभग १०५ किलोमिटर पैदल हिँडेर देवघर [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] पुर्याउँछन्। यात्रा भक्ति, तपस्या र शुद्धताको प्रतीक हो <ref>{{Cite journal |last=Verma |first=Amit |year=2020 |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99}}</ref>
== अनुष्ठानहरू ==
* काँवरीया भनेर चिनिने भक्तहरूले केसर रङको लुगा लगाउँछन् र काँवर भनिने सजाइएको बाँस संरचनामा सन्तुलित भाँडोमा पवित्र पानी बोक्छन्।<ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
* तीर्थयात्रा सुल्तानगञ्ज अजगाइबिनाथ धामबाट सुरु हुन्छ, जहाँ [[गङ्गा नदी|गङ्गा]] उत्तरतर्फ बग्छ, जसले यसलाई पानी सङ्कलनका लागि पवित्र बनाउँछ।<ref>{{Cite journal |last=Sharma |first=Anita |year=2021 |title=Sacred Geography of Indian Pilgrimages |journal=Journal of Religious Studies |volume=45 |issue=3 |pages=112–127}}</ref>
* भक्तहरू नंगे खुट्टा हिँड्छन् र यात्राको क्रममा काँवरलाई भुइँमा राख्न अनुमति दिइँदैन।<ref>{{Cite book|title=Hindu Festivals and Pilgrimages}}</ref>
* देवघर पुगेपछि, उनीहरूले पवित्र पानीले [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] अभिषेक ([[शिव]] लिङ्गको धार्मिक स्नान) गर्छन्।<ref>{{Cite news|url=https://www.hindustantimes.com/india-news/baba-baidyanath-dham-abshishek|title=Thousands Perform Abhishek at Baba Baidyanath Dham|date=2023-08-10|work=Hindustan Times|access-date=2024-02-01}}</ref>
== प्रमुख आकर्षणहरू ==
* '''[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]'''-भगवान [[शिव]] को बाह्र ज्योतिर्लिंगहरू मध्ये एक।<ref>{{Cite book|title=Jyotirlingas of India}}</ref>
* शिवगङ्गा ताल-मन्दिर नजिकैको एउटा पवित्र पोखरी जहाँ भक्तहरूले प्रार्थना गर्नु अघि डुबकी लगाउँछन्।<ref>{{Cite web |title=Sacred Ponds in Hinduism |url=https://www.indiaheritage.org/sacred-ponds-in-hinduism/ |access-date=2024-02-01}}</ref>
* बाबा अजगाइबिनाथ मन्दिर-तीर्थयात्रीहरूले पानी सङ्कलन गर्ने मन्दिर र स्थान र यसरी श्रावणी मेलाको सुरुवात हुन्छ। <ref>{{Cite book|url=https://www.google.co.in/books/edition/Pilgrimage_Centres_of_India/Qqei_Wo1qXwC?hl=en&gbpv=1&dq=ajgaibinath+dham&pg=PA186&printsec=frontcover|title=Pilgrimage Centres of India|date=2003}}</ref>
* बसुकिनाथ मन्दिर-[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बैद्यनाथ धाम]] प्रार्थना गरेपछि [[तीर्थयात्रा|तीर्थयात्रीहरू]] भ्रमण गर्ने महत्त्वपूर्ण मन्दिर।<ref>{{Cite news|url=https://www.ndtv.com/religion/basukinath-temple-history-and-significance-4283619|title=Basukinath Temple: A Pilgrim's Guide|date=2023-08-15|work=NDTV|access-date=2024-02-01}}</ref>
== पनि हेर्नुहोस् ==
* [[कांवड यात्रा|काँवर यात्रा]]
* [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]
* सुल्तानगञ्ज
== सन्दर्भहरू ==
<references />
[[श्रेणी:हिन्दु चाडपर्वहरू]]
g69ot8ijpao5c30cwje602admfonugx
1372332
1372331
2026-08-26T01:26:07Z
Rajeeb bastola
39875
/* महत्व */
1372332
wikitext
text/x-wiki
{{Short description|Hindu pilgrimage and festival in India}}
{{Infobox recurring event
| native_name_lang =
| logo =
| logo_size =
| image = File:Baidyanathdham.jpg
| image_size =
| caption = [[देवघर]]को श्रावणी मेलामा भक्तजन
| genre = [[Pilgrimage]]
| dates =
| frequency = Annually
| venue = [[Baidyanath Temple]]
| location = [[Deoghar]], [[Jharkhand]], India
| coordinates = {{coord|24|29|33|N|86|42|00|E||display=inline,title}}
| participants = 50 Lac+ (2025)<ref>{{Cite news |title=Deoghar Shravani Mela 2025 concludes, over 50 lakh devotees offer prayers; Sparsh Puja begins |url=https://navbharat... |work=Navbharat Times |date=2025-08-09 |access-date=2026-08-08}}</ref>
| budget =
| patrons = *[[Government of Jharkhand]]
*[[Government of Bihar]]
| homepage =
}}
<templatestyles src="Hlist/styles.css"></templatestyles><templatestyles src="Plainlist/styles.css"></templatestyles><templatestyles src="Module:Sidebar/styles.css"></templatestyles>{{हिन्दु धर्म बाकस}}'''श्रावणी मेला''' भारतको [[झारखण्ड]] देवघर रहेको [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ धाम]] मन्दिरमा श्रावण (जुलाई-अगस्ट) महिनामा मनाइने एक महिना लामो हिन्दू चाड हो।<ref>{{Cite web |title=Deoghar Authorities Ensure Smooth Shravani Mela |url=https://www.news18.com/india/shravani-mela-deoghar-arrangements |access-date=2024-02-01 |website=News18}}</ref> यो पर्व भारतको सबैभन्दा ठुलो धार्मिक जमघटहरू मध्ये एक हो, जसले लाखौं भक्तहरू आकर्षित गर्दछ, मुख्यतया काँवरीयाहरू, जसले [[गङ्गा नदी|गङ्गा]] भगवान [[शिव]] पवित्र जल चढाउन तीर्थयात्रा गर्छन।<ref>{{Cite journal |last=Verma |first=Amit |year=2020 |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99}}</ref><ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
== महत्व ==
श्रावणी मेला भगवान [[शिव]] मा समर्पित छ र यसलाई अत्यन्त शुभ मानिन्छ।<ref>{{Cite web |title=Tales from ‘Shravani Mela'|url=https://www.thehindu.com/life-and-style/travel/tales-from-shravani-mela/article29205659.ece|date=2019-08-21|work=The Hindu|access-date=2024-02-01}}</ref>[[कांवड यात्रा|काँवर यात्रा]] भनेर पनि चिनिने यस [[तीर्थयात्रा]] भक्तहरूले सुल्तानगञ्ज अजगाइबिनाथ धाममा [[गङ्गा नदी|गङ्गा]] पानी सङ्कलन गरेर लगभग १०५ किलोमिटर पैदल हिँडेर देवघर [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] पुर्याउँछन्। यात्रा भक्ति, तपस्या र शुद्धताको प्रतीक हो <ref>{{Cite journal |last=Verma |first=Amit |year=2020 |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99}}</ref>
== अनुष्ठानहरू ==
* काँवरीया भनेर चिनिने भक्तहरूले केसर रङको लुगा लगाउँछन् र काँवर भनिने सजाइएको बाँस संरचनामा सन्तुलित भाँडोमा पवित्र पानी बोक्छन्।<ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
* तीर्थयात्रा सुल्तानगञ्ज अजगाइबिनाथ धामबाट सुरु हुन्छ, जहाँ [[गङ्गा नदी|गङ्गा]] उत्तरतर्फ बग्छ, जसले यसलाई पानी सङ्कलनका लागि पवित्र बनाउँछ।<ref>{{Cite journal |last=Sharma |first=Anita |year=2021 |title=Sacred Geography of Indian Pilgrimages |journal=Journal of Religious Studies |volume=45 |issue=3 |pages=112–127}}</ref>
* भक्तहरू नंगे खुट्टा हिँड्छन् र यात्राको क्रममा काँवरलाई भुइँमा राख्न अनुमति दिइँदैन।<ref>{{Cite book|title=Hindu Festivals and Pilgrimages}}</ref>
* देवघर पुगेपछि, उनीहरूले पवित्र पानीले [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] अभिषेक ([[शिव]] लिङ्गको धार्मिक स्नान) गर्छन्।<ref>{{Cite news|url=https://www.hindustantimes.com/india-news/baba-baidyanath-dham-abshishek|title=Thousands Perform Abhishek at Baba Baidyanath Dham|date=2023-08-10|work=Hindustan Times|access-date=2024-02-01}}</ref>
== प्रमुख आकर्षणहरू ==
* '''[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]'''-भगवान [[शिव]] को बाह्र ज्योतिर्लिंगहरू मध्ये एक।<ref>{{Cite book|title=Jyotirlingas of India}}</ref>
* शिवगङ्गा ताल-मन्दिर नजिकैको एउटा पवित्र पोखरी जहाँ भक्तहरूले प्रार्थना गर्नु अघि डुबकी लगाउँछन्।<ref>{{Cite web |title=Sacred Ponds in Hinduism |url=https://www.indiaheritage.org/sacred-ponds-in-hinduism/ |access-date=2024-02-01}}</ref>
* बाबा अजगाइबिनाथ मन्दिर-तीर्थयात्रीहरूले पानी सङ्कलन गर्ने मन्दिर र स्थान र यसरी श्रावणी मेलाको सुरुवात हुन्छ। <ref>{{Cite book|url=https://www.google.co.in/books/edition/Pilgrimage_Centres_of_India/Qqei_Wo1qXwC?hl=en&gbpv=1&dq=ajgaibinath+dham&pg=PA186&printsec=frontcover|title=Pilgrimage Centres of India|date=2003}}</ref>
* बसुकिनाथ मन्दिर-[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बैद्यनाथ धाम]] प्रार्थना गरेपछि [[तीर्थयात्रा|तीर्थयात्रीहरू]] भ्रमण गर्ने महत्त्वपूर्ण मन्दिर।<ref>{{Cite news|url=https://www.ndtv.com/religion/basukinath-temple-history-and-significance-4283619|title=Basukinath Temple: A Pilgrim's Guide|date=2023-08-15|work=NDTV|access-date=2024-02-01}}</ref>
== पनि हेर्नुहोस् ==
* [[कांवड यात्रा|काँवर यात्रा]]
* [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]
* सुल्तानगञ्ज
== सन्दर्भहरू ==
<references />
[[श्रेणी:हिन्दु चाडपर्वहरू]]
b4c3tl2b3c3wbn0nl1k9vy5pis4u03a
1372333
1372332
2026-08-26T01:27:50Z
Rajeeb bastola
39875
/* महत्व */
1372333
wikitext
text/x-wiki
{{Short description|Hindu pilgrimage and festival in India}}
{{Infobox recurring event
| native_name_lang =
| logo =
| logo_size =
| image = File:Baidyanathdham.jpg
| image_size =
| caption = [[देवघर]]को श्रावणी मेलामा भक्तजन
| genre = [[Pilgrimage]]
| dates =
| frequency = Annually
| venue = [[Baidyanath Temple]]
| location = [[Deoghar]], [[Jharkhand]], India
| coordinates = {{coord|24|29|33|N|86|42|00|E||display=inline,title}}
| participants = 50 Lac+ (2025)<ref>{{Cite news |title=Deoghar Shravani Mela 2025 concludes, over 50 lakh devotees offer prayers; Sparsh Puja begins |url=https://navbharat... |work=Navbharat Times |date=2025-08-09 |access-date=2026-08-08}}</ref>
| budget =
| patrons = *[[Government of Jharkhand]]
*[[Government of Bihar]]
| homepage =
}}
<templatestyles src="Hlist/styles.css"></templatestyles><templatestyles src="Plainlist/styles.css"></templatestyles><templatestyles src="Module:Sidebar/styles.css"></templatestyles>{{हिन्दु धर्म बाकस}}'''श्रावणी मेला''' भारतको [[झारखण्ड]] देवघर रहेको [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ धाम]] मन्दिरमा श्रावण (जुलाई-अगस्ट) महिनामा मनाइने एक महिना लामो हिन्दू चाड हो।<ref>{{Cite web |title=Deoghar Authorities Ensure Smooth Shravani Mela |url=https://www.news18.com/india/shravani-mela-deoghar-arrangements |access-date=2024-02-01 |website=News18}}</ref> यो पर्व भारतको सबैभन्दा ठुलो धार्मिक जमघटहरू मध्ये एक हो, जसले लाखौं भक्तहरू आकर्षित गर्दछ, मुख्यतया काँवरीयाहरू, जसले [[गङ्गा नदी|गङ्गा]] भगवान [[शिव]] पवित्र जल चढाउन तीर्थयात्रा गर्छन।<ref>{{Cite journal |last=Verma |first=Amit |year=2020 |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99}}</ref><ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
== महत्व ==
श्रावणी मेला भगवान [[शिव]] मा समर्पित छ र यसलाई अत्यन्त शुभ मानिन्छ।<ref>{{Cite web |title=Tales from ‘Shravani Mela'|url=https://www.thehindu.com/life-and-style/travel/tales-from-shravani-mela/article29205659.ece|date=2019-08-21|work=The Hindu|access-date=2024-02-01}}</ref>[[कांवड यात्रा|काँवर यात्रा]] भनेर पनि चिनिने यस [[तीर्थयात्रा]] भक्तहरूले सुल्तानगञ्ज अजगाइबिनाथ धाममा [[गङ्गा नदी|गङ्गा]] पानी सङ्कलन गरेर लगभग १०५ किलोमिटर पैदल हिँडेर देवघर [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] पुर्याउँछन्।<ref>{{Cite web |title=Shravani Mela: Pilgrimage and Rituals |url=https://www.india.com/travel/articles/shravani-mela-pilgrimage-and-rituals/ |access-date=2024-02-01}}</ref><ref>{{Cite web |title=Month-long Shravani mela begins in Deoghar
|url=https://www.dailypioneer.com/2024/state-editions/month-long-shravani-mela-begins-in-deoghar.html|date=2024-07-23|access-date=2024-02-01|work=Daily Pioneer}}</ref>यात्रा भक्ति, तपस्या र शुद्धताको प्रतीक हो <ref>{{Cite journal |last=Verma |first=Amit |year=2020 |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99}}</ref>
== अनुष्ठानहरू ==
* काँवरीया भनेर चिनिने भक्तहरूले केसर रङको लुगा लगाउँछन् र काँवर भनिने सजाइएको बाँस संरचनामा सन्तुलित भाँडोमा पवित्र पानी बोक्छन्।<ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
* तीर्थयात्रा सुल्तानगञ्ज अजगाइबिनाथ धामबाट सुरु हुन्छ, जहाँ [[गङ्गा नदी|गङ्गा]] उत्तरतर्फ बग्छ, जसले यसलाई पानी सङ्कलनका लागि पवित्र बनाउँछ।<ref>{{Cite journal |last=Sharma |first=Anita |year=2021 |title=Sacred Geography of Indian Pilgrimages |journal=Journal of Religious Studies |volume=45 |issue=3 |pages=112–127}}</ref>
* भक्तहरू नंगे खुट्टा हिँड्छन् र यात्राको क्रममा काँवरलाई भुइँमा राख्न अनुमति दिइँदैन।<ref>{{Cite book|title=Hindu Festivals and Pilgrimages}}</ref>
* देवघर पुगेपछि, उनीहरूले पवित्र पानीले [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] अभिषेक ([[शिव]] लिङ्गको धार्मिक स्नान) गर्छन्।<ref>{{Cite news|url=https://www.hindustantimes.com/india-news/baba-baidyanath-dham-abshishek|title=Thousands Perform Abhishek at Baba Baidyanath Dham|date=2023-08-10|work=Hindustan Times|access-date=2024-02-01}}</ref>
== प्रमुख आकर्षणहरू ==
* '''[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]'''-भगवान [[शिव]] को बाह्र ज्योतिर्लिंगहरू मध्ये एक।<ref>{{Cite book|title=Jyotirlingas of India}}</ref>
* शिवगङ्गा ताल-मन्दिर नजिकैको एउटा पवित्र पोखरी जहाँ भक्तहरूले प्रार्थना गर्नु अघि डुबकी लगाउँछन्।<ref>{{Cite web |title=Sacred Ponds in Hinduism |url=https://www.indiaheritage.org/sacred-ponds-in-hinduism/ |access-date=2024-02-01}}</ref>
* बाबा अजगाइबिनाथ मन्दिर-तीर्थयात्रीहरूले पानी सङ्कलन गर्ने मन्दिर र स्थान र यसरी श्रावणी मेलाको सुरुवात हुन्छ। <ref>{{Cite book|url=https://www.google.co.in/books/edition/Pilgrimage_Centres_of_India/Qqei_Wo1qXwC?hl=en&gbpv=1&dq=ajgaibinath+dham&pg=PA186&printsec=frontcover|title=Pilgrimage Centres of India|date=2003}}</ref>
* बसुकिनाथ मन्दिर-[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बैद्यनाथ धाम]] प्रार्थना गरेपछि [[तीर्थयात्रा|तीर्थयात्रीहरू]] भ्रमण गर्ने महत्त्वपूर्ण मन्दिर।<ref>{{Cite news|url=https://www.ndtv.com/religion/basukinath-temple-history-and-significance-4283619|title=Basukinath Temple: A Pilgrim's Guide|date=2023-08-15|work=NDTV|access-date=2024-02-01}}</ref>
== पनि हेर्नुहोस् ==
* [[कांवड यात्रा|काँवर यात्रा]]
* [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]
* सुल्तानगञ्ज
== सन्दर्भहरू ==
<references />
[[श्रेणी:हिन्दु चाडपर्वहरू]]
t42cfyuc0bzd5e5m86ym3yx0v6hwsvp
1372334
1372333
2026-08-26T01:28:58Z
Rajeeb bastola
39875
/* महत्व */
1372334
wikitext
text/x-wiki
{{Short description|Hindu pilgrimage and festival in India}}
{{Infobox recurring event
| native_name_lang =
| logo =
| logo_size =
| image = File:Baidyanathdham.jpg
| image_size =
| caption = [[देवघर]]को श्रावणी मेलामा भक्तजन
| genre = [[Pilgrimage]]
| dates =
| frequency = Annually
| venue = [[Baidyanath Temple]]
| location = [[Deoghar]], [[Jharkhand]], India
| coordinates = {{coord|24|29|33|N|86|42|00|E||display=inline,title}}
| participants = 50 Lac+ (2025)<ref>{{Cite news |title=Deoghar Shravani Mela 2025 concludes, over 50 lakh devotees offer prayers; Sparsh Puja begins |url=https://navbharat... |work=Navbharat Times |date=2025-08-09 |access-date=2026-08-08}}</ref>
| budget =
| patrons = *[[Government of Jharkhand]]
*[[Government of Bihar]]
| homepage =
}}
<templatestyles src="Hlist/styles.css"></templatestyles><templatestyles src="Plainlist/styles.css"></templatestyles><templatestyles src="Module:Sidebar/styles.css"></templatestyles>{{हिन्दु धर्म बाकस}}'''श्रावणी मेला''' भारतको [[झारखण्ड]] देवघर रहेको [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ धाम]] मन्दिरमा श्रावण (जुलाई-अगस्ट) महिनामा मनाइने एक महिना लामो हिन्दू चाड हो।<ref>{{Cite web |title=Deoghar Authorities Ensure Smooth Shravani Mela |url=https://www.news18.com/india/shravani-mela-deoghar-arrangements |access-date=2024-02-01 |website=News18}}</ref> यो पर्व भारतको सबैभन्दा ठुलो धार्मिक जमघटहरू मध्ये एक हो, जसले लाखौं भक्तहरू आकर्षित गर्दछ, मुख्यतया काँवरीयाहरू, जसले [[गङ्गा नदी|गङ्गा]] भगवान [[शिव]] पवित्र जल चढाउन तीर्थयात्रा गर्छन।<ref>{{Cite journal |last=Verma |first=Amit |year=2020 |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99}}</ref><ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
== महत्व ==
श्रावणी मेला भगवान [[शिव]] मा समर्पित छ र यसलाई अत्यन्त शुभ मानिन्छ।<ref>{{Cite web |title=Tales from ‘Shravani Mela'|url=https://www.thehindu.com/life-and-style/travel/tales-from-shravani-mela/article29205659.ece|date=2019-08-21|work=The Hindu|access-date=2024-02-01}}</ref>[[कांवड यात्रा|काँवर यात्रा]] भनेर पनि चिनिने यस [[तीर्थयात्रा]] भक्तहरूले सुल्तानगञ्ज अजगाइबिनाथ धाममा [[गङ्गा नदी|गङ्गा]] पानी सङ्कलन गरेर लगभग १०५ किलोमिटर पैदल हिँडेर देवघर [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] पुर्याउँछन्।<ref>{{Cite web |title=Shravani Mela: Pilgrimage and Rituals |url=https://www.india.com/travel/articles/shravani-mela-pilgrimage-and-rituals/ |access-date=2024-02-01}}</ref><ref>{{Cite web |title=Month-long Shravani mela begins in Deoghar
|url=https://www.dailypioneer.com/2024/state-editions/month-long-shravani-mela-begins-in-deoghar.html|date=2024-07-23|access-date=2024-02-01|work=Daily Pioneer}}</ref>यात्रा भक्ति, तपस्या र शुद्धताको प्रतीक हो।<ref>{{Cite book |last=Tripathi |first=R.K. |title=Sacred Journeys in Hinduism |year=2019 |publisher=Oxford University Press |isbn=978-9391125356}}</ref><ref>{{Cite journal |last=Verma |first=Amit |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99 |year=2020}}</ref>
== अनुष्ठानहरू ==
* काँवरीया भनेर चिनिने भक्तहरूले केसर रङको लुगा लगाउँछन् र काँवर भनिने सजाइएको बाँस संरचनामा सन्तुलित भाँडोमा पवित्र पानी बोक्छन्।<ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
* तीर्थयात्रा सुल्तानगञ्ज अजगाइबिनाथ धामबाट सुरु हुन्छ, जहाँ [[गङ्गा नदी|गङ्गा]] उत्तरतर्फ बग्छ, जसले यसलाई पानी सङ्कलनका लागि पवित्र बनाउँछ।<ref>{{Cite journal |last=Sharma |first=Anita |year=2021 |title=Sacred Geography of Indian Pilgrimages |journal=Journal of Religious Studies |volume=45 |issue=3 |pages=112–127}}</ref>
* भक्तहरू नंगे खुट्टा हिँड्छन् र यात्राको क्रममा काँवरलाई भुइँमा राख्न अनुमति दिइँदैन।<ref>{{Cite book|title=Hindu Festivals and Pilgrimages}}</ref>
* देवघर पुगेपछि, उनीहरूले पवित्र पानीले [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] अभिषेक ([[शिव]] लिङ्गको धार्मिक स्नान) गर्छन्।<ref>{{Cite news|url=https://www.hindustantimes.com/india-news/baba-baidyanath-dham-abshishek|title=Thousands Perform Abhishek at Baba Baidyanath Dham|date=2023-08-10|work=Hindustan Times|access-date=2024-02-01}}</ref>
== प्रमुख आकर्षणहरू ==
* '''[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]'''-भगवान [[शिव]] को बाह्र ज्योतिर्लिंगहरू मध्ये एक।<ref>{{Cite book|title=Jyotirlingas of India}}</ref>
* शिवगङ्गा ताल-मन्दिर नजिकैको एउटा पवित्र पोखरी जहाँ भक्तहरूले प्रार्थना गर्नु अघि डुबकी लगाउँछन्।<ref>{{Cite web |title=Sacred Ponds in Hinduism |url=https://www.indiaheritage.org/sacred-ponds-in-hinduism/ |access-date=2024-02-01}}</ref>
* बाबा अजगाइबिनाथ मन्दिर-तीर्थयात्रीहरूले पानी सङ्कलन गर्ने मन्दिर र स्थान र यसरी श्रावणी मेलाको सुरुवात हुन्छ। <ref>{{Cite book|url=https://www.google.co.in/books/edition/Pilgrimage_Centres_of_India/Qqei_Wo1qXwC?hl=en&gbpv=1&dq=ajgaibinath+dham&pg=PA186&printsec=frontcover|title=Pilgrimage Centres of India|date=2003}}</ref>
* बसुकिनाथ मन्दिर-[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बैद्यनाथ धाम]] प्रार्थना गरेपछि [[तीर्थयात्रा|तीर्थयात्रीहरू]] भ्रमण गर्ने महत्त्वपूर्ण मन्दिर।<ref>{{Cite news|url=https://www.ndtv.com/religion/basukinath-temple-history-and-significance-4283619|title=Basukinath Temple: A Pilgrim's Guide|date=2023-08-15|work=NDTV|access-date=2024-02-01}}</ref>
== पनि हेर्नुहोस् ==
* [[कांवड यात्रा|काँवर यात्रा]]
* [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]
* सुल्तानगञ्ज
== सन्दर्भहरू ==
<references />
[[श्रेणी:हिन्दु चाडपर्वहरू]]
h9w2dw27xjsg1gfnzuhjkfxgtka7m6h
1372335
1372334
2026-08-26T01:37:47Z
Rajeeb bastola
39875
/* अनुष्ठानहरू */
1372335
wikitext
text/x-wiki
{{Short description|Hindu pilgrimage and festival in India}}
{{Infobox recurring event
| native_name_lang =
| logo =
| logo_size =
| image = File:Baidyanathdham.jpg
| image_size =
| caption = [[देवघर]]को श्रावणी मेलामा भक्तजन
| genre = [[Pilgrimage]]
| dates =
| frequency = Annually
| venue = [[Baidyanath Temple]]
| location = [[Deoghar]], [[Jharkhand]], India
| coordinates = {{coord|24|29|33|N|86|42|00|E||display=inline,title}}
| participants = 50 Lac+ (2025)<ref>{{Cite news |title=Deoghar Shravani Mela 2025 concludes, over 50 lakh devotees offer prayers; Sparsh Puja begins |url=https://navbharat... |work=Navbharat Times |date=2025-08-09 |access-date=2026-08-08}}</ref>
| budget =
| patrons = *[[Government of Jharkhand]]
*[[Government of Bihar]]
| homepage =
}}
<templatestyles src="Hlist/styles.css"></templatestyles><templatestyles src="Plainlist/styles.css"></templatestyles><templatestyles src="Module:Sidebar/styles.css"></templatestyles>{{हिन्दु धर्म बाकस}}'''श्रावणी मेला''' भारतको [[झारखण्ड]] देवघर रहेको [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ धाम]] मन्दिरमा श्रावण (जुलाई-अगस्ट) महिनामा मनाइने एक महिना लामो हिन्दू चाड हो।<ref>{{Cite web |title=Deoghar Authorities Ensure Smooth Shravani Mela |url=https://www.news18.com/india/shravani-mela-deoghar-arrangements |access-date=2024-02-01 |website=News18}}</ref> यो पर्व भारतको सबैभन्दा ठुलो धार्मिक जमघटहरू मध्ये एक हो, जसले लाखौं भक्तहरू आकर्षित गर्दछ, मुख्यतया काँवरीयाहरू, जसले [[गङ्गा नदी|गङ्गा]] भगवान [[शिव]] पवित्र जल चढाउन तीर्थयात्रा गर्छन।<ref>{{Cite journal |last=Verma |first=Amit |year=2020 |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99}}</ref><ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
== महत्व ==
श्रावणी मेला भगवान [[शिव]] मा समर्पित छ र यसलाई अत्यन्त शुभ मानिन्छ।<ref>{{Cite web |title=Tales from ‘Shravani Mela'|url=https://www.thehindu.com/life-and-style/travel/tales-from-shravani-mela/article29205659.ece|date=2019-08-21|work=The Hindu|access-date=2024-02-01}}</ref>[[कांवड यात्रा|काँवर यात्रा]] भनेर पनि चिनिने यस [[तीर्थयात्रा]] भक्तहरूले सुल्तानगञ्ज अजगाइबिनाथ धाममा [[गङ्गा नदी|गङ्गा]] पानी सङ्कलन गरेर लगभग १०५ किलोमिटर पैदल हिँडेर देवघर [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] पुर्याउँछन्।<ref>{{Cite web |title=Shravani Mela: Pilgrimage and Rituals |url=https://www.india.com/travel/articles/shravani-mela-pilgrimage-and-rituals/ |access-date=2024-02-01}}</ref><ref>{{Cite web |title=Month-long Shravani mela begins in Deoghar
|url=https://www.dailypioneer.com/2024/state-editions/month-long-shravani-mela-begins-in-deoghar.html|date=2024-07-23|access-date=2024-02-01|work=Daily Pioneer}}</ref>यात्रा भक्ति, तपस्या र शुद्धताको प्रतीक हो।<ref>{{Cite book |last=Tripathi |first=R.K. |title=Sacred Journeys in Hinduism |year=2019 |publisher=Oxford University Press |isbn=978-9391125356}}</ref><ref>{{Cite journal |last=Verma |first=Amit |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99 |year=2020}}</ref>
== अनुष्ठानहरू ==
* काँवरीया भनेर चिनिने भक्तहरूले केसर रङको लुगा लगाउँछन्<ref>{{Cite news |title=Saffron tide of faithful on 110-km trek|url=https://www.telegraphindia.com/jharkhand/saffron-tide-of-faithful-on-110-km-trek/cid/723399 |date=2004-08-30 |work=The Telegraph India |access-date=2025-02-01}}</ref>र काँवर भनिने सजाइएको बाँस संरचनामा सन्तुलित भाँडोमा पवित्र पानी बोक्छन्।<ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
* तीर्थयात्रा सुल्तानगञ्ज अजगाइबिनाथ धामबाट सुरु हुन्छ, जहाँ [[गङ्गा नदी|गङ्गा]] उत्तरतर्फ बग्छ, जसले यसलाई पानी सङ्कलनका लागि पवित्र बनाउँछ।<ref>{{Cite journal |last=Sharma |first=Anita |year=2021 |title=Sacred Geography of Indian Pilgrimages |journal=Journal of Religious Studies |volume=45 |issue=3 |pages=112–127}}</ref>
* भक्तहरू नंगे खुट्टा हिँड्छन् र यात्राको क्रममा काँवरलाई भुइँमा राख्न अनुमति दिइँदैन।<ref>{{Cite book|title=Hindu Festivals and Pilgrimages}}</ref>
* देवघर पुगेपछि, उनीहरूले पवित्र पानीले [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] अभिषेक ([[शिव]] लिङ्गको धार्मिक स्नान) गर्छन्।<ref>{{Cite news|url=https://www.hindustantimes.com/india-news/baba-baidyanath-dham-abshishek|title=Thousands Perform Abhishek at Baba Baidyanath Dham|date=2023-08-10|work=Hindustan Times|access-date=2024-02-01}}</ref>
== प्रमुख आकर्षणहरू ==
* '''[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]'''-भगवान [[शिव]] को बाह्र ज्योतिर्लिंगहरू मध्ये एक।<ref>{{Cite book|title=Jyotirlingas of India}}</ref>
* शिवगङ्गा ताल-मन्दिर नजिकैको एउटा पवित्र पोखरी जहाँ भक्तहरूले प्रार्थना गर्नु अघि डुबकी लगाउँछन्।<ref>{{Cite web |title=Sacred Ponds in Hinduism |url=https://www.indiaheritage.org/sacred-ponds-in-hinduism/ |access-date=2024-02-01}}</ref>
* बाबा अजगाइबिनाथ मन्दिर-तीर्थयात्रीहरूले पानी सङ्कलन गर्ने मन्दिर र स्थान र यसरी श्रावणी मेलाको सुरुवात हुन्छ। <ref>{{Cite book|url=https://www.google.co.in/books/edition/Pilgrimage_Centres_of_India/Qqei_Wo1qXwC?hl=en&gbpv=1&dq=ajgaibinath+dham&pg=PA186&printsec=frontcover|title=Pilgrimage Centres of India|date=2003}}</ref>
* बसुकिनाथ मन्दिर-[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बैद्यनाथ धाम]] प्रार्थना गरेपछि [[तीर्थयात्रा|तीर्थयात्रीहरू]] भ्रमण गर्ने महत्त्वपूर्ण मन्दिर।<ref>{{Cite news|url=https://www.ndtv.com/religion/basukinath-temple-history-and-significance-4283619|title=Basukinath Temple: A Pilgrim's Guide|date=2023-08-15|work=NDTV|access-date=2024-02-01}}</ref>
== पनि हेर्नुहोस् ==
* [[कांवड यात्रा|काँवर यात्रा]]
* [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]
* सुल्तानगञ्ज
== सन्दर्भहरू ==
<references />
[[श्रेणी:हिन्दु चाडपर्वहरू]]
sh8vtf0gvl3x5yb15iugagedfy3x712
1372336
1372335
2026-08-26T01:39:17Z
Rajeeb bastola
39875
/* अनुष्ठानहरू */
1372336
wikitext
text/x-wiki
{{Short description|Hindu pilgrimage and festival in India}}
{{Infobox recurring event
| native_name_lang =
| logo =
| logo_size =
| image = File:Baidyanathdham.jpg
| image_size =
| caption = [[देवघर]]को श्रावणी मेलामा भक्तजन
| genre = [[Pilgrimage]]
| dates =
| frequency = Annually
| venue = [[Baidyanath Temple]]
| location = [[Deoghar]], [[Jharkhand]], India
| coordinates = {{coord|24|29|33|N|86|42|00|E||display=inline,title}}
| participants = 50 Lac+ (2025)<ref>{{Cite news |title=Deoghar Shravani Mela 2025 concludes, over 50 lakh devotees offer prayers; Sparsh Puja begins |url=https://navbharat... |work=Navbharat Times |date=2025-08-09 |access-date=2026-08-08}}</ref>
| budget =
| patrons = *[[Government of Jharkhand]]
*[[Government of Bihar]]
| homepage =
}}
<templatestyles src="Hlist/styles.css"></templatestyles><templatestyles src="Plainlist/styles.css"></templatestyles><templatestyles src="Module:Sidebar/styles.css"></templatestyles>{{हिन्दु धर्म बाकस}}'''श्रावणी मेला''' भारतको [[झारखण्ड]] देवघर रहेको [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ धाम]] मन्दिरमा श्रावण (जुलाई-अगस्ट) महिनामा मनाइने एक महिना लामो हिन्दू चाड हो।<ref>{{Cite web |title=Deoghar Authorities Ensure Smooth Shravani Mela |url=https://www.news18.com/india/shravani-mela-deoghar-arrangements |access-date=2024-02-01 |website=News18}}</ref> यो पर्व भारतको सबैभन्दा ठुलो धार्मिक जमघटहरू मध्ये एक हो, जसले लाखौं भक्तहरू आकर्षित गर्दछ, मुख्यतया काँवरीयाहरू, जसले [[गङ्गा नदी|गङ्गा]] भगवान [[शिव]] पवित्र जल चढाउन तीर्थयात्रा गर्छन।<ref>{{Cite journal |last=Verma |first=Amit |year=2020 |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99}}</ref><ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
== महत्व ==
श्रावणी मेला भगवान [[शिव]] मा समर्पित छ र यसलाई अत्यन्त शुभ मानिन्छ।<ref>{{Cite web |title=Tales from ‘Shravani Mela'|url=https://www.thehindu.com/life-and-style/travel/tales-from-shravani-mela/article29205659.ece|date=2019-08-21|work=The Hindu|access-date=2024-02-01}}</ref>[[कांवड यात्रा|काँवर यात्रा]] भनेर पनि चिनिने यस [[तीर्थयात्रा]] भक्तहरूले सुल्तानगञ्ज अजगाइबिनाथ धाममा [[गङ्गा नदी|गङ्गा]] पानी सङ्कलन गरेर लगभग १०५ किलोमिटर पैदल हिँडेर देवघर [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] पुर्याउँछन्।<ref>{{Cite web |title=Shravani Mela: Pilgrimage and Rituals |url=https://www.india.com/travel/articles/shravani-mela-pilgrimage-and-rituals/ |access-date=2024-02-01}}</ref><ref>{{Cite web |title=Month-long Shravani mela begins in Deoghar
|url=https://www.dailypioneer.com/2024/state-editions/month-long-shravani-mela-begins-in-deoghar.html|date=2024-07-23|access-date=2024-02-01|work=Daily Pioneer}}</ref>यात्रा भक्ति, तपस्या र शुद्धताको प्रतीक हो।<ref>{{Cite book |last=Tripathi |first=R.K. |title=Sacred Journeys in Hinduism |year=2019 |publisher=Oxford University Press |isbn=978-9391125356}}</ref><ref>{{Cite journal |last=Verma |first=Amit |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99 |year=2020}}</ref>
== अनुष्ठानहरू ==
* काँवरीया भनेर चिनिने भक्तहरूले केसर रङको लुगा लगाउँछन्<ref>{{Cite news |title=Saffron tide of faithful on 110-km trek|url=https://www.telegraphindia.com/jharkhand/saffron-tide-of-faithful-on-110-km-trek/cid/723399 |date=2004-08-30 |work=The Telegraph India |access-date=2025-02-01}}</ref>र काँवर भनिने सजाइएको बाँस संरचनामा सन्तुलित भाँडोमा पवित्र पानी बोक्छन्।<ref>{{Cite web |title=The Kanwariya Tradition in India |url=https://www.bbc.com/news/world-asia-india-49120788 |work=BBC News |date=2022-07-30 |access-date=2024-02-01}}</ref><ref>{{Cite news |title=Jharkhand Government Prepares for Shravani Mela |url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece |work=The Hindu |date=2023-07-25 |access-date=2024-02-01}}</ref>
* तीर्थयात्रा सुल्तानगञ्ज अजगाइबिनाथ धामबाट सुरु हुन्छ, जहाँ [[गङ्गा नदी|गङ्गा]] उत्तरतर्फ बग्छ, जसले यसलाई पानी सङ्कलनका लागि पवित्र बनाउँछ।<ref>{{Cite journal |last=Sharma |first=Anita |year=2021 |title=Sacred Geography of Indian Pilgrimages |journal=Journal of Religious Studies |volume=45 |issue=3 |pages=112–127}}</ref>
* भक्तहरू नंगे खुट्टा हिँड्छन् र यात्राको क्रममा काँवरलाई भुइँमा राख्न अनुमति दिइँदैन।<ref>{{Cite book|title=Hindu Festivals and Pilgrimages}}</ref>
* देवघर पुगेपछि, उनीहरूले पवित्र पानीले [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] अभिषेक ([[शिव]] लिङ्गको धार्मिक स्नान) गर्छन्।<ref>{{Cite news|url=https://www.hindustantimes.com/india-news/baba-baidyanath-dham-abshishek|title=Thousands Perform Abhishek at Baba Baidyanath Dham|date=2023-08-10|work=Hindustan Times|access-date=2024-02-01}}</ref>
== प्रमुख आकर्षणहरू ==
* '''[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]'''-भगवान [[शिव]] को बाह्र ज्योतिर्लिंगहरू मध्ये एक।<ref>{{Cite book|title=Jyotirlingas of India}}</ref>
* शिवगङ्गा ताल-मन्दिर नजिकैको एउटा पवित्र पोखरी जहाँ भक्तहरूले प्रार्थना गर्नु अघि डुबकी लगाउँछन्।<ref>{{Cite web |title=Sacred Ponds in Hinduism |url=https://www.indiaheritage.org/sacred-ponds-in-hinduism/ |access-date=2024-02-01}}</ref>
* बाबा अजगाइबिनाथ मन्दिर-तीर्थयात्रीहरूले पानी सङ्कलन गर्ने मन्दिर र स्थान र यसरी श्रावणी मेलाको सुरुवात हुन्छ। <ref>{{Cite book|url=https://www.google.co.in/books/edition/Pilgrimage_Centres_of_India/Qqei_Wo1qXwC?hl=en&gbpv=1&dq=ajgaibinath+dham&pg=PA186&printsec=frontcover|title=Pilgrimage Centres of India|date=2003}}</ref>
* बसुकिनाथ मन्दिर-[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बैद्यनाथ धाम]] प्रार्थना गरेपछि [[तीर्थयात्रा|तीर्थयात्रीहरू]] भ्रमण गर्ने महत्त्वपूर्ण मन्दिर।<ref>{{Cite news|url=https://www.ndtv.com/religion/basukinath-temple-history-and-significance-4283619|title=Basukinath Temple: A Pilgrim's Guide|date=2023-08-15|work=NDTV|access-date=2024-02-01}}</ref>
== पनि हेर्नुहोस् ==
* [[कांवड यात्रा|काँवर यात्रा]]
* [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]
* सुल्तानगञ्ज
== सन्दर्भहरू ==
<references />
[[श्रेणी:हिन्दु चाडपर्वहरू]]
l8dp18kux00ras0e0sjs9kl747hotui
1372337
1372336
2026-08-26T01:41:27Z
Rajeeb bastola
39875
1372337
wikitext
text/x-wiki
{{Short description|Hindu pilgrimage and festival in India}}
{{Infobox recurring event
| native_name_lang =
| logo =
| logo_size =
| image = File:Baidyanathdham.jpg
| image_size =
| caption = [[देवघर]]को श्रावणी मेलामा भक्तजन
| genre = [[Pilgrimage]]
| dates =
| frequency = Annually
| venue = [[Baidyanath Temple]]
| location = [[Deoghar]], [[Jharkhand]], India
| coordinates = {{coord|24|29|33|N|86|42|00|E||display=inline,title}}
| participants = ५० लाख+ (२०२५)<ref>{{Cite news |title=Deoghar Shravani Mela 2025 concludes, over 50 lakh devotees offer prayers; Sparsh Puja begins |url=https://navbharat... |work=Navbharat Times |date=2025-08-09 |access-date=2026-08-08}}</ref>
| budget =
| patrons = *[[Government of Jharkhand]]
*[[Government of Bihar]]
| homepage =
}}
<templatestyles src="Hlist/styles.css"></templatestyles><templatestyles src="Plainlist/styles.css"></templatestyles><templatestyles src="Module:Sidebar/styles.css"></templatestyles>{{हिन्दु धर्म बाकस}}'''श्रावणी मेला''' भारतको [[झारखण्ड]] देवघर रहेको [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ धाम]] मन्दिरमा श्रावण (जुलाई-अगस्ट) महिनामा मनाइने एक महिना लामो हिन्दू चाड हो।<ref>{{Cite web |title=Deoghar Authorities Ensure Smooth Shravani Mela |url=https://www.news18.com/india/shravani-mela-deoghar-arrangements |access-date=2024-02-01 |website=News18}}</ref> यो पर्व भारतको सबैभन्दा ठुलो धार्मिक जमघटहरू मध्ये एक हो, जसले लाखौं भक्तहरू आकर्षित गर्दछ, मुख्यतया काँवरीयाहरू, जसले [[गङ्गा नदी|गङ्गा]] भगवान [[शिव]] पवित्र जल चढाउन तीर्थयात्रा गर्छन।<ref>{{Cite journal |last=Verma |first=Amit |year=2020 |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99}}</ref><ref>{{Cite news|url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece|title=Jharkhand Government Prepares for Shravani Mela|date=2023-07-25|work=The Hindu|access-date=2024-02-01}}</ref>
== महत्व ==
श्रावणी मेला भगवान [[शिव]] मा समर्पित छ र यसलाई अत्यन्त शुभ मानिन्छ।<ref>{{Cite web |title=Tales from ‘Shravani Mela'|url=https://www.thehindu.com/life-and-style/travel/tales-from-shravani-mela/article29205659.ece|date=2019-08-21|work=The Hindu|access-date=2024-02-01}}</ref>[[कांवड यात्रा|काँवर यात्रा]] भनेर पनि चिनिने यस [[तीर्थयात्रा]] भक्तहरूले सुल्तानगञ्ज अजगाइबिनाथ धाममा [[गङ्गा नदी|गङ्गा]] पानी सङ्कलन गरेर लगभग १०५ किलोमिटर पैदल हिँडेर देवघर [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] पुर्याउँछन्।<ref>{{Cite web |title=Shravani Mela: Pilgrimage and Rituals |url=https://www.india.com/travel/articles/shravani-mela-pilgrimage-and-rituals/ |access-date=2024-02-01}}</ref><ref>{{Cite web |title=Month-long Shravani mela begins in Deoghar
|url=https://www.dailypioneer.com/2024/state-editions/month-long-shravani-mela-begins-in-deoghar.html|date=2024-07-23|access-date=2024-02-01|work=Daily Pioneer}}</ref>यात्रा भक्ति, तपस्या र शुद्धताको प्रतीक हो।<ref>{{Cite book |last=Tripathi |first=R.K. |title=Sacred Journeys in Hinduism |year=2019 |publisher=Oxford University Press |isbn=978-9391125356}}</ref><ref>{{Cite journal |last=Verma |first=Amit |title=Religious Gatherings and Social Harmony |journal=Indian Journal of Cultural Studies |volume=52 |issue=2 |pages=87–99 |year=2020}}</ref>
== अनुष्ठानहरू ==
* काँवरीया भनेर चिनिने भक्तहरूले केसर रङको लुगा लगाउँछन्<ref>{{Cite news |title=Saffron tide of faithful on 110-km trek|url=https://www.telegraphindia.com/jharkhand/saffron-tide-of-faithful-on-110-km-trek/cid/723399 |date=2004-08-30 |work=The Telegraph India |access-date=2025-02-01}}</ref>र काँवर भनिने सजाइएको बाँस संरचनामा सन्तुलित भाँडोमा पवित्र पानी बोक्छन्।<ref>{{Cite web |title=The Kanwariya Tradition in India |url=https://www.bbc.com/news/world-asia-india-49120788 |work=BBC News |date=2022-07-30 |access-date=2024-02-01}}</ref><ref>{{Cite news |title=Jharkhand Government Prepares for Shravani Mela |url=https://www.thehindu.com/news/national/jharkhand-shravani-mela-preparations/article67278941.ece |work=The Hindu |date=2023-07-25 |access-date=2024-02-01}}</ref>
* तीर्थयात्रा सुल्तानगञ्ज अजगाइबिनाथ धामबाट सुरु हुन्छ, जहाँ [[गङ्गा नदी|गङ्गा]] उत्तरतर्फ बग्छ, जसले यसलाई पानी सङ्कलनका लागि पवित्र बनाउँछ।<ref>{{Cite journal |last=Sharma |first=Anita |year=2021 |title=Sacred Geography of Indian Pilgrimages |journal=Journal of Religious Studies |volume=45 |issue=3 |pages=112–127}}</ref>
* भक्तहरू नंगे खुट्टा हिँड्छन् र यात्राको क्रममा काँवरलाई भुइँमा राख्न अनुमति दिइँदैन।<ref>{{Cite book|title=Hindu Festivals and Pilgrimages}}</ref>
* देवघर पुगेपछि, उनीहरूले पवित्र पानीले [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]] अभिषेक ([[शिव]] लिङ्गको धार्मिक स्नान) गर्छन्।<ref>{{Cite news|url=https://www.hindustantimes.com/india-news/baba-baidyanath-dham-abshishek|title=Thousands Perform Abhishek at Baba Baidyanath Dham|date=2023-08-10|work=Hindustan Times|access-date=2024-02-01}}</ref>
== प्रमुख आकर्षणहरू ==
* '''[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]'''-भगवान [[शिव]] को बाह्र ज्योतिर्लिंगहरू मध्ये एक।<ref>{{Cite book|title=Jyotirlingas of India}}</ref>
* शिवगङ्गा ताल-मन्दिर नजिकैको एउटा पवित्र पोखरी जहाँ भक्तहरूले प्रार्थना गर्नु अघि डुबकी लगाउँछन्।<ref>{{Cite web |title=Sacred Ponds in Hinduism |url=https://www.indiaheritage.org/sacred-ponds-in-hinduism/ |access-date=2024-02-01}}</ref>
* बाबा अजगाइबिनाथ मन्दिर-तीर्थयात्रीहरूले पानी सङ्कलन गर्ने मन्दिर र स्थान र यसरी श्रावणी मेलाको सुरुवात हुन्छ। <ref>{{Cite book|url=https://www.google.co.in/books/edition/Pilgrimage_Centres_of_India/Qqei_Wo1qXwC?hl=en&gbpv=1&dq=ajgaibinath+dham&pg=PA186&printsec=frontcover|title=Pilgrimage Centres of India|date=2003}}</ref>
* बसुकिनाथ मन्दिर-[[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बैद्यनाथ धाम]] प्रार्थना गरेपछि [[तीर्थयात्रा|तीर्थयात्रीहरू]] भ्रमण गर्ने महत्त्वपूर्ण मन्दिर।<ref>{{Cite news|url=https://www.ndtv.com/religion/basukinath-temple-history-and-significance-4283619|title=Basukinath Temple: A Pilgrim's Guide|date=2023-08-15|work=NDTV|access-date=2024-02-01}}</ref>
== पनि हेर्नुहोस् ==
* [[कांवड यात्रा|काँवर यात्रा]]
* [[वैद्यनाथ ज्योतिर्लिङ्ग मन्दिर|बाबा बैद्यनाथ मन्दिर]]
* सुल्तानगञ्ज
== सन्दर्भहरू ==
<references />
[[श्रेणी:हिन्दु चाडपर्वहरू]]
3pmzq01byu9fpew6mcznh4pemi67hs8
आठ हजार भन्दा बढी उचाइ भएका हिमालहरू
0
151418
1372357
2026-08-26T07:01:18Z
पर्वत सुवेदी
31224
[[आठ हजारी]]मा अनुप्रेषण गर्दै
1372357
wikitext
text/x-wiki
#अनुप्रेषण [[आठ हजारी]]
bndjz706uaczqx33mcro0cakxja3g8f