Aller au contenu

Module:OSM

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 6 août 2015 à 10:17 et modifiée en dernier par Polyglot (discuter | contributions) (développement commencé sur nl.WP, puis continué sur en.WP). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

 Documentation[voir] [modifier] [historique] [purger]

Utilisation

{{#invoke:OSM|overpass}}
  • Rechercher Openstreetmap indépendamment des tags wikidata
{{#invoke:OSM|wd}}
  • Rechercher des objets ayant le tag wikidata=Q.... en Openstreetmap
{{#invoke:OSM|etym}}
  • Rechercher des objets ayant le tag name:etymology:wikidata=Q....= en Openstreetmap
{{#invoke:OSM|subject}}
  • Rechercher des objets ayant le tag subject:wikidata=Q....= en Openstreetmap
{{#invoke:OSM|artist}}
{{#invoke:OSM|architect}}
{{#invoke:OSM|subject}}
{{#invoke:OSM|operator}}
{{#invoke:OSM|brand}}

Paramètres

  • display  : Texte rendu
  • timeout  : par défaut: 15s
  • link  : par défaut: yes, mettre no, si on veut utiliser le uri dans d'autres sjablônes comme {{Citer web}}
  • id  : peut contenir 1 ou plusieurs items Q de wikidata, la valeur par défaut est l'identifiant wikidata de la page même
  • query  : il est possible de limiter la recherche pour n'avoir que des highway, par exemple
  • prim  : specifier pour limiter la recherche aux objets de type node, way et/ou relation
  • coord  : coördonnées et un facteur de zoom factor dans ce format: 47.0618984;15.4370248;17
  • limitToBBOX: par défaut: yes, s'il y a de coordonnées la requête sera limité dans la zone affichée
  • run  : par défaut: yes, Utiliser no si c'est l'intention que l'utilisateur fait d'autres modifications à la requête ou pour qu'il puisse chercher dans une autre région sur la carte

Exemples

Pour des exemples, voir la page de test permettant de tester diverses modifications apportées. All tests passed.

test_etym :
Text Expected Actual
✔️ {{#invoke:OSM|etym|display=Map|id=Q2360250}} [http://overpass-turbo.eu/?Q=%28%0Anode%5B%22name%3Aetymology%3Awikidata%22%3D%22Q2360250%22%5D%3B%0Away%5B%22name%3Aetymology%3Awikidata%22%3D%22Q2360250%22%5D%3B%0Arelation%5B%22name%3Aetymology%3Awikidata%22%3D%22Q2360250%22%5D%3B%0A%29%3B%0Aout%3B%0A%3E%3B%0Aout%20meta%20qt%3B%0A&R Map] [http://overpass-turbo.eu/?Q=%28%0Anode%5B%22name%3Aetymology%3Awikidata%22%3D%22Q2360250%22%5D%3B%0Away%5B%22name%3Aetymology%3Awikidata%22%3D%22Q2360250%22%5D%3B%0Arelation%5B%22name%3Aetymology%3Awikidata%22%3D%22Q2360250%22%5D%3B%0A%29%3B%0Aout%3B%0A%3E%3B%0Aout%20meta%20qt%3B%0A&R Map]
test_wd :
Text Expected Actual
✔️ {{#invoke:OSM|wd|display=Vresse and Florenville|id=Q650206;Q713300}} [http://overpass-turbo.eu/?Q=%28%0Anode%5B%22wikidata%22~%22%5BQ650206%7CQ713300%5D%22%5D%3B%0Away%5B%22wikidata%22~%22%5BQ650206%7CQ713300%5D%22%5D%3B%0Arelation%5B%22wikidata%22~%22%5BQ650206%7CQ713300%5D%22%5D%3B%0A%29%3B%0Aout%3B%0A%3E%3B%0Aout%20meta%20qt%3B%0A&R Vresse and Florenville] [http://overpass-turbo.eu/?Q=%28%0Anode%5B%22wikidata%22~%22%5BQ650206%7CQ713300%5D%22%5D%3B%0Away%5B%22wikidata%22~%22%5BQ650206%7CQ713300%5D%22%5D%3B%0Arelation%5B%22wikidata%22~%22%5BQ650206%7CQ713300%5D%22%5D%3B%0A%29%3B%0Aout%3B%0A%3E%3B%0Aout%20meta%20qt%3B%0A&R Vresse and Florenville]
✔️ {{#invoke:OSM|wd|display=Church of Vresse|id=Q20748715|coord=49.71513;5.23446;14}} [http://overpass-turbo.eu/?Q=%28%0Anode%5B%22wikidata%22%3D%22Q20748715%22%5D%28%7B%7Bbbox%7D%7D%29%3B%20%2F%2F%20remove%20the%20%28%7B%7Bbbox%7D%7D%29if%20you%20want%20the%20query%20to%20be%20executed%20globally%0Away%5B%22wikidata%22%3D%22Q20748715%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0Arelation%5B%22wikidata%22%3D%22Q20748715%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%29%3B%0Aout%3B%0A%3E%3B%0Aout%20meta%20qt%3B%0A&C=49.71513;5.23446;14&R Church of Vresse] [http://overpass-turbo.eu/?Q=%28%0Anode%5B%22wikidata%22%3D%22Q20748715%22%5D%28%7B%7Bbbox%7D%7D%29%3B%20%2F%2F%20remove%20the%20%28%7B%7Bbbox%7D%7D%29if%20you%20want%20the%20query%20to%20be%20executed%20globally%0Away%5B%22wikidata%22%3D%22Q20748715%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0Arelation%5B%22wikidata%22%3D%22Q20748715%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%29%3B%0Aout%3B%0A%3E%3B%0Aout%20meta%20qt%3B%0A&C=49.71513;5.23446;14&R Church of Vresse]
local function buildquery(frame, target)
	local textToDisplay, leftLink, rightLink, runQueryRightAway, itemID, query, coord, bbox, remark, overpassUrl, primitives
	
	if frame.args['display'] then
		-- text to display on link
		textToDisplay = ' ' .. frame.args['display']
	else
		textToDisplay = ''
	end
	if frame.args['link'] and frame.args['link'] == 'no' then
		-- just return the url
		leftLink = ''
		rightLink = ''
		textToDisplay = ''
	else
		leftLink = '['
		rightLink = ']'
	end
	if frame.args['run'] and frame.args['run'] == 'no' then
		-- don't run immediately
		runQueryRightAway = ''
	else
		runQueryRightAway = '&R'
	end
	if frame.args['id'] then
		-- build query for specific Q-item(s) 
		itemID = frame.args['id']
	else
		itemID = mw.wikibase.getEntityObject()
		if itemID == nil then
			return "This page doesn't have a wikidata entry"
		end
		-- build query for current page
		itemID = itemID.id
	end
	if itemID:find(";") == nil then
		-- If there are no ; in the itemID, we only need to search for 1 value
		itemID = '"="' .. itemID
	else
		-- If more than 1 Q-number is provided, perform a regular expression based search instead
		itemID = '"~"' .. '[' .. itemID:gsub(";", "\|") .. ']'
	end
	if frame.args['query'] then
		query = frame.args['query']
	else
		query = ''
	end
	if frame.args['coord'] then
		-- The user can provide coordinates and a zoom factor
		coord = '&C=' .. frame.args['coord']
		-- In that case we can limit the search to the area in view
		bbox = '({{bbox}})'
		-- and tell them how to search wider.
		remark = ' // remove the ' .. bbox .. 'if you want the query to be executed globally'
	else
		coord = ''
		bbox = ''
		remark = ''
	end
	overpassUrl = '(\n'
	-- if the user specifies prim(itives), but then leaves the string empty, abort
	if frame.args['prim'] then
		if frame.args['prim']=='' then
			return "Please indicate which primitives you want to query for"
		end
		primitives = frame.args['prim']
	else
		primitives = 'nwr'
	end

	if primitives:find("n") then
		-- Include nodes
		overpassUrl = overpassUrl .. 'node["' .. target .. itemID ..'"]' .. query .. bbox .. ';' .. remark .. '\n'
	end
	if primitives:find("w") then
		-- Include ways
		overpassUrl = overpassUrl .. 'way["' .. target .. itemID .. '"]' .. query .. bbox .. ';\n'
	end
	if primitives:find("r") then
		-- Include relations
		overpassUrl = overpassUrl .. 'relation["' .. target .. itemID .. '"]' .. query .. bbox .. ';\n'
	end	
	overpassUrl = overpassUrl .. ');\n'
	overpassUrl = overpassUrl .. 'out;\n>;\n'
	overpassUrl = overpassUrl .. 'out meta qt;\n'
	return leftLink .. 'http://overpass-turbo.eu/?Q=' .. mw.uri.encode(overpassUrl, "PATH" ) .. coord .. runQueryRightAway .. textToDisplay .. rightLink
end

local p = {}

function p.overpass( frame )
	return buildquery(frame, '')
end

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