Naar inhoud springen

Module:OSM

Uit Wikipedia, de vrije encyclopedie
Dit is een oude versie van deze pagina, bewerkt door Polyglot (overleg | bijdragen) op 4 aug 2015 om 20:24. (bbox toevoegen, als er voor gekozen wordt om coördinaten en een zoomfactor mee te geven, met als gevolg dat de query op een kleiner gebied wordt uitgevoerd)
Deze versie kan sterk verschillen van de huidige versie van deze pagina.
Moduledocumentatie​[bekijk] [bewerk] [ververs] [geschiedenis]

Doel

Genereert een link naar een kaart van OpenStreetMap (OSM).

Gebruik

{{#invoke:OSM|wd}}
{{#invoke:OSM|overpass}}
{{#invoke:OSM|etym}}

Parameters

display
De tekst die getoond wordt
link
Standaard aan, maar kan op no gezet worden voor gebruik in andere sjablonen
id
Kan een of meerdere Q-nummers van een wikidata-item bevatten, zo niet gaat het over het artikel waar het sjabloon werd aangeroepen
coord
Coördinaten en een zoomfactor in het volgende formaat: C=47.0618984;15.4370248;17. Op basis hiervan wordt een gebied bepaald (bbox)
limitToBBOX
Standaard yes. Query bevat dan enkel elementen die binnen dat gebied vallen
prim
Hiermee kan worden aangegeven dat enkel nodes, ways en/of relaties moeten worden opgehaald
query
Dit laat toe om de query uit te breiden, zodat bijvoorbeeld enkel straten of grafzerken worden opgehaald

Testwaarden

Command Expected result Pass/Fail Result
OSM-objecten met afgeleide of verwijzende namen
{{#invoke:OSM|etym|display=Kaart}} Kaart fail Luafout op regel 27: attempt to concatenate global 'remark' (a nil value)
meerdere wikidata-items
{{#invoke:OSM|wd|display=Vresse en Florenville|id=Q650206;Q713300}} Vresse and Florenville fail Luafout op regel 27: attempt to concatenate global 'remark' (a nil value)
met coördinaten, wat ervoor zorgt dat het zoeken in een kleiner gebied gebeurt.
{{#invoke:OSM|wd|display=Kerk van Vresse|id=Q20748715|coord=49.71513;5.23446;14}} Kerk van Vresse fail Luafout op regel 32: attempt to concatenate field 'linktext' (a nil value)

function buildquery(frame, target)
	if frame.args['id'] then
		itemID = frame.args['id']
	else
		itemID = mw.wikibase.getEntityObject()
		if itemID == nil then
			return nil
		else
			itemID = itemID.id
		end
	end
	if itemID:find(";") == nil then
		itemID = '"="' .. itemID
	else
		-- If more than 1 Q-number is provided, perform a regular expression search
		itemID = '"~"' .. '[' .. itemID:gsub(";", "\|") .. ']'
	end
	if frame.args['coord'] then
		coord = '&C=' .. frame.args['coord']
		bbox = '({{bbox}})'
		remark = ' # remove the ' .. bbox .. 'if you want the query to be executed globally'
	else
		coord = ''
		bbox = ''
	end
	overpassUrl = '(\n'
	overpassUrl = overpassUrl .. 'node["' .. target .. itemID ..'"]' .. bbox .. ';' .. remark .. '\n'
	overpassUrl = overpassUrl .. 'way["' .. target .. itemID .. '"]' .. bbox .. ';\n'
	overpassUrl = overpassUrl .. 'relation["' .. target .. itemID .. '"]' .. bbox .. ';\n);\n'
	overpassUrl = overpassUrl .. 'out;\n>;\n'
	overpassUrl = overpassUrl .. 'out meta qt;\n'
    return '[http://overpass-turbo.eu/?Q=' .. mw.uri.encode(overpassUrl, "PATH" ) .. coord .. '&R ' .. frame.args['linktext'] .. ']'
end

local p = {}

function p.wd( frame )
	return buildquery(frame, 'wikidata')
end

function p.etym( frame )
	return buildquery(frame, 'name:etymology:wikidata')
end

function p.subject( frame )
	return buildquery(frame, 'subject:wikidata')
end

function p.artist( frame )
	return buildquery(frame, 'artist:wikidata')
end

function p.architect( frame )
	return buildquery(frame, 'architect:wikidata')
end

function p.operator( frame )
	return buildquery(frame, 'operator:wikidata')
end

function p.brand( frame )
	return buildquery(frame, 'brand:wikidata')
end

return p