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 19:00. (regex repareren)
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 29: attempt to concatenate field 'linktext' (a nil value)
meerdere wikidata-items
{{#invoke:OSM|wd|display=Vresse en Florenville|id=Q650206;Q713300}} Vresse and Florenville fail Luafout op regel 29: attempt to concatenate field 'linktext' (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 29: 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']
	else
		coord = ''
	end
	overpassUrl = '(\n'
	overpassUrl = overpassUrl .. 'node["' .. target .. itemID ..'"];\n'
	overpassUrl = overpassUrl .. 'way["' .. target .. itemID .. '"];\n'
	overpassUrl = overpassUrl .. 'relation["' .. target .. itemID .. '"];\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