模块:Celestial object quadrangle
此模块已评为beta版,可广泛使用。因其新近完成,请谨慎使用,以确保输出结果符合预期。 |
Usage
For the quadrangle category, use
{{#invoke:Celestial object quadrangle|category|globe=GLOBE|lat=XX.XXX|lon=YY.YYY}}
or, for the quadrangle name, use
{{#invoke:Celestial object quadrangle|name|globe=GLOBE|lat=XX.XXX|lon=YY.YYY}}
Parameter | Description |
---|---|
globe |
Name of the celestial object: moon , mars , mercury , or venus
|
lat |
Degrees latitude (between -90 and 90) |
lon |
Degrees longitude (between -360 and 360) |
Tests
Category
The following two invocations should produce identical results
{{chop head and tail|{{#invoke:Celestial object quadrangle|category|globe=mars|lat=80|lon=-10}}}}
→ Template:Chop head and tailCategory:{{#invoke:Celestial object quadrangle|name|globe=mars|lat=80|lon=-10}} quadrangle
→ Category:北海 quadrangle
Mars
Input parameters | Module result | Expected result |
---|---|---|
West | ||
|globe=mars|lat=80|lon=-10
|
北海 | Mare Boreum |
|globe=mars|lat=60|lon=-10
|
阿西达里亚海 | Mare Acidalium |
|globe=mars|lat=60|lon=-70
|
阿耳卡狄亚 | Arcadia |
|globe=mars|lat=60|lon=-130
|
迪阿克里亚 | Diacria |
|globe=mars|lat=60|lon=-190
|
刻布壬尼亚 | Cebrenia |
|globe=mars|lat=60|lon=-280
|
卡西乌斯 | Casius |
|globe=mars|lat=60|lon=-340
|
伊斯墨纽斯湖 | Ismenius Lacus |
|globe=mars|lat=20|lon=-10
|
奥克夏沼 | Oxia Palus |
|globe=mars|lat=20|lon=-55
|
卢娜沼 | Lunae Palus |
|globe=mars|lat=20|lon=-100
|
塔尔西斯 | Tharsis |
|globe=mars|lat=20|lon=-145
|
亚马孙 | Amazonis |
|globe=mars|lat=20|lon=-190
|
埃律西昂 | Elysium |
|globe=mars|lat=20|lon=-235
|
阿蒙蒂斯 | Amenthes |
|globe=mars|lat=20|lon=-280
|
大瑟提斯 | Syrtis Major |
|globe=mars|lat=20|lon=-325
|
阿拉伯 | Arabia |
|globe=mars|lat=-20|lon=-10
|
珍珠湾 | Margaritifer Sinus |
|globe=mars|lat=-20|lon=-55
|
科普莱特斯 | Coprates |
|globe=mars|lat=-20|lon=-100
|
凤凰湖 | Phoenicis Lacus |
|globe=mars|lat=-20|lon=-145
|
门农尼亚 | Memnonia |
|globe=mars|lat=-20|lon=-190
|
埃俄利斯 | Aeolis |
|globe=mars|lat=-20|lon=-235
|
第勒尼安海 | Mare Tyrrhenum |
|globe=mars|lat=-20|lon=-280
|
雅庇吉亚 | Iapygia |
|globe=mars|lat=-20|lon=-325
|
示巴湾 | Sinus Sabaeus |
|globe=mars|lat=-60|lon=-10
|
阿耳古瑞 | Argyre |
|globe=mars|lat=-60|lon=-70
|
陶玛西亚 | Thaumasia |
|globe=mars|lat=-60|lon=-130
|
法厄同 | Phaethontis |
|globe=mars|lat=-60|lon=-190
|
艾利达尼亚 | Eridania |
|globe=mars|lat=-60|lon=-280
|
希腊 | Hellas |
|globe=mars|lat=-60|lon=-340
|
挪亚 | Noachis |
|globe=mars|lat=-80|lon=-10
|
火星南海 | Mare Australe |
East | ||
|globe=mars|lat=80|lon=10
|
北海 | Mare Boreum |
|globe=mars|lat=60|lon=10
|
伊斯墨纽斯湖 | Ismenius Lacus |
|globe=mars|lat=60|lon=70
|
卡西乌斯 | Casius |
|globe=mars|lat=60|lon=130
|
刻布壬尼亚 | Cebrenia |
|globe=mars|lat=60|lon=190
|
迪阿克里亚 | Diacria |
|globe=mars|lat=60|lon=280
|
阿耳卡狄亚 | Arcadia |
|globe=mars|lat=60|lon=340
|
阿西达里亚海 | Mare Acidalium |
|globe=mars|lat=20|lon=10
|
阿拉伯 | Arabia |
|globe=mars|lat=20|lon=55
|
大瑟提斯 | Syrtis Major |
|globe=mars|lat=20|lon=100
|
阿蒙蒂斯 | Amenthes |
|globe=mars|lat=20|lon=145
|
埃律西昂 | Elysium |
|globe=mars|lat=20|lon=190
|
亚马孙 | Amazonis |
|globe=mars|lat=20|lon=235
|
塔尔西斯 | Tharsis |
|globe=mars|lat=20|lon=280
|
卢娜沼 | Lunae Palus |
|globe=mars|lat=20|lon=325
|
奥克夏沼 | Oxia Palus |
|globe=mars|lat=-20|lon=10
|
示巴湾 | Sinus Sabaeus |
|globe=mars|lat=-20|lon=55
|
雅庇吉亚 | Iapygia |
|globe=mars|lat=-20|lon=100
|
第勒尼安海 | Mare Tyrrhenum |
|globe=mars|lat=-20|lon=145
|
埃俄利斯 | Aeolis |
|globe=mars|lat=-20|lon=190
|
门农尼亚 | Memnonia |
|globe=mars|lat=-20|lon=235
|
凤凰湖 | Phoenicis Lacus |
|globe=mars|lat=-20|lon=280
|
科普莱特斯 | Coprates |
|globe=mars|lat=-20|lon=325
|
珍珠湾 | Margaritifer Sinus |
|globe=mars|lat=-60|lon=10
|
挪亚 | Noachis |
|globe=mars|lat=-60|lon=70
|
希腊 | Hellas |
|globe=mars|lat=-60|lon=130
|
艾利达尼亚 | Eridania |
|globe=mars|lat=-60|lon=190
|
法厄同 | Phaethontis |
|globe=mars|lat=-60|lon=280
|
陶玛西亚 | Thaumasia |
|globe=mars|lat=-60|lon=340
|
阿耳古瑞 | Argyre |
|globe=mars|lat=-80|lon=10
|
火星南海 | Mare Australe |
Mercury
Input parameters | Module result | Expected result |
---|---|---|
|globe=mercury|lat=-69|lon=-103
|
巴赫 | Bach |
|globe=mercury|lat=-20|lon=-124
|
贝多芬 | Beethoven |
|globe=mercury|lat=73.4|lon=-79.5
|
水星北极 | Borealis |
|globe=mercury|lat=-33.9|lon=-347.5
|
德布西 | Debussy |
|globe=mercury|lat=-8.7|lon=-340.3
|
德兰 | Derain |
|globe=mercury|lat=-56.3|lon=-38.3
|
发现号 | Discovery |
|globe=mercury|lat=10.79|lon=-245.87
|
爱明内斯库 | Eminescu |
|globe=mercury|lat=58.3|lon=-342.3
|
北斋 | Hokusai |
|globe=mercury|lat=-11.35|lon=-31.23
|
古柏 | Kuiper |
|globe=mercury|lat=-45.0|lon=-109.1
|
米开朗基罗 | Michelangelo |
|globe=mercury|lat=-52.6|lon=-234.2
|
聂鲁达 | Neruda |
|globe=mercury|lat=27.28|lon=-240.93
|
拉德特拉迪 | Raditladi |
|globe=mercury|lat=49.7|lon=-150.9
|
莎士比亚 | Shakespeare |
|globe=mercury|lat=-16.3|lon=-163.5
|
托尔斯泰 | Tolstoj |
|globe=mercury|lat=50.9|lon=-31.1
|
维多利亚 | Victoria |
Moon
Input parameters | Module result | Expected result |
---|---|---|
West | ||
|globe=moon|lat=80|lon=-10
|
LQ01 | LQ01 |
|globe=moon|lat=60|lon=-10
|
LQ04 | LQ04 |
|globe=moon|lat=60|lon=-70
|
LQ03 | LQ03 |
|globe=moon|lat=60|lon=-130
|
LQ02 | LQ02 |
|globe=moon|lat=60|lon=-190
|
LQ07 | LQ07 |
|globe=moon|lat=60|lon=-280
|
LQ06 | LQ06 |
|globe=moon|lat=60|lon=-340
|
LQ05 | LQ05 |
|globe=moon|lat=20|lon=-10
|
LQ11 | LQ11 |
|globe=moon|lat=20|lon=-55
|
LQ10 | LQ10 |
|globe=moon|lat=20|lon=-100
|
LQ09 | LQ09 |
|globe=moon|lat=20|lon=-145
|
LQ08 | LQ08 |
|globe=moon|lat=20|lon=-190
|
LQ15 | LQ15 |
|globe=moon|lat=20|lon=-235
|
LQ14 | LQ14 |
|globe=moon|lat=20|lon=-280
|
LQ13 | LQ13 |
|globe=moon|lat=20|lon=-325
|
LQ12 | LQ12 |
|globe=moon|lat=-20|lon=-10
|
LQ19 | LQ19 |
|globe=moon|lat=-20|lon=-55
|
LQ18 | LQ18 |
|globe=moon|lat=-20|lon=-100
|
LQ17 | LQ17 |
|globe=moon|lat=-20|lon=-145
|
LQ16 | LQ16 |
|globe=moon|lat=-20|lon=-190
|
LQ23 | LQ23 |
|globe=moon|lat=-20|lon=-235
|
LQ22 | LQ22 |
|globe=moon|lat=-20|lon=-280
|
LQ21 | LQ21 |
|globe=moon|lat=-20|lon=-325
|
LQ20 | LQ20 |
|globe=moon|lat=-60|lon=-10
|
LQ26 | LQ26 |
|globe=moon|lat=-60|lon=-70
|
LQ25 | LQ25 |
|globe=moon|lat=-60|lon=-130
|
LQ24 | LQ24 |
|globe=moon|lat=-60|lon=-190
|
LQ29 | LQ29 |
|globe=moon|lat=-60|lon=-280
|
LQ28 | LQ28 |
|globe=moon|lat=-60|lon=-340
|
LQ27 | LQ27 |
|globe=moon|lat=-80|lon=-10
|
LQ30 | LQ30 |
East | ||
|globe=moon|lat=80|lon=10
|
LQ01 | LQ01 |
|globe=moon|lat=60|lon=10
|
LQ05 | LQ05 |
|globe=moon|lat=60|lon=70
|
LQ06 | LQ06 |
|globe=moon|lat=60|lon=130
|
LQ07 | LQ07 |
|globe=moon|lat=60|lon=190
|
LQ02 | LQ02 |
|globe=moon|lat=60|lon=280
|
LQ03 | LQ03 |
|globe=moon|lat=60|lon=340
|
LQ04 | LQ04 |
|globe=moon|lat=20|lon=10
|
LQ12 | LQ12 |
|globe=moon|lat=20|lon=55
|
LQ13 | LQ13 |
|globe=moon|lat=20|lon=100
|
LQ14 | LQ14 |
|globe=moon|lat=20|lon=145
|
LQ15 | LQ15 |
|globe=moon|lat=20|lon=190
|
LQ08 | LQ08 |
|globe=moon|lat=20|lon=235
|
LQ09 | LQ09 |
|globe=moon|lat=20|lon=280
|
LQ10 | LQ10 |
|globe=moon|lat=20|lon=325
|
LQ11 | LQ11 |
|globe=moon|lat=-20|lon=10
|
LQ20 | LQ20 |
|globe=moon|lat=-20|lon=55
|
LQ21 | LQ21 |
|globe=moon|lat=-20|lon=100
|
LQ22 | LQ22 |
|globe=moon|lat=-20|lon=145
|
LQ23 | LQ23 |
|globe=moon|lat=-20|lon=190
|
LQ16 | LQ16 |
|globe=moon|lat=-20|lon=235
|
LQ17 | LQ17 |
|globe=moon|lat=-20|lon=280
|
LQ18 | LQ18 |
|globe=moon|lat=-20|lon=325
|
LQ19 | LQ19 |
|globe=moon|lat=-60|lon=10
|
LQ27 | LQ27 |
|globe=moon|lat=-60|lon=70
|
LQ28 | LQ28 |
|globe=moon|lat=-60|lon=130
|
LQ29 | LQ29 |
|globe=moon|lat=-60|lon=190
|
LQ24 | LQ24 |
|globe=moon|lat=-60|lon=280
|
LQ25 | LQ25 |
|globe=moon|lat=-60|lon=340
|
LQ26 | LQ26 |
|globe=moon|lat=-80|lon=10
|
LQ30 | LQ30 |
Venus
Input parameters | Module result | Expected result |
---|---|---|
|globe=venus|lat=60|lon=90
|
伊丝塔 | Ishtar Terra |
|globe=venus|lat=40|lon=20
|
赛德娜 | Sedna Planitia |
|globe=venus|lat=40|lon=80
|
尼俄伯 | Niobe Planitia |
|globe=venus|lat=40|lon=200
|
关妮薇 | Guinevere Planitia |
|globe=venus|lat=-40|lon=20
|
拉维尼亚 | Lavinia Planitia |
|globe=venus|lat=-40|lon=80
|
阿佛洛狄忒 | Aphrodite Planitia |
|globe=venus|lat=-40|lon=200
|
海伦 | Helen Planitia |
|globe=venus|lat=-60|lon=90
|
拉达 | Lada Terra |
|globe=venus|lat=60|lon=-90
|
伊丝塔 | Ishtar Terra |
|globe=venus|lat=40|lon=-20
|
赛德娜 | Sedna Planitia |
|globe=venus|lat=40|lon=-80
|
关妮薇 | Guinevre Planitia |
|globe=venus|lat=40|lon=-200
|
尼俄伯 | Niobe Planitia |
|globe=venus|lat=-40|lon=-20
|
拉维尼亚 | Lavinia Planitia |
|globe=venus|lat=-40|lon=-80
|
海伦 | Helen Planitia |
|globe=venus|lat=-40|lon=-200
|
阿佛洛狄忒 | Aphrodite Terra |
|globe=venus|lat=-60|lon=-90
|
拉达 | Lada Terra |
Templates using this module
- {{Infobox feature on Mars}}
- {{Infobox feature on Mercury}}
- {{Infobox feature on Venus}}
- {{Infobox lunar crater or mare}}
- {{Infobox Mars crater}}
- {{Infobox Mercury crater}}
- {{Infobox Venus crater}}
- {{Venus coords and quad cat}}
- {{Lunar quadrangle}} (legacy)
- {{Mars quadrangle}} (legacy)
- {{Mercury quadrangle category}} (legacy)
- {{Venus quadrangle}} (legacy)
-- This module implements/replaces
-- [[Template:Lunar quadrangle]]
-- [[Template:Mars quadrangle]]
-- [[Template:Mercury quadrangle category]]
-- [[Template:Venus quadrangle]]
local p = {}
-- 月球區
local function moonquad(lat, lon)
local function LQ(n)
if n < 10 then
return 'LQ0' .. n
else
return 'LQ' .. n
end
end
-- Note: requires positive longitude coordinates
if lat > 65 then
return LQ(1)
elseif lat > 30 then
if lon >= 180 then
return LQ(2 + math.floor( (lon - 180) / 60 ) )
else
return LQ(5 + math.floor( lon / 60 ) )
end
elseif lat >= 0 then
if lon >= 180 then
return LQ(8 + math.floor( (lon - 180) / 45 ) )
else
return LQ(12 + math.floor( lon / 45 ) )
end
elseif lat >= -30 then
if lon >= 180 then
return LQ(16 + math.floor( (lon - 180) / 45 ) )
else
return LQ(20 + math.floor( lon / 45 ) )
end
elseif lat >= -65 then
if lon >= 180 then
return LQ(24 + math.floor( (lon - 180) / 60 ) )
else
return LQ(27 + math.floor( lon / 60 ) )
end
else
return LQ(30)
end
return 'Error'
end
--火星區
local function marsquad(lat, lon)
-- Note: requires positive longitude coordinates
if lat > 65 then
return '北海'
elseif lat > 30 then
if lon < 60 then return '伊斯墨纽斯湖'
elseif lon < 120 then return '卡西乌斯'
elseif lon < 180 then return '刻布壬尼亚'
elseif lon < 240 then return '迪阿克里亚'
elseif lon < 300 then return '阿耳卡狄亚'
else return '阿西达里亚海' end
elseif lat >= 0 then
if lon < 45 then return '阿拉伯'
elseif lon < 90 then return '大瑟提斯'
elseif lon < 135 then return '阿蒙蒂斯'
elseif lon < 180 then return '埃律西昂'
elseif lon < 225 then return '亚马孙'
elseif lon < 270 then return '塔尔西斯'
elseif lon < 315 then return '卢娜沼'
else return '奥克夏沼' end
elseif lat >= -30 then
if lon < 45 then return '示巴湾'
elseif lon < 90 then return '雅庇吉亚'
elseif lon < 135 then return '第勒尼安海'
elseif lon < 180 then return '埃俄利斯'
elseif lon < 225 then return '门农尼亚'
elseif lon < 270 then return '凤凰湖'
elseif lon < 315 then return '科普莱特斯'
else return '珍珠湾' end
elseif lat >= -65 then
if lon < 60 then return '挪亚'
elseif lon < 120 then return '希腊'
elseif lon < 180 then return '艾利达尼亚'
elseif lon < 240 then return '法厄同'
elseif lon < 300 then return '陶玛西亚'
else return '阿耳古瑞' end
else
return '火星南海'
end
end
--水星區
local function mercuryquad(lat, lon)
-- Note: requires positive longitude coordinates
if lat >= 66 then
return '水星北極'
elseif lat >= 21 then
if lon < 90 then return '北齋'
elseif lon < 180 then return '拉德特拉迪'
elseif lon < 270 then return '莎士比亞'
else return '維多利亞' end
elseif lat > -21 then
if lon < 72 then return '德蘭'
elseif lon < 144 then return '愛明內斯庫'
elseif lon < 216 then return '托爾斯泰'
elseif lon < 266 then return '貝多芬'
else return '古柏' end
elseif lat > -66 then
if lon < 90 then return '德布西'
elseif lon < 180 then return '聶魯達'
elseif lon < 270 then return '米開朗基羅'
else return '發現號' end
else
return '巴赫'
end
return 'Error'
end
--金星區
local function venusquad(lat, lon)
-- Note: requires positive longitude coordinates
if lat > 57 then
return '伊絲塔'
elseif lat >= 0 then
if lon < 60 or lon >= 300 then return '賽德娜'
elseif lon < 180 then return '尼俄伯'
else return '關妮薇' end
elseif lat >= -57 then
if lon < 60 or lon >= 300 then return '拉維尼亞'
elseif lon < 180 then return '阿佛洛狄忒'
else return '海倫' end
else
return '拉達'
end
end
local function quad_name(lat, lon, globe)
-- lower case
globe = globe:lower() or ''
-- convert to numbers
lat = tonumber(lat) or ''
lon = tonumber(lon) or ''
-- get the quad name
if lat ~= '' and lon ~= '' and globe ~= '' then
if lon < 0 then lon = lon + 360 end
if lon < 0 or lon > 360 then
return 'Error'
end
if globe == 'mars' then
return marsquad(lat, lon)
elseif globe == 'mercury' then
return mercuryquad(lat, lon)
elseif globe == 'moon' then
return moonquad(lat, lon)
elseif globe == 'venus' then
return venusquad(lat, lon)
end
end
return 'Error'
end
function p.category(frame)
local args = frame.args
local res = quad_name(args['lat'] or '', args['lon'] or '', args['globe'] or '')
if res ~= 'Error' then
if args['nameonly'] and args['nameonly'] ~= '' then
return res
else
return '[[Category:' .. res .. '方格]]'
end
end
return '<span class="error">Error</span>'
end
function p.name(frame)
local args = frame.args
local res = quad_name(args['lat'] or '', args['lon'] or '', args['globe'] or '')
if res ~= 'Error' then
return res
end
return '<span class="error">Error</span>'
end
return p