]> git.openstreetmap.org Git - nominatim.git/commitdiff
Black/whitelisting for special phrases
authorSarah Hoffmann <lonvia@denofr.de>
Tue, 20 Mar 2012 23:40:35 +0000 (00:40 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Fri, 15 Jun 2012 18:48:30 +0000 (20:48 +0200)
Allows to restrict the special phrases imported from the wiki.
Blacklist allows to exclude certain class/type combinations.
Whitelist allows to define an allowed subset of types for a class.
Adjust to your liking in settings/phrase_settings.php before running
the specialphrases script.

settings/phrase_settings.php [new file with mode: 0644]
utils/specialphrases.php

diff --git a/settings/phrase_settings.php b/settings/phrase_settings.php
new file mode 100644 (file)
index 0000000..4456316
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+# These settings control the import of special phrases from the wiki.
+
+# Languages to download the special phrases for.
+$aLanguageIn = array(
+                       'af',
+                       'ar',
+                       'br',
+                       'ca',
+                       'cs',
+                       'de',
+                       'en',
+                       'es',
+                       'et',
+                       'eu',
+                       'fa',
+                       'fi',
+                       'fr',
+                       'gl',
+                       'hr',
+                       'hu',
+                       'ia',
+                       'is',
+                       'it',
+                       'ja',
+                       'mk',
+                       'nl',
+                       'no',
+                       'pl',
+                       'ps',
+                       'pt',
+                       'ru',
+                       'sk',
+                       'sv',
+                       'uk',
+                       'vi',
+               );
+
+# class/type combinations to exclude
+$aTagsBlacklist = array(
+  'boundary' => array('administrative'),
+  'place' => array('house', 'houses'),
+);
+# If a class is in the white list then all types will 
+# be ignored except the ones given in the list.
+# Also use this list to exclude an entire class from
+# special phrases.
+$aTagsWhitelist = array(
+  'highway' => array('bus_stop', 'rest_area', 'raceway'),
+  'building' => array(),
+);
index 225d293c8d4c086018904eb54372aaf8492bedda..c31ac36f6f91b348d7c1afe04b8f3656baf3ad25 100755 (executable)
         );
         getCmdOpt($_SERVER['argv'], $aCMDOptions, $aCMDResult, true, true);
 
-       $aLanguageIn = array(
-                       'af',
-                       'ar',
-                       'br',
-                       'ca',
-                       'cs',
-                       'de',
-                       'en',
-                       'es',
-                       'et',
-                       'eu',
-                       'fa',
-                       'fi',
-                       'fr',
-                       'gl',
-                       'hr',
-                       'hu',
-                       'ia',
-                       'is',
-                       'it',
-                       'ja',
-                       'mk',
-                       'nl',
-                       'no',
-                       'pl',
-                       'ps',
-                       'pt',
-                       'ru',
-                       'sk',
-                       'sv',
-                       'uk',
-                       'vi',
-               );
 
     if ($aCMDResult['countries']) {
         echo "select getorcreate_country(make_standard_name('uk'), 'gb');\n";
@@ -63,6 +30,7 @@
 
        if ($aCMDResult['wiki-import'])
        {
+               include(CONST_BasePath.'/settings/phrase_settings.php');
                $aPairs = array();
 
                foreach($aLanguageIn as $sLanguage)
                                                preg_match('/^\\w+$/', $sType) < 1) {
                                                trigger_error("Bad class/type for language $sLanguage: $sClass=$sType");
                                                exit;
-                                       }       
+                                       }
+                                       # blacklisting: disallow certain class/type combinations
+                                       if (isset($aTagsBlacklist[$sClass]) && in_array($sType, $aTagsBlacklist[$sClass])) {
+                                               # fwrite(STDERR, "Blacklisted: ".$sClass."/".$sType."\n");
+                                               continue;
+                                       }
+                                       # whitelisting: if class is in whitelist, allow only tags in the list
+                                       if (isset($aTagsWhitelist[$sClass])     && !in_array($sType, $aTagsWhitelist[$sClass])) {
+                                               # fwrite(STDERR, "Non-Whitelisted: ".$sClass."/".$sType."\n");
+                                               continue;
+                                       }
                                        $aPairs[$sClass.'|'.$sType] = array($sClass, $sType);
 
                                        switch(trim($aMatch[4]))