#!/usr/bin/php -Cq transliterate($sLabel)); } else { $sTrans = null; } $sClass = trim($aMatch[2]); $sType = trim($aMatch[3]); // hack around a bug where building=yes was imported with // quotes into the wiki $sType = preg_replace('/"/', '', $sType); // sanity check, in case somebody added garbage in the wiki if (preg_match('/^\\w+$/', $sClass) < 1 || 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])) { case 'near': echo "select getorcreate_amenityoperator(make_standard_name('".pg_escape_string($sLabel)."'), '$sTrans', '$sClass', '$sType', 'near');\n"; break; case 'in': echo "select getorcreate_amenityoperator(make_standard_name('".pg_escape_string($sLabel)."'), '$sTrans', '$sClass', '$sType', 'in');\n"; break; default: echo "select getorcreate_amenity(make_standard_name('".pg_escape_string($sLabel)."'), '$sTrans', '$sClass', '$sType');\n"; break; } } } } echo "create index idx_placex_classtype on placex (class, type);"; foreach ($aPairs as $aPair) { echo "create table place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1]); if (CONST_Tablespace_Aux_Data) echo " tablespace ".CONST_Tablespace_Aux_Data; echo " as select place_id as place_id,st_centroid(geometry) as centroid from placex where "; echo "class = '".pg_escape_string($aPair[0])."' and type = '".pg_escape_string($aPair[1])."'"; echo ";\n"; echo "CREATE INDEX idx_place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])."_centroid "; echo "ON place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])." USING GIST (centroid)"; if (CONST_Tablespace_Aux_Index) echo " tablespace ".CONST_Tablespace_Aux_Index; echo ";\n"; echo "CREATE INDEX idx_place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])."_place_id "; echo "ON place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])." USING btree(place_id)"; if (CONST_Tablespace_Aux_Index) echo " tablespace ".CONST_Tablespace_Aux_Index; echo ";\n"; echo "GRANT SELECT ON place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1]).' TO "'.CONST_Database_Web_User."\";\n"; } echo "drop index idx_placex_classtype;"; }