]> git.openstreetmap.org Git - nominatim.git/commitdiff
Switch to configurable style for osm2pgsql
authorSarah Hoffmann <lonvia@denofr.de>
Mon, 26 Nov 2018 23:17:00 +0000 (00:17 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Tue, 8 Jan 2019 21:54:41 +0000 (22:54 +0100)
Includes the full style, which is the same as now (minus
sidwalk exclusion) and a minimal style for boundaries only.

lib/setup/SetupClass.php
settings/defaults.php
settings/import-admin.style [new file with mode: 0644]
settings/import-full.style [new file with mode: 0644]
test/bdd/osm2pgsql/import/tags.feature
utils/update.php

index d7de0145534157f21423adccabf0057f018bee1d..e6b07998980a96086bf07dc189acdba1145ab61d 100755 (executable)
@@ -10,7 +10,7 @@ class SetupFunctions
     protected $iInstances;
     protected $sModulePath;
     protected $aDSNInfo;
-    protected $sVerbose;
+    protected $bVerbose;
     protected $sIgnoreErrors;
     protected $bEnableDiffUpdates;
     protected $bEnableDebugStatements;
@@ -46,7 +46,7 @@ class SetupFunctions
         }
 
         // setting member variables based on command line options stored in $aCMDResult
-        $this->sVerbose = $aCMDResult['verbose'];
+        $this->bVerbose = $aCMDResult['verbose'];
 
         //setting default values which are not set by the update.php array
         if (isset($aCMDResult['ignore-errors'])) {
@@ -189,6 +189,8 @@ class SetupFunctions
             fail("osm2pgsql not found in '$osm2pgsql'");
         }
 
+        $osm2pgsql .= ' -S '.CONST_Import_Style;
+
         if (!is_null(CONST_Osm2pgsql_Flatnode_File) && CONST_Osm2pgsql_Flatnode_File) {
             $osm2pgsql .= ' --flat-nodes '.CONST_Osm2pgsql_Flatnode_File;
         }
@@ -405,7 +407,7 @@ class SetupFunctions
             $sSQL .= " and not (class='place' and type='houses' and osm_type='W'";
             $sSQL .= "          and ST_GeometryType(geometry) = 'ST_LineString')";
             $sSQL .= ' and ST_IsValid(geometry)';
-            if ($this->sVerbose) echo "$sSQL\n";
+            if ($this->bVerbose) echo "$sSQL\n";
             if (!pg_send_query($aDBInstances[$i]->connection, $sSQL)) {
                 fail(pg_last_error($aDBInstances[$i]->connection));
             }
@@ -417,7 +419,7 @@ class SetupFunctions
         $sSQL .= ' (osm_id, address, linegeo)';
         $sSQL .= ' SELECT osm_id, address, geometry from place where ';
         $sSQL .= "class='place' and type='houses' and osm_type='W' and ST_GeometryType(geometry) = 'ST_LineString'";
-        if ($this->sVerbose) echo "$sSQL\n";
+        if ($this->bVerbose) echo "$sSQL\n";
         if (!pg_send_query($aDBInstances[$iLoadThreads]->connection, $sSQL)) {
             fail(pg_last_error($aDBInstances[$iLoadThreads]->connection));
         }
@@ -708,7 +710,7 @@ class SetupFunctions
             if (!$bFound) array_push($aDropTables, $sTable);
         }
         foreach ($aDropTables as $sDrop) {
-            if ($this->sVerbose) echo "Dropping table $sDrop\n";
+            if ($this->bVerbose) echo "Dropping table $sDrop\n";
             @pg_query($this->oDB->connection, "DROP TABLE $sDrop CASCADE");
             // ignore warnings/errors as they might be caused by a table having
             // been deleted already by CASCADE
@@ -716,7 +718,7 @@ class SetupFunctions
 
         if (!is_null(CONST_Osm2pgsql_Flatnode_File) && CONST_Osm2pgsql_Flatnode_File) {
             if (file_exists(CONST_Osm2pgsql_Flatnode_File)) {
-                if ($this->sVerbose) echo 'Deleting '.CONST_Osm2pgsql_Flatnode_File."\n";
+                if ($this->bVerbose) echo 'Deleting '.CONST_Osm2pgsql_Flatnode_File."\n";
                 unlink(CONST_Osm2pgsql_Flatnode_File);
             }
         }
@@ -740,7 +742,7 @@ class SetupFunctions
         runSQLScript(
             $sScript,
             $bfatal,
-            $this->sVerbose,
+            $this->bVerbose,
             $this->sIgnoreErrors
         );
     }
