模組:Celestial object quadrangle

被永久保护的模块
维基百科,自由的百科全书
文档图示 模块文档[查看] [编辑] [历史] [清除缓存]

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 tail
  • Category:{{#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

-- 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