diff --git a/.gitignore b/.gitignore index 053bf29..25d2ccb 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,5 @@ public/*.json .idea -html_cache/* \ No newline at end of file +html_cache/* +/html_cache/ diff --git a/src/Controller/WikiController.php b/src/Controller/WikiController.php index 36340d5..c43a7fa 100644 --- a/src/Controller/WikiController.php +++ b/src/Controller/WikiController.php @@ -778,6 +778,7 @@ class WikiController extends AbstractController $scriptPath = $this->getParameter('kernel.project_dir') . '/wiki_compare/wiki_compare.py'; $englishHtml = null; $frenchHtml = null; + $frenchCacheExists = false; if (file_exists($scriptPath)) { // Create a temporary Python script to fetch the page content @@ -788,25 +789,52 @@ class WikiController extends AbstractController import sys import json -from wiki_compare import fetch_wiki_page +import hashlib +from pathlib import Path +from wiki_compare import fetch_wiki_page, HTML_CACHE_DIR # Get the key from command line arguments key = sys.argv[1] language = sys.argv[2] -# Fetch the page -page = fetch_wiki_page(key, language) +# Check if we're just checking cache existence +check_cache_only = len(sys.argv) > 3 and sys.argv[3] == 'check_cache' -# Output the HTML content -if page and 'html_content' in page: - print(page['html_content']) +if check_cache_only and language == 'fr': + # For French pages, construct the URL to check cache + if key.startswith('http'): + url = key + else: + url = f"https://wiki.openstreetmap.org/wiki/FR:{key}" + + # Create cache key + cache_key = hashlib.md5(url.encode()).hexdigest() + cache_file = Path(HTML_CACHE_DIR) / f"{cache_key}.html" + + # Check if cache exists + if cache_file.exists(): + print("CACHE_EXISTS") + else: + print("CACHE_MISSING") else: - print("") + # Normal fetch operation + page = fetch_wiki_page(key, language) + + # Output the HTML content + if page and 'html_content' in page: + print(page['html_content']) + else: + print("") EOT; file_put_contents($tempScriptPath, $pythonCode); chmod($tempScriptPath, 0755); + // First check if French page exists in cache + $command = "cd " . $this->getParameter('kernel.project_dir') . "/wiki_compare && python3 {$tempScriptPath} {$key} fr check_cache"; + $cacheCheckResult = trim(shell_exec($command)); + $frenchCacheExists = ($cacheCheckResult === "CACHE_EXISTS"); + // Fetch English page $command = "cd " . $this->getParameter('kernel.project_dir') . "/wiki_compare && python3 {$tempScriptPath} {$key} en"; $englishHtml = shell_exec($command); @@ -834,7 +862,8 @@ EOT; 'english_url' => $englishUrl, 'french_edit_url' => $frenchEditUrl, 'english_html' => $englishHtml, - 'french_html' => $frenchHtml + 'french_html' => $frenchHtml, + 'french_cache_exists' => $frenchCacheExists ]); } @@ -1104,7 +1133,25 @@ EOT; if (file_exists($pagesUnavailableInEnglishFile)) { $pagesUnavailableInEnglishData = json_decode(file_get_contents($pagesUnavailableInEnglishFile), true); if (isset($pagesUnavailableInEnglishData['pages']) && is_array($pagesUnavailableInEnglishData['pages'])) { - $pagesUnavailableInEnglish = $pagesUnavailableInEnglishData['pages']; + // Deduplicate pages based on URL + $uniquePages = []; + $seenUrls = []; + + foreach ($pagesUnavailableInEnglishData['pages'] as $page) { + if (isset($page['url'])) { + // Use URL as the key for deduplication + $url = $page['url']; + if (!isset($seenUrls[$url])) { + $seenUrls[$url] = true; + $uniquePages[] = $page; + } + } else { + // If no URL, keep the page (shouldn't happen, but just in case) + $uniquePages[] = $page; + } + } + + $pagesUnavailableInEnglish = $uniquePages; } } @@ -1112,10 +1159,10 @@ EOT; $specificPages = []; $outdatedPagesFile = $this->getParameter('kernel.project_dir') . '/wiki_compare/outdated_pages.json'; if (file_exists($outdatedPagesFile)) { - $outdatedPagesData = json_decode(file_get_contents($outdatedPagesFile), true); - if (isset($outdatedPagesData['specific_pages']) && is_array($outdatedPagesData['specific_pages'])) { - $specificPages = $outdatedPagesData['specific_pages']; - } + // Use a memory-efficient approach to extract only the specific_pages array + // without loading the entire file into memory + $maxPages = 100; // Limit the number of pages to prevent memory exhaustion + $specificPages = $this->extractSpecificPagesFromJson($outdatedPagesFile, $maxPages); } // Load newly created French pages @@ -1137,6 +1184,16 @@ EOT; $availableTranslations = $translationsData['translations']; } } + + // Load keys without wiki pages + $keysWithoutWiki = []; + $keysWithoutWikiFile = $this->getParameter('kernel.project_dir') . '/wiki_compare/keys_without_wiki.json'; + if (file_exists($keysWithoutWikiFile)) { + $keysWithoutWikiData = json_decode(file_get_contents($keysWithoutWikiFile), true); + if (is_array($keysWithoutWikiData)) { + $keysWithoutWiki = $keysWithoutWikiData; + } + } return $this->render('admin/wiki.html.twig', [ 'wiki_pages' => $wikiPages, @@ -1147,7 +1204,8 @@ EOT; 'newly_created_pages' => $newlyCreatedPages, 'staleness_stats' => $stalenessStats, 'wiki_pages_stats' => $wikiPagesStats, - 'available_translations' => $availableTranslations + 'available_translations' => $availableTranslations, + 'keys_without_wiki' => $keysWithoutWiki ]); } @@ -1791,4 +1849,124 @@ EOT; return $contentHtml; } + + /** + * Extracts the specific_pages array from a large JSON file without loading the entire file into memory + * + * @param string $filePath Path to the JSON file + * @param int $maxPages Maximum number of pages to extract (to prevent memory exhaustion) + * @return array The extracted specific_pages array + */ + private function extractSpecificPagesFromJson(string $filePath, int $maxPages = 100): array + { + $specificPages = []; + + // For very large files, we'll use a more direct approach + // Instead of parsing the entire JSON structure, we'll extract just what we need + + // First, check if the file exists and is readable + if (!is_readable($filePath)) { + return $specificPages; + } + + // Get the file size + $fileSize = filesize($filePath); + if ($fileSize === false || $fileSize === 0) { + return $specificPages; + } + + // For very large files, we'll use a more efficient approach + // We'll search for the "specific_pages" key directly + $handle = fopen($filePath, 'r'); + if (!$handle) { + return $specificPages; + } + + // Variables to track parsing state + $inSpecificPages = false; + $bracketCount = 0; + $buffer = ''; + $pageCount = 0; + $lineCount = 0; + + // Skip ahead to find the specific_pages key more quickly + // This is a simple optimization for this specific file structure + $found = false; + while (!$found && ($line = fgets($handle)) !== false) { + $lineCount++; + if (strpos($line, '"specific_pages"') !== false) { + $found = true; + $inSpecificPages = true; + + // Find the opening bracket of the array + if (strpos($line, '[') !== false) { + $bracketCount = 1; + $buffer = '['; // Start the buffer with an opening bracket + } else { + // If the opening bracket is on the next line + $nextLine = fgets($handle); + if ($nextLine !== false && strpos($nextLine, '[') !== false) { + $bracketCount = 1; + $buffer = '['; // Start the buffer with an opening bracket + } + } + break; + } + } + + // If we didn't find the specific_pages key, return empty array + if (!$found) { + fclose($handle); + return $specificPages; + } + + // Now process the specific_pages array + while (($line = fgets($handle)) !== false) { + // Count opening and closing brackets to track array nesting + $openBrackets = substr_count($line, '[') + substr_count($line, '{'); + $closeBrackets = substr_count($line, ']') + substr_count($line, '}'); + $bracketCount += $openBrackets - $closeBrackets; + + // Add the line to our buffer + $buffer .= $line; + + // If we've reached the end of the array (bracketCount = 0) + if ($bracketCount === 0) { + // Parse the buffer as JSON + $parsedData = json_decode($buffer, true); + if (is_array($parsedData)) { + // Limit the number of pages to prevent memory exhaustion + $specificPages = array_slice($parsedData, 0, $maxPages); + } else { + // If parsing fails, log the error but don't crash + error_log('Failed to parse specific_pages JSON data in ' . $filePath); + } + break; + } + + // Check if we've found a complete page object (when we see a closing brace followed by a comma) + if (preg_match('/\}\s*,\s*$/m', $line)) { + $pageCount++; + // If we've reached the maximum number of pages, stop processing + if ($pageCount >= $maxPages) { + // Close the array properly + $buffer = rtrim($buffer, ",\r\n") . ']'; + // Parse the buffer as JSON + $parsedData = json_decode($buffer, true); + if (is_array($parsedData)) { + $specificPages = $parsedData; + } else { + // If parsing fails, log the error but don't crash + error_log('Failed to parse specific_pages JSON data in ' . $filePath . ' after reaching max pages'); + } + break; + } + } + } + + // Close the file + fclose($handle); + + return $specificPages; + } } \ No newline at end of file diff --git a/templates/admin/wiki.html.twig b/templates/admin/wiki.html.twig index 3859a8b..1cf652d 100644 --- a/templates/admin/wiki.html.twig +++ b/templates/admin/wiki.html.twig @@ -492,6 +492,56 @@ {% endif %} + {% if keys_without_wiki is defined and keys_without_wiki|length > 0 %} +
+
+

Clés sans page wiki ({{ keys_without_wiki|length }})

+
+
+

Ces clés OSM sont utilisées en France mais n'ont pas de page wiki. Vous pouvez contribuer en créant une page pour ces clés.

+
+ + + + + + + + + + {% for key in keys_without_wiki %} + + + + + + {% endfor %} + +
CléNombre d'utilisationsActions
+ {{ key.key }} + + {{ key.count|number_format(0, ',', ' ') }} + + +
+
+
+
+ {% endif %} +

le score de fraîcheur prend en compte d'avantage la différence entre le nombre de mots que l'ancienneté de modification. diff --git a/templates/admin/wiki_create_french.html.twig b/templates/admin/wiki_create_french.html.twig index c7913f9..7960164 100644 --- a/templates/admin/wiki_create_french.html.twig +++ b/templates/admin/wiki_create_french.html.twig @@ -140,7 +140,25 @@

- + {% if french_cache_exists and french_html %} +
+
+ Version française en cache : +
+ {{ french_html|raw }} +
+ {% else %} + {% if french_html %} + + {% else %} +
+
+ La page française n'existe pas dans le cache. +

Utilisez le formulaire d'édition pour créer la traduction.

+
+
+ {% endif %} + {% endif %}
diff --git a/templates/public/wiki_create_french.html.twig b/templates/public/wiki_create_french.html.twig index 52501f7..f56e515 100644 --- a/templates/public/wiki_create_french.html.twig +++ b/templates/public/wiki_create_french.html.twig @@ -97,7 +97,25 @@
- + {% if french_cache_exists and french_html %} +
+
+ Version française en cache : +
+ {{ french_html|raw }} +
+ {% else %} + {% if french_html %} + + {% else %} +
+
+ La page française n'existe pas dans le cache. +

Utilisez le formulaire d'édition pour créer la traduction.

+
+
+ {% endif %} + {% endif %}
diff --git a/wiki_compare/__pycache__/wiki_compare.cpython-313.pyc b/wiki_compare/__pycache__/wiki_compare.cpython-313.pyc index 0c05941..82e2c47 100644 Binary files a/wiki_compare/__pycache__/wiki_compare.cpython-313.pyc and b/wiki_compare/__pycache__/wiki_compare.cpython-313.pyc differ diff --git a/wiki_compare/wiki_compare.py b/wiki_compare/wiki_compare.py index 294b61b..789cc63 100755 --- a/wiki_compare/wiki_compare.py +++ b/wiki_compare/wiki_compare.py @@ -37,9 +37,15 @@ from bs4 import BeautifulSoup import logging import matplotlib.pyplot as plt import numpy as np -import nltk from pathlib import Path +# Try to import nltk, but make it optional +try: + import nltk + NLTK_AVAILABLE = True +except ImportError: + NLTK_AVAILABLE = False + # Configure logging logging.basicConfig( level=logging.INFO, @@ -50,11 +56,13 @@ logger = logging.getLogger(__name__) # Constants TAGINFO_API_URL = "https://taginfo.openstreetmap.org/api/4/keys/all" +TAGINFO_FRANCE_API_URL = "https://taginfo.geofabrik.de/europe:france/api/4/keys/without_wiki_page" WIKI_BASE_URL_EN = "https://wiki.openstreetmap.org/wiki/Key:" WIKI_BASE_URL_FR = "https://wiki.openstreetmap.org/wiki/FR:Key:" WIKI_BASE_URL = "https://wiki.openstreetmap.org/wiki/" WIKI_CATEGORY_URL = "https://wiki.openstreetmap.org/wiki/Category:FR:Traductions_d%C3%A9synchronis%C3%A9es" TOP_KEYS_FILE = "top_keys.json" +KEYS_WITHOUT_WIKI_FILE = "keys_without_wiki.json" WIKI_PAGES_CSV = "wiki_pages.csv" OUTDATED_PAGES_FILE = "outdated_pages.json" STALENESS_HISTOGRAM_FILE = "staleness_histogram.png" @@ -63,17 +71,18 @@ NUM_WIKI_PAGES = 2 # HTML cache folder HTML_CACHE_DIR = "html_cache" -# Initialize NLTK for sentence tokenization -try: - nltk.data.find('tokenizers/punkt') -except LookupError: - nltk.download('punkt') +# Initialize NLTK for sentence tokenization if available +if NLTK_AVAILABLE: + try: + nltk.data.find('tokenizers/punkt') + except LookupError: + nltk.download('punkt') -# Also download punkt_tab resource which is needed for sent_tokenize -try: - nltk.data.find('tokenizers/punkt_tab') -except LookupError: - nltk.download('punkt_tab') + # Also download punkt_tab resource which is needed for sent_tokenize + try: + nltk.data.find('tokenizers/punkt_tab') + except LookupError: + nltk.download('punkt_tab') # Create HTML cache directory if it doesn't exist Path(HTML_CACHE_DIR).mkdir(exist_ok=True) @@ -177,6 +186,41 @@ def fetch_top_keys(limit=NUM_WIKI_PAGES): logger.error(f"Error fetching data from TagInfo API: {e}") return [] +def fetch_keys_without_wiki_page(limit=36): + """ + Fetch keys used in France that are missing a wiki page from TagInfo API + + Args: + limit (int): Number of keys to fetch + + Returns: + list: List of dictionaries containing key information + """ + logger.info(f"Fetching top {limit} OSM keys without wiki pages used in France...") + + params = { + 'page': 1, + 'rp': limit, + 'english': 0, + 'sortname': 'count_all', + 'sortorder': 'desc' + } + + try: + response = requests.get(TAGINFO_FRANCE_API_URL, params=params) + response.raise_for_status() + data = response.json() + + # Extract just the key names and counts + keys_without_wiki = [{'key': item['key'], 'count': item['count_all']} for item in data['data']] + + logger.info(f"Successfully fetched {len(keys_without_wiki)} keys without wiki pages") + return keys_without_wiki + + except requests.exceptions.RequestException as e: + logger.error(f"Error fetching data from TagInfo France API: {e}") + return [] + def load_json_data(filename): """ Load data from a JSON file @@ -295,6 +339,13 @@ def check_grammar_with_grammalecte(text): logger.warning("Empty text provided for grammar checking") return [] + # Check if grammalecte-cli is available + try: + subprocess.run(['which', 'grammalecte-cli'], capture_output=True, check=True) + except subprocess.CalledProcessError: + logger.warning("grammalecte-cli not found, skipping grammar check") + return [] + logger.info("Checking grammar with grammalecte-cli...") try: @@ -520,9 +571,13 @@ def fetch_wiki_page(key, language='en', is_specific_page=False, check_grammar=Tr clean_text = content.get_text(separator=' ', strip=True) word_count = len(clean_text.split()) - # Count sentences using NLTK - sentences = nltk.sent_tokenize(clean_text) - sentence_count = len(sentences) + # Count sentences using NLTK if available, otherwise use a simple approximation + if NLTK_AVAILABLE and check_grammar: + sentences = nltk.sent_tokenize(clean_text) + sentence_count = len(sentences) + else: + # Simple approximation: count periods, exclamation marks, and question marks + sentence_count = len(re.findall(r'[.!?]+', clean_text)) # Check grammar for French pages grammar_suggestions = [] @@ -1098,18 +1153,19 @@ def main(): This function: 1. Fetches the top OSM keys from TagInfo API - 2. Fetches and processes wiki pages for these keys - 3. Processes specific wiki pages listed in SPECIFIC_PAGES - 4. Processes pages from the FR:Traductions_désynchronisées category - 5. Calculates staleness scores for all pages - 6. Generates a histogram of staleness scores - 7. Saves the results to CSV and JSON files - 8. Prints a list of pages that need updating + 2. Fetches keys used in France that are missing a wiki page from TagInfo API + 3. Fetches and processes wiki pages for these keys + 4. Processes specific wiki pages listed in SPECIFIC_PAGES + 5. Processes pages from the FR:Traductions_désynchronisées category + 6. Calculates staleness scores for all pages + 7. Generates a histogram of staleness scores + 8. Saves the results to CSV and JSON files + 9. Prints a list of pages that need updating """ # Parse command-line arguments parser = argparse.ArgumentParser(description='Compare OpenStreetMap wiki pages in English and French.') parser.add_argument('--no-grammar-check', action='store_true', - help='Disable grammar checking for French pages') + help='Disable grammar checking for French pages', default=False) args = parser.parse_args() # Whether to check grammar for French pages @@ -1131,6 +1187,16 @@ def main(): # Save top keys to JSON save_to_json(top_keys, TOP_KEYS_FILE) + # Fetch keys without wiki pages used in France + keys_without_wiki = fetch_keys_without_wiki_page() + + if keys_without_wiki: + # Save keys without wiki pages to JSON + save_to_json(keys_without_wiki, KEYS_WITHOUT_WIKI_FILE) + logger.info(f"Saved {len(keys_without_wiki)} keys without wiki pages to {KEYS_WITHOUT_WIKI_FILE}") + else: + logger.warning("No keys without wiki pages were fetched.") + # Fetch wiki pages for each key wiki_pages = [] diff --git a/wiki_compare/wiki_pages.csv b/wiki_compare/wiki_pages.csv index 065aa9d..ebfa7be 100644 --- a/wiki_compare/wiki_pages.csv +++ b/wiki_compare/wiki_pages.csv @@ -3,105 +3,112 @@ building,en,https://wiki.openstreetmap.org/wiki/Key:building,2025-06-10,31,3774, building,fr,https://wiki.openstreetmap.org/wiki/FR:Key:building,2025-05-22,25,3181,544,155,8.91,https://wiki.openstreetmap.org/w/images/thumb/6/61/Emptyhouse.jpg/200px-Emptyhouse.jpg source,en,https://wiki.openstreetmap.org/wiki/Key:source,2025-08-12,27,2752,314,42,113.06,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png source,fr,https://wiki.openstreetmap.org/wiki/FR:Key:source,2024-02-07,23,2593,230,35,113.06,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png -highway,en,https://wiki.openstreetmap.org/wiki/Key:highway,2025-04-10,30,4126,780,314,20.35,https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Roads_in_Switzerland_%2827965437018%29.jpg/200px-Roads_in_Switzerland_%2827965437018%29.jpg -highway,fr,https://wiki.openstreetmap.org/wiki/FR:Key:highway,2025-01-05,30,4141,695,313,20.35,https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Roads_in_Switzerland_%2827965437018%29.jpg/200px-Roads_in_Switzerland_%2827965437018%29.jpg -addr:housenumber,en,https://wiki.openstreetmap.org/wiki/Key:addr:housenumber,2025-07-24,11,330,97,20,14.01,https://upload.wikimedia.org/wikipedia/commons/thumb/1/16/Ferry_Street%2C_Portaferry_%2809%29%2C_October_2009.JPG/200px-Ferry_Street%2C_Portaferry_%2809%29%2C_October_2009.JPG -addr:housenumber,fr,https://wiki.openstreetmap.org/wiki/FR:Key:addr:housenumber,2025-08-23,15,1653,150,77,14.01,https://wiki.openstreetmap.org/w/images/thumb/e/e9/Housenumber-karlsruhe-de.png/200px-Housenumber-karlsruhe-de.png -addr:street,en,https://wiki.openstreetmap.org/wiki/Key:addr:street,2024-10-29,12,602,101,16,66.04,https://upload.wikimedia.org/wikipedia/commons/thumb/6/64/UK_-_London_%2830474933636%29.jpg/200px-UK_-_London_%2830474933636%29.jpg -addr:street,fr,https://wiki.openstreetmap.org/wiki/FR:Key:addr:street,2025-08-23,15,1653,150,77,66.04,https://wiki.openstreetmap.org/w/images/thumb/e/e9/Housenumber-karlsruhe-de.png/200px-Housenumber-karlsruhe-de.png -addr:city,en,https://wiki.openstreetmap.org/wiki/Key:addr:city,2025-07-29,15,802,105,17,9.93,https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Lillerod.jpg/200px-Lillerod.jpg -addr:city,fr,https://wiki.openstreetmap.org/wiki/FR:Key:addr:city,2025-08-23,15,1653,150,77,9.93,https://wiki.openstreetmap.org/w/images/thumb/e/e9/Housenumber-karlsruhe-de.png/200px-Housenumber-karlsruhe-de.png -name,en,https://wiki.openstreetmap.org/wiki/Key:name,2025-07-25,17,2196,281,82,42.39,https://upload.wikimedia.org/wikipedia/commons/thumb/6/61/Helena%2C_Montana.jpg/200px-Helena%2C_Montana.jpg -name,fr,https://wiki.openstreetmap.org/wiki/FR:Key:name,2025-01-16,21,1720,187,60,42.39,https://wiki.openstreetmap.org/w/images/3/37/Strakers.jpg -addr:postcode,en,https://wiki.openstreetmap.org/wiki/Key:addr:postcode,2024-10-29,14,382,83,11,67.11,https://upload.wikimedia.org/wikipedia/commons/thumb/0/04/Farrer_post_code.jpg/200px-Farrer_post_code.jpg -addr:postcode,fr,https://wiki.openstreetmap.org/wiki/FR:Key:addr:postcode,2025-08-23,15,1653,150,77,67.11,https://wiki.openstreetmap.org/w/images/thumb/e/e9/Housenumber-karlsruhe-de.png/200px-Housenumber-karlsruhe-de.png -natural,en,https://wiki.openstreetmap.org/wiki/Key:natural,2025-07-17,17,2070,535,189,22.06,https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/VocaDi-Nature%2CGeneral.jpeg/200px-VocaDi-Nature%2CGeneral.jpeg -natural,fr,https://wiki.openstreetmap.org/wiki/FR:Key:natural,2025-04-21,13,1499,455,174,22.06,https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/VocaDi-Nature%2CGeneral.jpeg/200px-VocaDi-Nature%2CGeneral.jpeg -surface,en,https://wiki.openstreetmap.org/wiki/Key:surface,2025-08-28,24,3475,591,238,264.64,https://upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Transportation_in_Tanzania_Traffic_problems.JPG/200px-Transportation_in_Tanzania_Traffic_problems.JPG -surface,fr,https://wiki.openstreetmap.org/wiki/FR:Key:surface,2022-02-22,13,2587,461,232,264.64,https://upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Transportation_in_Tanzania_Traffic_problems.JPG/200px-Transportation_in_Tanzania_Traffic_problems.JPG -addr:country,en,https://wiki.openstreetmap.org/wiki/Key:addr:country,2024-12-01,9,184,65,11,22.96,https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Europe_ISO_3166-1.svg/200px-Europe_ISO_3166-1.svg.png -addr:country,fr,https://wiki.openstreetmap.org/wiki/FR:Key:addr:country,2025-03-25,8,187,65,11,22.96,https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Europe_ISO_3166-1.svg/200px-Europe_ISO_3166-1.svg.png -landuse,en,https://wiki.openstreetmap.org/wiki/Key:landuse,2025-03-01,17,2071,446,168,39.41,https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Changing_landuse_-_geograph.org.uk_-_1137810.jpg/200px-Changing_landuse_-_geograph.org.uk_-_1137810.jpg -landuse,fr,https://wiki.openstreetmap.org/wiki/FR:Key:landuse,2024-08-20,19,2053,418,182,39.41,https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Changing_landuse_-_geograph.org.uk_-_1137810.jpg/200px-Changing_landuse_-_geograph.org.uk_-_1137810.jpg -power,en,https://wiki.openstreetmap.org/wiki/Key:power,2025-02-28,20,641,127,21,124.89,https://wiki.openstreetmap.org/w/images/thumb/0/01/Power-tower.JPG/200px-Power-tower.JPG -power,fr,https://wiki.openstreetmap.org/wiki/FR:Key:power,2023-06-27,14,390,105,25,124.89,https://wiki.openstreetmap.org/w/images/thumb/0/01/Power-tower.JPG/200px-Power-tower.JPG -waterway,en,https://wiki.openstreetmap.org/wiki/Key:waterway,2025-03-10,21,1830,365,118,77.94,https://wiki.openstreetmap.org/w/images/thumb/f/fe/450px-Marshall-county-indiana-yellow-river.jpg/200px-450px-Marshall-county-indiana-yellow-river.jpg -waterway,fr,https://wiki.openstreetmap.org/wiki/FR:Key:waterway,2024-03-08,18,1291,272,113,77.94,https://wiki.openstreetmap.org/w/images/thumb/f/fe/450px-Marshall-county-indiana-yellow-river.jpg/200px-450px-Marshall-county-indiana-yellow-river.jpg -building:levels,en,https://wiki.openstreetmap.org/wiki/Key:building:levels,2025-08-13,16,1351,204,25,76.11,https://wiki.openstreetmap.org/w/images/thumb/4/47/Building-levels.png/200px-Building-levels.png -building:levels,fr,https://wiki.openstreetmap.org/wiki/FR:Key:building:levels,2024-08-01,15,1457,202,26,76.11,https://wiki.openstreetmap.org/w/images/thumb/4/47/Building-levels.png/200px-Building-levels.png -amenity,en,https://wiki.openstreetmap.org/wiki/Key:amenity,2025-08-24,29,3066,915,504,160.78,https://wiki.openstreetmap.org/w/images/thumb/a/a5/Mapping-Features-Parking-Lot.png/200px-Mapping-Features-Parking-Lot.png -amenity,fr,https://wiki.openstreetmap.org/wiki/FR:Key:amenity,2023-07-19,22,2146,800,487,160.78,https://wiki.openstreetmap.org/w/images/thumb/a/a5/Mapping-Features-Parking-Lot.png/200px-Mapping-Features-Parking-Lot.png -barrier,en,https://wiki.openstreetmap.org/wiki/Key:barrier,2025-04-15,17,2137,443,173,207.98,https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/2014_Bystrzyca_K%C5%82odzka%2C_mury_obronne_05.jpg/200px-2014_Bystrzyca_K%C5%82odzka%2C_mury_obronne_05.jpg -barrier,fr,https://wiki.openstreetmap.org/wiki/FR:Key:barrier,2022-08-16,15,542,103,18,207.98,https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/2014_Bystrzyca_K%C5%82odzka%2C_mury_obronne_05.jpg/200px-2014_Bystrzyca_K%C5%82odzka%2C_mury_obronne_05.jpg -source:date,en,https://wiki.openstreetmap.org/wiki/Key:source:date,2023-04-01,11,395,75,10,22.47,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png -source:date,fr,https://wiki.openstreetmap.org/wiki/FR:Key:source:date,2023-07-21,10,419,75,11,22.47,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png -service,en,https://wiki.openstreetmap.org/wiki/Key:service,2025-03-16,22,1436,218,17,83.79,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png -service,fr,https://wiki.openstreetmap.org/wiki/FR:Key:service,2024-03-04,11,443,100,10,83.79,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png -addr:state,en,https://wiki.openstreetmap.org/wiki/Key:addr:state,2023-06-23,12,289,74,11,100,https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/WVaCent.jpg/200px-WVaCent.jpg -access,en,https://wiki.openstreetmap.org/wiki/Key:access,2025-08-06,31,5803,708,98,66.75,https://wiki.openstreetmap.org/w/images/5/5e/WhichAccess.png -access,fr,https://wiki.openstreetmap.org/wiki/FR:Key:access,2024-11-27,33,3200,506,83,66.75,https://wiki.openstreetmap.org/w/images/5/5e/WhichAccess.png -oneway,en,https://wiki.openstreetmap.org/wiki/Key:oneway,2025-07-17,28,2318,290,30,19.4,https://upload.wikimedia.org/wikipedia/commons/thumb/1/13/One_way_sign.JPG/200px-One_way_sign.JPG -oneway,fr,https://wiki.openstreetmap.org/wiki/FR:Key:oneway,2025-06-16,14,645,108,14,19.4,https://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/France_road_sign_C12.svg/200px-France_road_sign_C12.svg.png -height,en,https://wiki.openstreetmap.org/wiki/Key:height,2025-07-21,24,1184,184,20,8.45,https://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Height_demonstration_diagram.png/200px-Height_demonstration_diagram.png -height,fr,https://wiki.openstreetmap.org/wiki/FR:Key:height,2025-06-14,21,1285,190,21,8.45,https://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Height_demonstration_diagram.png/200px-Height_demonstration_diagram.png -ref,en,https://wiki.openstreetmap.org/wiki/Key:ref,2025-07-25,26,4404,782,115,11.79,https://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/UK_traffic_sign_2901.svg/200px-UK_traffic_sign_2901.svg.png -ref,fr,https://wiki.openstreetmap.org/wiki/FR:Key:ref,2025-07-30,20,3393,460,12,11.79,https://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Autoroute_fran%C3%A7aise_1.svg/200px-Autoroute_fran%C3%A7aise_1.svg.png -maxspeed,en,https://wiki.openstreetmap.org/wiki/Key:maxspeed,2025-08-20,30,4275,404,38,39.24,https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Zeichen_274-60_-_Zul%C3%A4ssige_H%C3%B6chstgeschwindigkeit%2C_StVO_2017.svg/200px-Zeichen_274-60_-_Zul%C3%A4ssige_H%C3%B6chstgeschwindigkeit%2C_StVO_2017.svg.png -maxspeed,fr,https://wiki.openstreetmap.org/wiki/FR:Key:maxspeed,2025-05-10,25,1401,156,23,39.24,https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Zeichen_274-60_-_Zul%C3%A4ssige_H%C3%B6chstgeschwindigkeit%2C_StVO_2017.svg/200px-Zeichen_274-60_-_Zul%C3%A4ssige_H%C3%B6chstgeschwindigkeit%2C_StVO_2017.svg.png -lanes,en,https://wiki.openstreetmap.org/wiki/Key:lanes,2025-08-21,26,2869,355,48,117.16,https://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/A55_trunk_road_looking_east_-_geograph.org.uk_-_932668.jpg/200px-A55_trunk_road_looking_east_-_geograph.org.uk_-_932668.jpg -lanes,fr,https://wiki.openstreetmap.org/wiki/FR:Key:lanes,2024-03-07,19,1492,167,19,117.16,https://wiki.openstreetmap.org/w/images/thumb/d/d4/Dscf0444_600.jpg/200px-Dscf0444_600.jpg -start_date,en,https://wiki.openstreetmap.org/wiki/Key:start_date,2025-08-01,22,1098,168,29,214.58,https://upload.wikimedia.org/wikipedia/commons/thumb/d/dc/Connel_bridge_plate.jpg/200px-Connel_bridge_plate.jpg -start_date,fr,https://wiki.openstreetmap.org/wiki/FR:Key:start_date,2022-08-29,19,1097,133,22,214.58,https://upload.wikimedia.org/wikipedia/commons/thumb/d/dc/Connel_bridge_plate.jpg/200px-Connel_bridge_plate.jpg -addr:district,en,https://wiki.openstreetmap.org/wiki/Key:addr:district,2023-11-06,11,244,76,11,139.96,https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Hangal_Taluk.jpg/200px-Hangal_Taluk.jpg -addr:district,fr,https://wiki.openstreetmap.org/wiki/FR:Key:addr:district,2025-08-23,15,1653,150,77,139.96,https://wiki.openstreetmap.org/w/images/thumb/e/e9/Housenumber-karlsruhe-de.png/200px-Housenumber-karlsruhe-de.png -layer,en,https://wiki.openstreetmap.org/wiki/Key:layer,2025-01-02,16,1967,181,17,65.95,https://wiki.openstreetmap.org/w/images/thumb/2/26/Washington_layers.png/200px-Washington_layers.png -layer,fr,https://wiki.openstreetmap.org/wiki/FR:Key:layer,2024-02-16,15,2231,162,17,65.95,https://wiki.openstreetmap.org/w/images/thumb/2/26/Washington_layers.png/200px-Washington_layers.png -type,en,https://wiki.openstreetmap.org/wiki/Key:type,2025-05-13,20,911,200,72,334.06,https://wiki.openstreetmap.org/w/images/thumb/5/58/Osm_element_node_no.svg/30px-Osm_element_node_no.svg.png -type,fr,https://wiki.openstreetmap.org/wiki/FR:Key:type,2020-11-13,10,444,78,10,334.06,https://wiki.openstreetmap.org/w/images/thumb/5/58/Osm_element_node_no.svg/30px-Osm_element_node_no.svg.png -operator,en,https://wiki.openstreetmap.org/wiki/Key:operator,2025-08-26,24,1908,241,37,223.28,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png -operator,fr,https://wiki.openstreetmap.org/wiki/FR:Key:operator,2022-09-30,15,418,89,11,223.28,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png -lit,en,https://wiki.openstreetmap.org/wiki/Key:lit,2024-07-20,17,931,174,52,38.88,https://upload.wikimedia.org/wikipedia/commons/thumb/e/e2/Peatonal_Bicentenario.JPG/200px-Peatonal_Bicentenario.JPG -lit,fr,https://wiki.openstreetmap.org/wiki/FR:Key:lit,2025-01-19,17,628,123,14,38.88,https://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/2014_K%C5%82odzko%2C_ul._Grottgera_14.JPG/200px-2014_K%C5%82odzko%2C_ul._Grottgera_14.JPG -wall,en,https://wiki.openstreetmap.org/wiki/Key:wall,2024-05-02,14,682,206,61,100,https://wiki.openstreetmap.org/w/images/thumb/5/58/Osm_element_node_no.svg/30px-Osm_element_node_no.svg.png -tiger:cfcc,en,https://wiki.openstreetmap.org/wiki/Key:tiger:cfcc,2022-12-09,10,127,24,7,100,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png -crossing,en,https://wiki.openstreetmap.org/wiki/Key:crossing,2024-02-18,25,2678,363,34,76.98,https://wiki.openstreetmap.org/w/images/thumb/7/75/Toucan.jpg/200px-Toucan.jpg -crossing,fr,https://wiki.openstreetmap.org/wiki/FR:Key:crossing,2025-01-20,15,1390,254,28,76.98,https://wiki.openstreetmap.org/w/images/thumb/7/75/Toucan.jpg/200px-Toucan.jpg -tiger:county,en,https://wiki.openstreetmap.org/wiki/Key:tiger:county,2022-12-09,10,127,24,7,100,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png -source:addr,en,https://wiki.openstreetmap.org/wiki/Key:source:addr,2023-07-05,9,200,70,10,100,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png -footway,en,https://wiki.openstreetmap.org/wiki/Key:footway,2025-08-20,23,2002,369,39,99.66,https://wiki.openstreetmap.org/w/images/thumb/b/b9/Sidewalk_and_zebra-crossing.jpg/200px-Sidewalk_and_zebra-crossing.jpg -footway,fr,https://wiki.openstreetmap.org/wiki/FR:Key:footway,2024-06-04,14,685,147,28,99.66,https://wiki.openstreetmap.org/w/images/thumb/b/b9/Sidewalk_and_zebra-crossing.jpg/200px-Sidewalk_and_zebra-crossing.jpg -ref:bag,en,https://wiki.openstreetmap.org/wiki/Key:ref:bag,2024-10-09,10,254,69,11,100,https://wiki.openstreetmap.org/w/images/thumb/5/58/Osm_element_node_no.svg/30px-Osm_element_node_no.svg.png -addr:place,en,https://wiki.openstreetmap.org/wiki/Key:addr:place,2025-03-28,16,1204,154,13,136.57,https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Suburb_of_Phillip.jpg/200px-Suburb_of_Phillip.jpg -addr:place,fr,https://wiki.openstreetmap.org/wiki/FR:Key:addr:place,2023-06-17,11,276,75,12,136.57,https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Suburb_of_Phillip.jpg/200px-Suburb_of_Phillip.jpg -tiger:reviewed,en,https://wiki.openstreetmap.org/wiki/Key:tiger:reviewed,2025-08-01,16,734,105,11,100,https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/US-Census-TIGERLogo.svg/200px-US-Census-TIGERLogo.svg.png -leisure,en,https://wiki.openstreetmap.org/wiki/Key:leisure,2025-02-28,12,1084,374,180,232.43,https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Hammock_-_Polynesia.jpg/200px-Hammock_-_Polynesia.jpg -leisure,fr,https://wiki.openstreetmap.org/wiki/FR:Key:leisure,2021-12-29,11,951,360,186,232.43,https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Hammock_-_Polynesia.jpg/200px-Hammock_-_Polynesia.jpg -addr:suburb,en,https://wiki.openstreetmap.org/wiki/Key:addr:suburb,2024-02-24,14,439,89,11,1.49,https://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Grosvenor_Place_2_2008_06_19.jpg/200px-Grosvenor_Place_2_2008_06_19.jpg -addr:suburb,fr,https://wiki.openstreetmap.org/wiki/FR:Key:addr:suburb,2024-02-18,13,418,87,11,1.49,https://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Grosvenor_Place_2_2008_06_19.jpg/200px-Grosvenor_Place_2_2008_06_19.jpg -ele,en,https://wiki.openstreetmap.org/wiki/Key:ele,2025-07-18,18,1846,165,24,104.45,https://wiki.openstreetmap.org/w/images/a/a3/Key-ele_mapnik.png -ele,fr,https://wiki.openstreetmap.org/wiki/FR:Key:ele,2024-03-02,15,1277,128,13,104.45,https://wiki.openstreetmap.org/w/images/a/a3/Key-ele_mapnik.png -tracktype,en,https://wiki.openstreetmap.org/wiki/Key:tracktype,2024-12-02,16,652,146,35,32.71,https://wiki.openstreetmap.org/w/images/thumb/1/13/Tracktype-collage.jpg/200px-Tracktype-collage.jpg -tracktype,fr,https://wiki.openstreetmap.org/wiki/FR:Key:tracktype,2025-05-03,11,463,105,29,32.71,https://wiki.openstreetmap.org/w/images/thumb/1/13/Tracktype-collage.jpg/200px-Tracktype-collage.jpg -addr:neighbourhood,en,https://wiki.openstreetmap.org/wiki/Key:addr:neighbourhood,2025-04-29,24,2020,235,83,100,https://wiki.openstreetmap.org/w/images/thumb/e/e9/Housenumber-karlsruhe-de.png/200px-Housenumber-karlsruhe-de.png -addr:hamlet,en,https://wiki.openstreetmap.org/wiki/Key:addr:hamlet,2024-12-05,9,142,64,11,100,https://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Grosvenor_Place_2_2008_06_19.jpg/200px-Grosvenor_Place_2_2008_06_19.jpg -addr:province,en,https://wiki.openstreetmap.org/wiki/Key:addr:province,2022-05-04,9,156,64,11,100,https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Stamp_of_Indonesia_-_2002_-_Colnect_265917_-_Aceh_Province.jpeg/200px-Stamp_of_Indonesia_-_2002_-_Colnect_265917_-_Aceh_Province.jpeg -leaf_type,en,https://wiki.openstreetmap.org/wiki/Key:leaf_type,2025-01-22,15,739,201,57,114.46,https://upload.wikimedia.org/wikipedia/commons/thumb/3/39/Picea_abies_Nadelkissen.jpg/200px-Picea_abies_Nadelkissen.jpg -leaf_type,fr,https://wiki.openstreetmap.org/wiki/FR:Key:leaf_type,2023-07-02,14,734,220,64,114.46,https://upload.wikimedia.org/wikipedia/commons/thumb/3/39/Picea_abies_Nadelkissen.jpg/200px-Picea_abies_Nadelkissen.jpg -addr:full,en,https://wiki.openstreetmap.org/wiki/Key:addr:full,2025-04-29,24,2020,235,83,100,https://wiki.openstreetmap.org/w/images/thumb/e/e9/Housenumber-karlsruhe-de.png/200px-Housenumber-karlsruhe-de.png -Anatomie_des_étiquettes_osm,en,https://wiki.openstreetmap.org/wiki/Anatomie_des_étiquettes_osm,2025-06-08,22,963,53,0,100, +Anatomie_des_étiquettes_osm,en,https://wiki.openstreetmap.org/wiki/Anatomie_des_étiquettes_osm,2025-06-08,22,0,0,0,100, Tag:leisure=children_club,en,https://wiki.openstreetmap.org/wiki/Tag:leisure=children_club,2025-02-02,9,163,69,9,56.04,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png Tag:leisure=children_club,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:leisure=children_club,2024-05-02,8,294,67,10,56.04,https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Dave_%26_Buster%27s_video_arcade_in_Columbus%2C_OH_-_17910.JPG/200px-Dave_%26_Buster%27s_video_arcade_in_Columbus%2C_OH_-_17910.JPG Tag:harassment_prevention=ask_angela,en,https://wiki.openstreetmap.org/wiki/Tag:harassment_prevention=ask_angela,2025-02-22,14,463,72,9,42.56,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png Tag:harassment_prevention=ask_angela,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:harassment_prevention=ask_angela,2025-09-01,20,873,166,15,42.56,https://wiki.openstreetmap.org/w/images/thumb/1/15/2024-06-27T08.40.50_ask_angela_lyon.jpg/200px-2024-06-27T08.40.50_ask_angela_lyon.jpg Key:harassment_prevention,en,https://wiki.openstreetmap.org/wiki/Key:harassment_prevention,2024-08-10,12,196,69,14,66.72,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png Key:harassment_prevention,fr,https://wiki.openstreetmap.org/wiki/FR:Key:harassment_prevention,2025-07-03,15,328,83,14,66.72,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png -Proposal process,en,https://wiki.openstreetmap.org/wiki/Proposal process,2025-08-13,46,5292,202,4,166.25,https://wiki.openstreetmap.org/w/images/thumb/c/c2/Save_proposal_first.png/761px-Save_proposal_first.png -Proposal process,fr,https://wiki.openstreetmap.org/wiki/FR:Proposal process,2023-09-22,15,1146,24,0,166.25, -Automated_Edits_code_of_conduct,en,https://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct,2025-07-26,19,2062,69,0,26.35, -Automated_Edits_code_of_conduct,fr,https://wiki.openstreetmap.org/wiki/FR:Automated_Edits_code_of_conduct,2025-04-03,17,1571,16,0,26.35, +Proposal process,en,https://wiki.openstreetmap.org/wiki/Proposal process,2025-08-13,46,5292,202,4,172.34,https://wiki.openstreetmap.org/w/images/thumb/c/c2/Save_proposal_first.png/761px-Save_proposal_first.png +Proposal process,fr,https://wiki.openstreetmap.org/wiki/FR:Proposal process,2023-09-22,15,0,0,0,172.34, +Automated_Edits_code_of_conduct,en,https://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct,2025-07-26,19,0,0,0,23.1, +Automated_Edits_code_of_conduct,fr,https://wiki.openstreetmap.org/wiki/FR:Automated_Edits_code_of_conduct,2025-04-03,17,0,0,0,23.1, Key:cuisine,en,https://wiki.openstreetmap.org/wiki/Key:cuisine,2025-07-23,17,3422,693,303,107.73,https://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Food_montage.jpg/200px-Food_montage.jpg Key:cuisine,fr,https://wiki.openstreetmap.org/wiki/FR:Key:cuisine,2024-02-16,15,2866,690,316,107.73,https://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Food_montage.jpg/200px-Food_montage.jpg -Libre_Charge_Map,en,https://wiki.openstreetmap.org/wiki/Libre_Charge_Map,2025-07-28,11,328,10,2,100,https://wiki.openstreetmap.org/w/images/thumb/8/8e/Screenshot_2025-07-28_at_14-40-11_LibreChargeMap_-_OSM_Bliss.png/300px-Screenshot_2025-07-28_at_14-40-11_LibreChargeMap_-_OSM_Bliss.png -OSM_Mon_Commerce,en,https://wiki.openstreetmap.org/wiki/OSM_Mon_Commerce,2025-07-29,17,418,34,3,100,https://wiki.openstreetmap.org/w/images/thumb/6/67/Villes_OSM_Mon_Commerce.png/500px-Villes_OSM_Mon_Commerce.png +Libre_Charge_Map,en,https://wiki.openstreetmap.org/wiki/Libre_Charge_Map,2025-09-03,11,328,10,2,1.34,https://wiki.openstreetmap.org/w/images/thumb/8/8e/Screenshot_2025-07-28_at_14-40-11_LibreChargeMap_-_OSM_Bliss.png/300px-Screenshot_2025-07-28_at_14-40-11_LibreChargeMap_-_OSM_Bliss.png +Libre_Charge_Map,fr,https://wiki.openstreetmap.org/wiki/FR:Libre_Charge_Map,2025-09-03,12,101,14,2,1.34,https://wiki.openstreetmap.org/w/images/thumb/8/8e/Screenshot_2025-07-28_at_14-40-11_LibreChargeMap_-_OSM_Bliss.png/300px-Screenshot_2025-07-28_at_14-40-11_LibreChargeMap_-_OSM_Bliss.png +OSM_Mon_Commerce,en,https://wiki.openstreetmap.org/wiki/OSM_Mon_Commerce,2025-07-29,17,418,34,3,8.85,https://wiki.openstreetmap.org/w/images/thumb/6/67/Villes_OSM_Mon_Commerce.png/500px-Villes_OSM_Mon_Commerce.png +OSM_Mon_Commerce,fr,https://wiki.openstreetmap.org/wiki/FR:OSM_Mon_Commerce,2025-09-03,13,256,18,3,8.85,https://wiki.openstreetmap.org/w/images/thumb/6/67/Villes_OSM_Mon_Commerce.png/500px-Villes_OSM_Mon_Commerce.png +Complète_Tes_Commerces,en,https://wiki.openstreetmap.org/wiki/Complète_Tes_Commerces,2025-08-03,9,0,0,0,5.35, +Complète_Tes_Commerces,fr,https://wiki.openstreetmap.org/wiki/FR:Complète_Tes_Commerces,2025-08-26,14,0,0,0,5.35, Tag:amenity=charging_station,en,https://wiki.openstreetmap.org/wiki/Tag:amenity=charging_station,2025-08-29,16,1509,284,62,55.72,https://wiki.openstreetmap.org/w/images/thumb/4/4d/Recharge_Vigra_charging_station.jpg/200px-Recharge_Vigra_charging_station.jpg Tag:amenity=charging_station,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:amenity=charging_station,2024-12-28,19,2662,331,58,55.72,https://wiki.openstreetmap.org/w/images/thumb/4/4d/Recharge_Vigra_charging_station.jpg/200px-Recharge_Vigra_charging_station.jpg +Organised_Editing/Activities/MapYourGrid_Initiative,en,https://wiki.openstreetmap.org/wiki/Organised_Editing/Activities/MapYourGrid_Initiative,2025-09-03,33,1872,122,2,100,https://wiki.openstreetmap.org/w/images/thumb/f/f9/Mapyourgrid-logo.png/350px-Mapyourgrid-logo.png +Key:highway,en,https://wiki.openstreetmap.org/wiki/Key:highway,2025-04-10,30,4126,780,314,20.35,https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Roads_in_Switzerland_%2827965437018%29.jpg/200px-Roads_in_Switzerland_%2827965437018%29.jpg +Key:highway,fr,https://wiki.openstreetmap.org/wiki/FR:Key:highway,2025-01-05,30,4141,695,313,20.35,https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Roads_in_Switzerland_%2827965437018%29.jpg/200px-Roads_in_Switzerland_%2827965437018%29.jpg +Quality_assurance,en,https://wiki.openstreetmap.org/wiki/Quality_assurance,2025-06-01,19,0,0,0,15.6, +Quality_assurance,fr,https://wiki.openstreetmap.org/wiki/FR:Quality_assurance,2025-08-18,19,0,0,0,15.6, +Verifiability,en,https://wiki.openstreetmap.org/wiki/Verifiability,2024-11-28,22,1440,59,1,102.48,https://wiki.openstreetmap.org/w/images/thumb/7/7d/Vernier_calipers.svg/160px-Vernier_calipers.svg.png +Verifiability,fr,https://wiki.openstreetmap.org/wiki/FR:Verifiability,2023-07-29,13,842,23,1,102.48,https://wiki.openstreetmap.org/w/images/thumb/7/7d/Vernier_calipers.svg/160px-Vernier_calipers.svg.png +Good_practice,en,https://wiki.openstreetmap.org/wiki/Good_practice,2025-07-18,34,2611,122,2,73.08,https://wiki.openstreetmap.org/w/images/thumb/8/84/Tracks_with_descriptive_name_tags.png/300px-Tracks_with_descriptive_name_tags.png +Good_practice,fr,https://wiki.openstreetmap.org/wiki/FR:Good_practice,2024-07-26,33,2791,80,1,73.08,https://wiki.openstreetmap.org/w/images/thumb/8/84/Tracks_with_descriptive_name_tags.png/300px-Tracks_with_descriptive_name_tags.png +Mapping_parties,en,https://wiki.openstreetmap.org/wiki/Mapping_parties,2023-11-12,10,512,18,3,290.75,https://wiki.openstreetmap.org/w/images/thumb/c/c3/Mappers-learning-to-gps.jpg/300px-Mappers-learning-to-gps.jpg +Mapping_parties,fr,https://wiki.openstreetmap.org/wiki/FR:Mapping_parties,2019-11-23,9,622,15,2,290.75,https://wiki.openstreetmap.org/w/images/thumb/c/c3/Mappers-learning-to-gps.jpg/300px-Mappers-learning-to-gps.jpg +State_of_the_Map,en,https://wiki.openstreetmap.org/wiki/State_of_the_Map,2025-08-22,45,2975,577,120,100,https://wiki.openstreetmap.org/w/images/thumb/a/af/Sotm_2025_coloured.png/120px-Sotm_2025_coloured.png +Diversity,en,https://wiki.openstreetmap.org/wiki/Diversity,2024-09-27,25,0,0,0,41.3, +Diversity,fr,https://wiki.openstreetmap.org/wiki/FR:Diversity,2025-04-20,27,0,0,0,41.3, +Mapping_private_information,en,https://wiki.openstreetmap.org/wiki/Mapping_private_information,2025-07-21,18,0,0,0,100, +Any_tags_you_like,en,https://wiki.openstreetmap.org/wiki/Any_tags_you_like,2025-05-14,21,0,0,0,307.45, +Any_tags_you_like,fr,https://wiki.openstreetmap.org/wiki/FR:Any_tags_you_like,2021-03-01,18,0,0,0,307.45, +Organised_Editing/Best_Practices,en,https://wiki.openstreetmap.org/wiki/Organised_Editing/Best_Practices,2025-07-18,16,501,10,1,100,https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Ambox_warning_pn.svg/40px-Ambox_warning_pn.svg.png +Map_features,en,https://wiki.openstreetmap.org/wiki/Map_features,2025-07-21,125,21926,4255,2222,507.98,https://upload.wikimedia.org/wikipedia/commons/thumb/6/6b/Bar_MXCT.JPG/100px-Bar_MXCT.JPG +Map_features,fr,https://wiki.openstreetmap.org/wiki/FR:Map_features,2018-12-27,103,23159,5516,3062,507.98,https://wiki.openstreetmap.org/w/images/c/c4/Aerialway_gondola_render.png +https://wiki.openstreetmap.org/wiki/FR:Quality_Assurance,fr,https://wiki.openstreetmap.org/wiki/FR:Quality_Assurance,2015-05-16,16,0,0,0,0, +https://wiki.openstreetmap.org/wiki/Quality_Assurance,en,https://wiki.openstreetmap.org/wiki/Quality_Assurance,2025-06-01,19,0,0,0,100, +https://wiki.openstreetmap.org/wiki/FR:Nominatim/Installation,fr,https://wiki.openstreetmap.org/wiki/FR:Nominatim/Installation,2016-08-22,32,0,0,0,0, +https://wiki.openstreetmap.org/wiki/FR:Maxheight_Map,fr,https://wiki.openstreetmap.org/wiki/FR:Maxheight_Map,2017-12-11,27,1090,74,10,0,https://wiki.openstreetmap.org/w/images/thumb/c/c7/Maxheight_Map.png/400px-Maxheight_Map.png +https://wiki.openstreetmap.org/wiki/Maxheight_Map,en,https://wiki.openstreetmap.org/wiki/Maxheight_Map,2025-08-31,34,2323,95,16,100,https://wiki.openstreetmap.org/w/images/thumb/d/d7/Maxheight_map_complex.png/200px-Maxheight_map_complex.png +https://wiki.openstreetmap.org/wiki/FR:Enregistrement_de_traces_GPS,fr,https://wiki.openstreetmap.org/wiki/FR:Enregistrement_de_traces_GPS,2018-03-20,17,1040,45,2,0,https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/GPS_Satellite_NASA_art-iif.jpg/120px-GPS_Satellite_NASA_art-iif.jpg +https://wiki.openstreetmap.org/wiki/FR:Conversion_des_traces_GPS,fr,https://wiki.openstreetmap.org/wiki/FR:Conversion_des_traces_GPS,2018-03-27,11,536,29,2,0,https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/GPS_Satellite_NASA_art-iif.jpg/120px-GPS_Satellite_NASA_art-iif.jpg +https://wiki.openstreetmap.org/wiki/FR:%C3%89l%C3%A9ments_cartographiques,fr,https://wiki.openstreetmap.org/wiki/FR:%C3%89l%C3%A9ments_cartographiques,2018-12-27,103,23159,5516,3062,0,https://wiki.openstreetmap.org/w/images/c/c4/Aerialway_gondola_render.png +https://wiki.openstreetmap.org/wiki/FR:Relation:bridge,fr,https://wiki.openstreetmap.org/wiki/FR:Relation:bridge,2019-02-22,8,190,68,10,0,https://wiki.openstreetmap.org/w/images/thumb/9/9a/Mapping-Features-Road-Bridge.png/200px-Mapping-Features-Road-Bridge.png +https://wiki.openstreetmap.org/wiki/Relation:bridge,en,https://wiki.openstreetmap.org/wiki/Relation:bridge,2024-05-28,11,426,92,15,100,https://wiki.openstreetmap.org/w/images/thumb/9/9a/Mapping-Features-Road-Bridge.png/200px-Mapping-Features-Road-Bridge.png +https://wiki.openstreetmap.org/wiki/FR:Xapi,fr,https://wiki.openstreetmap.org/wiki/FR:Xapi,2020-04-09,32,2837,58,3,0,https://wiki.openstreetmap.org/w/images/c/c9/Logo.png +https://wiki.openstreetmap.org/wiki/Xapi,en,https://wiki.openstreetmap.org/wiki/Xapi,2020-04-09,42,2760,73,2,100,https://wiki.openstreetmap.org/w/images/c/c9/Logo.png +https://wiki.openstreetmap.org/wiki/FR:Key:min_age,fr,https://wiki.openstreetmap.org/wiki/FR:Key:min_age,2020-09-23,10,248,73,12,0,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png +https://wiki.openstreetmap.org/wiki/Key:min_age,en,https://wiki.openstreetmap.org/wiki/Key:min_age,2023-06-01,15,539,126,18,100,https://wiki.openstreetmap.org/w/images/thumb/7/76/Osm_element_node.svg/30px-Osm_element_node.svg.png +https://wiki.openstreetmap.org/wiki/FR:Google_Maps_user_contributions,fr,https://wiki.openstreetmap.org/wiki/FR:Google_Maps_user_contributions,2020-10-01,16,2029,17,3,0,https://wiki.openstreetmap.org/w/images/thumb/7/7b/Simple_sad_face.svg/100px-Simple_sad_face.svg.png +https://wiki.openstreetmap.org/wiki/Google_Maps_user_contributions,en,https://wiki.openstreetmap.org/wiki/Google_Maps_user_contributions,2025-03-13,15,766,28,2,100,https://wiki.openstreetmap.org/w/images/thumb/7/7b/Simple_sad_face.svg/100px-Simple_sad_face.svg.png +https://wiki.openstreetmap.org/wiki/FR:Quality_Assurance_Tools_script,fr,https://wiki.openstreetmap.org/wiki/FR:Quality_Assurance_Tools_script,2021-01-17,18,701,50,15,0,https://wiki.openstreetmap.org/w/images/e/e0/Qat_script_logo.png +https://wiki.openstreetmap.org/wiki/Quality_Assurance_Tools_script,en,https://wiki.openstreetmap.org/wiki/Quality_Assurance_Tools_script,2020-07-24,21,1172,59,15,100,https://wiki.openstreetmap.org/w/images/thumb/f/f9/Qat_script_download_dlg_screenshot_small.png/518px-Qat_script_download_dlg_screenshot_small.png +https://wiki.openstreetmap.org/wiki/FR:Unconfirmed_user,fr,https://wiki.openstreetmap.org/wiki/FR:Unconfirmed_user,2021-02-07,8,0,0,0,0, +https://wiki.openstreetmap.org/wiki/Unconfirmed_user,en,https://wiki.openstreetmap.org/wiki/Unconfirmed_user,2025-04-18,9,0,0,0,100, +https://wiki.openstreetmap.org/wiki/FR:Key:generator:method,fr,https://wiki.openstreetmap.org/wiki/FR:Key:generator:method,2023-06-19,9,396,101,13,0,https://upload.wikimedia.org/wikipedia/commons/thumb/1/1d/Huntly_Power_Station.JPG/200px-Huntly_Power_Station.JPG +https://wiki.openstreetmap.org/wiki/Key:generator:method,en,https://wiki.openstreetmap.org/wiki/Key:generator:method,2023-11-26,11,482,151,39,100,https://upload.wikimedia.org/wikipedia/commons/thumb/1/1d/Huntly_Power_Station.JPG/200px-Huntly_Power_Station.JPG +https://wiki.openstreetmap.org/wiki/FR:Import/Guidelines,fr,https://wiki.openstreetmap.org/wiki/FR:Import/Guidelines,2023-07-04,23,0,0,0,0, +https://wiki.openstreetmap.org/wiki/FR:Tag:sport%3Dshooting,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:sport%3Dshooting,2023-07-18,11,393,88,15,0,https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Hattie_Johnson_2.jpg/200px-Hattie_Johnson_2.jpg +https://wiki.openstreetmap.org/wiki/Tag:sport%3Dshooting,en,https://wiki.openstreetmap.org/wiki/Tag:sport%3Dshooting,2024-12-02,15,454,123,15,100,https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Hattie_Johnson_2.jpg/200px-Hattie_Johnson_2.jpg +https://wiki.openstreetmap.org/wiki/FR:Tag:generator:method%3Dcombustion,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:generator:method%3Dcombustion,2023-07-24,10,419,104,13,0,https://upload.wikimedia.org/wikipedia/commons/thumb/3/3c/Et_baal.jpg/200px-Et_baal.jpg +https://wiki.openstreetmap.org/wiki/Tag:generator:method%3Dcombustion,en,https://wiki.openstreetmap.org/wiki/Tag:generator:method%3Dcombustion,2023-11-21,10,203,97,12,100,https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/USMC-090111-M-1394J-003.jpg/200px-USMC-090111-M-1394J-003.jpg +https://wiki.openstreetmap.org/wiki/FR:Tag:generator:method%3Dfission,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:generator:method%3Dfission,2023-07-24,10,424,105,13,0,https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Nuclear_fission.svg/200px-Nuclear_fission.svg.png +https://wiki.openstreetmap.org/wiki/Tag:generator:method%3Dfission,en,https://wiki.openstreetmap.org/wiki/Tag:generator:method%3Dfission,2023-11-21,10,156,77,12,100,https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Nuclear_fission.svg/200px-Nuclear_fission.svg.png +https://wiki.openstreetmap.org/wiki/FR:Tag:generator:method%3Dfusion,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:generator:method%3Dfusion,2023-07-24,10,450,107,13,0,https://upload.wikimedia.org/wikipedia/commons/thumb/3/3b/Deuterium-tritium_fusion.svg/200px-Deuterium-tritium_fusion.svg.png +https://wiki.openstreetmap.org/wiki/Tag:generator:method%3Dfusion,en,https://wiki.openstreetmap.org/wiki/Tag:generator:method%3Dfusion,2023-11-21,10,203,83,12,100,https://upload.wikimedia.org/wikipedia/commons/thumb/3/3b/Deuterium-tritium_fusion.svg/200px-Deuterium-tritium_fusion.svg.png +https://wiki.openstreetmap.org/wiki/FR:Tag:generator:method%3Dgasification,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:generator:method%3Dgasification,2023-07-24,10,433,103,13,0,https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Holzvergaser_G%C3%BCssing.jpg/200px-Holzvergaser_G%C3%BCssing.jpg +https://wiki.openstreetmap.org/wiki/Tag:generator:method%3Dgasification,en,https://wiki.openstreetmap.org/wiki/Tag:generator:method%3Dgasification,2023-07-16,12,299,98,13,100,https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Holzvergaser_G%C3%BCssing.jpg/200px-Holzvergaser_G%C3%BCssing.jpg +https://wiki.openstreetmap.org/wiki/FR:Tag:generator:method%3Dthermal,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:generator:method%3Dthermal,2023-07-24,10,447,107,13,0,https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/PS10_solar_power_tower.jpg/200px-PS10_solar_power_tower.jpg +https://wiki.openstreetmap.org/wiki/Tag:generator:method%3Dthermal,en,https://wiki.openstreetmap.org/wiki/Tag:generator:method%3Dthermal,2023-11-20,15,377,135,20,100,https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Solar_Plant_kl.jpg/200px-Solar_Plant_kl.jpg +https://wiki.openstreetmap.org/wiki/FR:Key:shop,fr,https://wiki.openstreetmap.org/wiki/FR:Key:shop,2023-07-25,33,3285,754,382,0,https://wiki.openstreetmap.org/w/images/thumb/2/26/Geograph_shop.jpg/200px-Geograph_shop.jpg +https://wiki.openstreetmap.org/wiki/Key:shop,en,https://wiki.openstreetmap.org/wiki/Key:shop,2025-03-22,31,3638,816,392,100,https://wiki.openstreetmap.org/w/images/thumb/d/dc/North_london_shops.jpg/200px-North_london_shops.jpg +https://wiki.openstreetmap.org/wiki/FR:Tag:generator:source%3Dbiomass,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:generator:source%3Dbiomass,2023-07-26,10,278,80,14,0,https://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Biomasse-Heizkraftwerk_Sellessen.jpg/200px-Biomasse-Heizkraftwerk_Sellessen.jpg +https://wiki.openstreetmap.org/wiki/Tag:generator:source%3Dbiomass,en,https://wiki.openstreetmap.org/wiki/Tag:generator:source%3Dbiomass,2023-11-22,15,445,117,16,100,https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/2013-05-03_Fotoflug_Leer_Papenburg_DSCF6945.jpg/200px-2013-05-03_Fotoflug_Leer_Papenburg_DSCF6945.jpg +https://wiki.openstreetmap.org/wiki/FR:OpenRailwayMap/API,fr,https://wiki.openstreetmap.org/wiki/FR:OpenRailwayMap/API,2023-10-15,12,0,0,0,0, +https://wiki.openstreetmap.org/wiki/API,en,https://wiki.openstreetmap.org/wiki/API,2022-10-05,16,0,0,0,100, +https://wiki.openstreetmap.org/wiki/FR:Internationalisation_des_cartes,fr,https://wiki.openstreetmap.org/wiki/FR:Internationalisation_des_cartes,2023-12-06,11,383,24,3,0,https://wiki.openstreetmap.org/w/images/thumb/7/7b/Schermafbeelding_2022-09-28_om_21.02.38.png/300px-Schermafbeelding_2022-09-28_om_21.02.38.png +https://wiki.openstreetmap.org/wiki/FR:Tag:generator:method%3Dphotovoltaic,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:generator:method%3Dphotovoltaic,2024-03-02,10,452,107,13,0,https://upload.wikimedia.org/wikipedia/commons/thumb/3/33/Mafate_Marla_solar_panel_dsc00633.jpg/200px-Mafate_Marla_solar_panel_dsc00633.jpg +https://wiki.openstreetmap.org/wiki/Tag:generator:method%3Dphotovoltaic,en,https://wiki.openstreetmap.org/wiki/Tag:generator:method%3Dphotovoltaic,2025-04-22,12,225,95,14,100,https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Giant_photovoltaic_array.jpg/200px-Giant_photovoltaic_array.jpg +https://wiki.openstreetmap.org/wiki/FR:Key:distance,fr,https://wiki.openstreetmap.org/wiki/FR:Key:distance,2024-03-28,9,244,68,12,0,https://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/M27_DLS.JPG/200px-M27_DLS.JPG +https://wiki.openstreetmap.org/wiki/Key:distance,en,https://wiki.openstreetmap.org/wiki/Key:distance,2024-12-29,14,568,86,12,100,https://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/M27_DLS.JPG/200px-M27_DLS.JPG +https://wiki.openstreetmap.org/wiki/FR:Tag_status,fr,https://wiki.openstreetmap.org/wiki/FR:Tag_status,2024-04-02,20,0,0,0,0, +https://wiki.openstreetmap.org/wiki/Tag_status,en,https://wiki.openstreetmap.org/wiki/Tag_status,2025-05-17,25,0,0,0,100, +https://wiki.openstreetmap.org/wiki/FR:Tag:shelter_type%3Dbasic_hut,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:shelter_type%3Dbasic_hut,2024-04-10,17,448,122,23,0,https://upload.wikimedia.org/wikipedia/commons/thumb/2/22/BivaccoBertoglioNebbia.jpg/200px-BivaccoBertoglioNebbia.jpg +https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dbasic_hut,en,https://wiki.openstreetmap.org/wiki/Tag:shelter_type%3Dbasic_hut,2024-11-08,15,441,113,16,100,https://upload.wikimedia.org/wikipedia/commons/thumb/2/22/BivaccoBertoglioNebbia.jpg/200px-BivaccoBertoglioNebbia.jpg +https://wiki.openstreetmap.org/wiki/FR:Tag:highway%3Dmotorway_link,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:highway%3Dmotorway_link,2024-07-02,11,804,139,17,0,https://upload.wikimedia.org/wikipedia/commons/thumb/1/1d/M40_Motorway%2C_Heading_North._Junction_13_Slip_Road_For_A452_-_geograph.org.uk_-_1282061.jpg/200px-M40_Motorway%2C_Heading_North._Junction_13_Slip_Road_For_A452_-_geograph.org.uk_-_1282061.jpg +https://wiki.openstreetmap.org/wiki/Tag:highway%3Dmotorway_link,en,https://wiki.openstreetmap.org/wiki/Tag:highway%3Dmotorway_link,2025-04-10,18,1150,194,16,100,https://upload.wikimedia.org/wikipedia/commons/thumb/1/1d/M40_Motorway%2C_Heading_North._Junction_13_Slip_Road_For_A452_-_geograph.org.uk_-_1282061.jpg/200px-M40_Motorway%2C_Heading_North._Junction_13_Slip_Road_For_A452_-_geograph.org.uk_-_1282061.jpg +https://wiki.openstreetmap.org/wiki/FR:Relation:enforcement,fr,https://wiki.openstreetmap.org/wiki/FR:Relation:enforcement,2024-07-20,16,1304,128,29,0,https://wiki.openstreetmap.org/w/images/thumb/c/c5/Fixed_speed_camera.svg/200px-Fixed_speed_camera.svg.png +https://wiki.openstreetmap.org/wiki/Relation:enforcement,en,https://wiki.openstreetmap.org/wiki/Relation:enforcement,2025-02-09,33,2032,310,65,100,https://wiki.openstreetmap.org/w/images/thumb/c/c5/Fixed_speed_camera.svg/200px-Fixed_speed_camera.svg.png +https://wiki.openstreetmap.org/wiki/FR:Key:roof:material,fr,https://wiki.openstreetmap.org/wiki/FR:Key:roof:material,2024-08-01,10,597,204,83,0,https://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Roof-Tile-3149.jpg/200px-Roof-Tile-3149.jpg +https://wiki.openstreetmap.org/wiki/Key:roof:material,en,https://wiki.openstreetmap.org/wiki/Key:roof:material,2025-06-21,15,1170,379,175,100,https://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Roof-Tile-3149.jpg/200px-Roof-Tile-3149.jpg +https://wiki.openstreetmap.org/wiki/FR:Key:fuel,fr,https://wiki.openstreetmap.org/wiki/FR:Key:fuel,2024-10-29,9,711,147,15,0,https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/BBQ-Ulverstone-20070420-031.jpg/200px-BBQ-Ulverstone-20070420-031.jpg +https://wiki.openstreetmap.org/wiki/Key:fuel,en,https://wiki.openstreetmap.org/wiki/Key:fuel,2025-06-05,10,250,95,12,100,https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/BBQ-Ulverstone-20070420-031.jpg/200px-BBQ-Ulverstone-20070420-031.jpg +https://wiki.openstreetmap.org/wiki/FR:Tag:highway%3Dbusway,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:highway%3Dbusway,2024-12-19,13,557,132,18,0,https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Harmoni_Central_Busway_Transjakarta_2.JPG/200px-Harmoni_Central_Busway_Transjakarta_2.JPG +https://wiki.openstreetmap.org/wiki/Tag:highway%3Dbusway,en,https://wiki.openstreetmap.org/wiki/Tag:highway%3Dbusway,2025-09-04,20,1801,257,31,100,https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Harmoni_Central_Busway_Transjakarta_2.JPG/200px-Harmoni_Central_Busway_Transjakarta_2.JPG +https://wiki.openstreetmap.org/wiki/FR:Tag:railway%3Dtram,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:railway%3Dtram,2024-12-21,11,302,87,15,0,https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Praha%2C_Hloub%C4%9Bt%C3%ADn%2C_Lehovec%2C_tram_KT8D5.JPG/200px-Praha%2C_Hloub%C4%9Bt%C3%ADn%2C_Lehovec%2C_tram_KT8D5.JPG +https://wiki.openstreetmap.org/wiki/Tag:railway%3Dtram,en,https://wiki.openstreetmap.org/wiki/Tag:railway%3Dtram,2023-05-24,16,699,181,14,100,https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Praha%2C_Hloub%C4%9Bt%C3%ADn%2C_Lehovec%2C_tram_KT8D5.JPG/200px-Praha%2C_Hloub%C4%9Bt%C3%ADn%2C_Lehovec%2C_tram_KT8D5.JPG +https://wiki.openstreetmap.org/wiki/FR:Key:building:material,fr,https://wiki.openstreetmap.org/wiki/FR:Key:building:material,2025-01-05,10,336,90,27,0,https://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/M%C3%BCnster%2C_LVM_--_2017_--_6351-7.jpg/200px-M%C3%BCnster%2C_LVM_--_2017_--_6351-7.jpg +https://wiki.openstreetmap.org/wiki/Key:building:material,en,https://wiki.openstreetmap.org/wiki/Key:building:material,2025-08-18,15,640,162,68,100,https://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/M%C3%BCnster%2C_LVM_--_2017_--_6351-7.jpg/200px-M%C3%BCnster%2C_LVM_--_2017_--_6351-7.jpg +https://wiki.openstreetmap.org/wiki/FR:Android,fr,https://wiki.openstreetmap.org/wiki/FR:Android,2025-05-09,36,6795,781,161,0,https://wiki.openstreetmap.org/w/images/thumb/a/a7/Turn-by-turn-bike-navigation.jpg/112px-Turn-by-turn-bike-navigation.jpg +https://wiki.openstreetmap.org/wiki/Android,en,https://wiki.openstreetmap.org/wiki/Android,2025-06-16,27,1784,257,24,100,https://wiki.openstreetmap.org/w/images/thumb/e/e2/Vespucci_screenshot.png/112px-Vespucci_screenshot.png +https://wiki.openstreetmap.org/wiki/FR:Tag:amenity%3Dloading_dock,fr,https://wiki.openstreetmap.org/wiki/FR:Tag:amenity%3Dloading_dock,2025-08-27,13,425,122,15,0,https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Loading_dock.jpg/200px-Loading_dock.jpg +https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dloading_dock,en,https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dloading_dock,2025-07-27,16,776,164,25,100,https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Loading_dock.jpg/200px-Loading_dock.jpg