@@ -794,7 +796,7 @@ class SetupFunctions
         if (!file_exists($sFilename)) fail('unable to find '.$sFilename);
 
         $sCMD = 'psql -p '.$this->aDSNInfo['port'].' -d '.$this->aDSNInfo['database'];
-        if (!$this->sVerbose) {
+        if (!$this->bVerbose) {
             $sCMD .= ' -q';
         }
         if (isset($this->aDSNInfo['hostspec'])) {
@@ -857,6 +859,10 @@ class SetupFunctions
 
     private function runWithPgEnv($sCmd)
     {
+        if ($this->bVerbose) {
+            echo "Execute: $sCmd\n";
+        }
+
         $aProcEnv = null;
 
         if (isset($this->aDSNInfo['password'])) {
index 2b3ddeb28ada84987632c743d506efb557dba1cc..2a2aea36894d8b48a1e45832d63a7997e3ff527d 100644 (file)
@@ -51,6 +51,7 @@ if (isset($_GET['debug']) && $_GET['debug']) @define('CONST_Debug', true);
 @define('CONST_Wikipedia_Data_Path', CONST_ExtraDataPath);
 @define('CONST_Phrase_Config', CONST_BasePath.'/settings/phrase_settings.php');
 @define('CONST_Address_Level_Config', CONST_BasePath.'/settings/address-levels.json');
+@define('CONST_Import_Style', CONST_BasePath.'/settings/import-full.style');
 
 // osm2pgsql settings
 @define('CONST_Osm2pgsql_Flatnode_File', null);
diff --git a/settings/import-admin.style b/settings/import-admin.style
new file mode 100644 (file)
index 0000000..89a1eb1
--- /dev/null
@@ -0,0 +1,64 @@
+[
+{
+    "keys" : ["name:prefix", "name:suffix", "name:botanical", "*wikidata"],
+    "values" : {
+        "" : "skip"
+    }
+},
+{
+    "keys" : ["ref", "int_ref", "nat_ref", "reg_ref", "loc_ref", "old_ref",
+              "iata", "icao", "pcode"],
+    "values" : {
+        "" : "ref"
+    }
+},
+{
+    "keys" : ["name", "name:*", "int_name", "int_name:*", "nat_name", "nat_name:*",
+              "reg_name", "reg_name:*", "loc_name", "loc_name:*",
+              "old_name", "old_name:*", "alt_name", "alt_name:*", "alt_name_*",
+              "official_name", "official_name:*", "place_name", "place_name:*",
+              "short_name", "short_name:*", "brand"],
+    "values" : {
+        "" : "name"
+    }
+},
+{
+    "keys" : ["landuse"],
+    "values" : {
+        "cemetry" : "skip",
+        "" : "fallback"
+    }
+},
+{
+    "keys" : ["boundary"],
+    "values" : {
+        "administrative" : "main"
+    }
+},
+{
+    "keys" : ["place"],
+    "values" : {
+        "" : "main"
+    }
+},
+{
+    "keys" : ["postal_code", "postcode", "addr:postcode",
+              "tiger:zip_left", "tiger:zip_right"],
+    "values" : {
+        "" : "postcode"
+    }
+},
+{
+    "keys" : ["country_code", "ISO3166-1", "is_in:country_code", "is_in_country",
+              "addr:country", "addr:country", "addr:country_code"],
+    "values" : {
+        "" : "country"
+    }
+},
+{
+    "keys" : ["addr:*", "is_in:*", "tiger:county"],
+    "values" : {
+        "" : "address"
+    }
+}
+]
diff --git a/settings/import-full.style b/settings/import-full.style
new file mode 100644 (file)
index 0000000..f84b930
--- /dev/null
@@ -0,0 +1,233 @@
+[
+{
+    "keys" : ["*source"],
+    "values" : {
+        "" : "skip"
+    }
+},
+{
+    "keys" : ["name:prefix", "name:suffix", "name:botanical", "wikidata",
+              "*:wikidata"],
+    "values" : {
+        "" : "extra"
+    }
+},
+{
+    "keys" : ["ref", "int_ref", "nat_ref", "reg_ref", "loc_ref", "old_ref",
+              "iata", "icao", "pcode", "pcode:*"],
+    "values" : {
+        "" : "ref"
+    }
+},
+{
+    "keys" : ["name", "name:*", "int_name", "int_name:*", "nat_name", "nat_name:*",
+              "reg_name", "reg_name:*", "loc_name", "loc_name:*",
+              "old_name", "old_name:*", "alt_name", "alt_name:*", "alt_name_*",
+              "official_name", "official_name:*", "place_name", "place_name:*",
+              "short_name", "short_name:*", "brand"],
+    "values" : {
+        "" : "name"
+    }
+},
+{
+    "keys" : ["addr:housename"],
+    "values" : {
+        "" : "name,house"
+    }
+},
+{
+    "keys" : ["emergency"],
+    "values" : {
+        "fire_hydrant" : "skip",
+        "yes" : "skip",
+        "no" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["historic", "military"],
+    "values" : {
+        "no" : "skip",
+        "yes" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["natural"],
+    "values" : {
+        "yes" : "skip",
+        "no" : "skip",
+        "coastline" : "skip",
+        "" : "main,with_name"
+    }
+},
+{
+    "keys" : ["landuse"],
+    "values" : {
+        "cemetry" : "main,with_name",
+        "" : "main,fallback,with_name"
+    }
+},
+{
+    "keys" : ["highway"],
+    "values" : {
+        "no" : "skip",
+        "turning_circle" : "skip",
+        "mini_roundabout" : "skip",
+        "noexit" : "skip",
+        "crossing" : "skip",
+        "traffic_signals" : "main,with_name",
+        "service" : "main,with_name",
+        "cycleway" : "main,with_name",
+        "path" : "main,with_name",
+        "footway" : "main,with_name",
+        "steps" : "main,with_name",
+        "bridleway" : "main,with_name",
+        "track" : "main,with_name",
+        "byway": "main,with_name",
+        "motorway_link" : "main,with_name",
+        "trunk_link" : "main,with_name",
+        "primary_link" : "main,with_name",
+        "secondary_link" : "main,with_name",
+        "tertiary_link" : "main,with_name",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["railway"],
+    "values" : {
+        "level_crossing" : "skip",
+        "no" : "skip",
+        "" : "main,with_name"
+    }
+},
+{
+    "keys" : ["man_made"],
+    "values" : {
+        "survey_point" : "skip",
+        "cutline" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["aerialway"],
+    "values" : {
+        "pylon" : "skip",
+        "no" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["boundary"],
+    "values" : {
+        "" : "main,with_name"
+    }
+},
+{
+    "keys" : ["amenity"],
+    "values" : {
+        "restaurant" : "main,operator",
+        "fuel" : "main,operator"
+    }
+},
+{
+    "keys" : ["aeroway", "amenity", "club", "craft", "leisure",
+              "office", "mountain_pass"],
+    "values" : {
+        "no" : "skip",
+        "" : "main"
+    }
+},
+{
+    "keys" : ["shop"],
+    "values" : {
+        "no" : "skip",
+        "" : "main,operator"
+    }
+},
+{
+    "keys" : ["tourism"],
+    "values" : {
+        "yes" : "skip",
+        "no" : "skip",
+        "" : "main,operator"
+    }
+},
+{
+    "keys" : ["bridge", "tunnel"],
+    "values" : {
+        "" : "main,with_name_key"
+    }
+},
+{
+    "keys" : ["waterway"],
+    "values" : {
+        "riverbank" : "skip",
+        "" : "main,with_name"
+    }
+},
+{
+    "keys" : ["place"],
+    "values" : {
+        "" : "main"
+    }
+},
+{
+    "keys" : ["junction"],
+    "values" : {
+        "" : "main,fallback,with_name"
+    }
+},
+{
+    "keys" : ["postal_code", "postcode", "addr:postcode",
+              "tiger:zip_left", "tiger:zip_right"],
+    "values" : {
+        "" : "postcode"
+    }
+},
+{
+    "keys" : ["country_code", "ISO3166-1", "is_in:country_code", "is_in_country",
+              "addr:country", "addr:country", "addr:country_code"],
+    "values" : {
+        "" : "country"
+    }
+},
+{
+    "keys" : ["addr:housenumber", "addr:conscriptionnumber", "addr:streetnumber"],
+    "values" : {
+        "" : "address,house"
+    }
+},
+{
+    "keys" : ["addr:*", "is_in:*", "tiger:county", "is_in"],
+    "values" : {
+        "" : "address"
+    }
+},
+{
+    "keys" : ["building"],
+    "values" : {
+        "no" : "skip",
+        "" : "main,fallback,with_name"
+    }
+},
+{
+    "keys" : ["tracktype", "traffic_calming", "service", "cuisine", "capital",
+              "dispensing", "religion", "denomination", "sport",
+              "internet_access", "lanes", "surface", "smoothness", "width",
+              "est_width", "incline", "opening_hours", "collection_times",
+              "service_times", "disused", "wheelchair", "sac_scale",
+              "trail_visibility", "mtb:scale", "mtb:description", "wood",
+              "drive_through", "drive_in", "access", "vehicle", "bicyle",
+              "foot", "goods", "hgv", "motor_vehicle", "motor_car", "oneway",
+              "date_on", "date_off", "day_on", "day_off", "hour_on", "hour_off",
+              "maxweight", "maxheight", "maxspeed", "fee", "toll", "charge",
+              "population", "description", "image", "attribution", "fax",
+              "email", "url", "website", "phone", "real_ale", "smoking",
+              "food", "camera", "brewery", "locality", "wikipedia",
+              "wikipedia:*", "access:*", "contact:*", "drink:*", "toll:*"],
+    "values" : {
+        "" : "extra"
+    }
+}
+]
index 2e44e145ccdaf6a07c3593d2224d62400cd00366..94506fecade7b63be32908dc6fee7782759ed55a 100644 (file)
@@ -231,14 +231,6 @@ Feature: Tag evaluation
       | boundary | administrative |
       | waterway | stream |
 
-    Scenario: Footways are not included if they are sidewalks
-        When loading osm data
-          """
-          n2 Thighway=footway,name=To%20%Hell,footway=sidewalk
-          n23 Thighway=footway,name=x
-          """
-        Then place has no entry for N2
-
     Scenario: named junctions are included if there is no other tag
         When loading osm data
           """
@@ -538,9 +530,9 @@ Feature: Tag evaluation
         Then place contains
           | object | class   | type |
           | N10    | tourism | hotel |
-          | N12    | building| yes |
+          | N12    | building| shed |
           | N13    | building| yes |
-          | N14    | building| yes |
+          | N14    | place   | postcode |
         And place has no entry for N10:building
         And place has no entry for N11
 
index c933d26ec19f0af57456cdcd7bd971ee85f3d6f3..3086a70b51933a5f08edefa7c7950f29ae748193 100644 (file)
@@ -63,7 +63,7 @@ if ($iCacheMemory + 500 > getTotalMemoryMB()) {
     $iCacheMemory = getCacheMemoryMB();
     echo "WARNING: resetting cache memory to $iCacheMemory\n";
 }
-$sOsm2pgsqlCmd = CONST_Osm2pgsql_Binary.' -klas --number-processes 1 -C '.$iCacheMemory.' -O gazetteer -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'];
+$sOsm2pgsqlCmd = CONST_Osm2pgsql_Binary.' -klas --number-processes 1 -C '.$iCacheMemory.' -O gazetteer -S '.CONST_Import_Style.' -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'];
 if (isset($aDSNInfo['username']) && $aDSNInfo['username']) {
     $sOsm2pgsqlCmd .= ' -U ' . $aDSNInfo['username'];
 }