]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 28 Jul 2019 13:18:39 +0000 (15:18 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Sun, 28 Jul 2019 13:18:39 +0000 (15:18 +0200)
1  2 
CMakeLists.txt
sql/functions.sql

diff --combined CMakeLists.txt
index fcadffd6f07ee36a9383804b6c112786b29f32c0,163b04943c68f8b39cf368ae94647ec2f1de761c..3cb56ed8627810ab2a59d663d57a8b8ea34621e3
@@@ -35,58 -35,61 +35,61 @@@ add_definitions(-DNOMINATIM_VERSION="${
  
  set(BUILD_TESTS off CACHE BOOL "Build test suite" FORCE)
  set(WITH_LUA off CACHE BOOL "Build with lua support" FORCE)
- if (NOT EXISTS "${CMAKE_SOURCE_DIR}/osm2pgsql/CMakeLists.txt")
-     message(FATAL_ERROR "The osm2pgsql directory is empty.\
-     Did you forget to check out Nominatim recursively?\
-     \nTry updating submodules with: git submodule update --init")
- endif()
- add_subdirectory(osm2pgsql)
- find_package(Threads REQUIRED)
- unset(PostgreSQL_TYPE_INCLUDE_DIR CACHE)
- set(PostgreSQL_TYPE_INCLUDE_DIR "/usr/include/")
- find_package(PostgreSQL REQUIRED)
- include_directories(${PostgreSQL_INCLUDE_DIRS})
- link_directories(${PostgreSQL_LIBRARY_DIRS})
- find_program(PYOSMIUM pyosmium-get-changes)
- if (NOT EXISTS "${PYOSMIUM}")
-     set(PYOSMIUM_PATH "")
-         message(WARNING "pyosmium-get-changes not found (required for updates)")
- else()
-     set(PYOSMIUM_PATH "${PYOSMIUM}")
-     message(STATUS "Using pyosmium-get-changes at ${PYOSMIUM_PATH}")
- endif()
- find_program(PG_CONFIG pg_config)
- execute_process(COMMAND ${PG_CONFIG} --pgxs
-                 OUTPUT_VARIABLE PGXS
-                 OUTPUT_STRIP_TRAILING_WHITESPACE)
- if (NOT EXISTS "${PGXS}")
-     message(FATAL_ERROR "Postgresql server package not found.")
+ set(ONLY_DOCS off CACHE BOOL "Build documentation only")
+ if (NOT ONLY_DOCS)
+     if (NOT EXISTS "${CMAKE_SOURCE_DIR}/osm2pgsql/CMakeLists.txt")
+         message(FATAL_ERROR "The osm2pgsql directory is empty.\
+         Did you forget to check out Nominatim recursively?\
+         \nTry updating submodules with: git submodule update --init")
+     endif()
+     add_subdirectory(osm2pgsql)
+     find_package(Threads REQUIRED)
+     unset(PostgreSQL_TYPE_INCLUDE_DIR CACHE)
+     set(PostgreSQL_TYPE_INCLUDE_DIR "/usr/include/")
+     find_package(PostgreSQL REQUIRED)
+     include_directories(${PostgreSQL_INCLUDE_DIRS})
+     link_directories(${PostgreSQL_LIBRARY_DIRS})
+     find_program(PYOSMIUM pyosmium-get-changes)
+     if (NOT EXISTS "${PYOSMIUM}")
+         set(PYOSMIUM_PATH "")
+             message(WARNING "pyosmium-get-changes not found (required for updates)")
+     else()
+         set(PYOSMIUM_PATH "${PYOSMIUM}")
+         message(STATUS "Using pyosmium-get-changes at ${PYOSMIUM_PATH}")
+     endif()
+     find_program(PG_CONFIG pg_config)
+     execute_process(COMMAND ${PG_CONFIG} --pgxs
+                     OUTPUT_VARIABLE PGXS
+                     OUTPUT_STRIP_TRAILING_WHITESPACE)
+     if (NOT EXISTS "${PGXS}")
+         message(FATAL_ERROR "Postgresql server package not found.")
+     endif()
+     find_package(ZLIB REQUIRED)
+     find_package(BZip2 REQUIRED)
+     find_package(LibXml2 REQUIRED)
+     include_directories(${LIBXML2_INCLUDE_DIR})
+     # Setting PHP binary variable as to command line (prevailing) or auto detect
+     if (NOT PHP_BIN)
+          find_program (PHP_BIN php)
+     endif()
+     # sanity check if PHP binary exists
+     if (NOT EXISTS ${PHP_BIN})
+         message(FATAL_ERROR "PHP binary not found. Install php or provide location with -DPHP_BIN=/path/php ")
+     endif()
+     message (STATUS "Using PHP binary " ${PHP_BIN})
  endif()
  
- find_package(ZLIB REQUIRED)
- find_package(BZip2 REQUIRED)
- find_package(LibXml2 REQUIRED)
- include_directories(${LIBXML2_INCLUDE_DIR})
- # Setting PHP binary variable as to command line (prevailing) or auto detect
- if (NOT PHP_BIN)
-      find_program (PHP_BIN php)
- endif()
- # sanity check if PHP binary exists
- if (NOT EXISTS ${PHP_BIN})
-     message(FATAL_ERROR "PHP binary not found. Install php or provide location with -DPHP_BIN=/path/php ")
- endif()
- message (STATUS "Using PHP binary " ${PHP_BIN})
  #-----------------------------------------------------------------------------
  #
  # Setup settings and paths
@@@ -104,16 -107,6 +107,16 @@@ set(WEBSITESCRIPT
      website/status.php
  )
  
 +set(WEBSITEFILES
 +    403.html
 +    509.html
 +    crossdomain.xml
 +    favicon.ico
 +    nominatim.xml
 +    robots.txt
 +    taginfo.json
 +)
 +
  set(CUSTOMSCRIPTS
      utils/country_languages.php
      utils/importWikipedia.php
@@@ -135,11 -128,6 +138,11 @@@ foreach (script_source ${WEBSITESCRIPTS
                     ${PROJECT_BINARY_DIR}/${script_source})
  endforeach()
  
 +foreach (webfile ${WEBSITEFILES})
 +    configure_file(${PROJECT_SOURCE_DIR}/website/${webfile}
 +                   ${PROJECT_BINARY_DIR}/website/${webfile})
 +endforeach()
 +
  configure_file(${PROJECT_SOURCE_DIR}/settings/defaults.php
                 ${PROJECT_BINARY_DIR}/settings/settings.php)
  
@@@ -158,26 -146,30 +161,30 @@@ endforeach(
  #
  #-----------------------------------------------------------------------------
  
- include(CTest)
+ if (NOT ONLY_DOCS)
+     include(CTest)
  
- set(TEST_BDD db osm2pgsql api)
    set(TEST_BDD db osm2pgsql api)
  
- foreach (test ${TEST_BDD})
-     add_test(NAME bdd_${test}
-              COMMAND lettuce features/${test}
-              WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests)
-     set_tests_properties(bdd_${test}
-         PROPERTIES ENVIRONMENT "NOMINATIM_DIR=${PROJECT_BINARY_DIR}")
- endforeach()
    foreach (test ${TEST_BDD})
+         add_test(NAME bdd_${test}
+                  COMMAND lettuce features/${test}
+                  WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests)
+         set_tests_properties(bdd_${test}
+             PROPERTIES ENVIRONMENT "NOMINATIM_DIR=${PROJECT_BINARY_DIR}")
    endforeach()
  
- add_test(NAME php
-          COMMAND phpunit ./
-          WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests-php)
+     add_test(NAME php
+              COMMAND phpunit ./
+              WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests-php)
+ endif()
  
  #-----------------------------------------------------------------------------
  
- add_subdirectory(module)
- add_subdirectory(nominatim)
+ if (NOT ONLY_DOCS)
+     add_subdirectory(module)
+     add_subdirectory(nominatim)
+ endif()
  add_subdirectory(docs)
  
  #-----------------------------------------------------------------------------
diff --combined sql/functions.sql
index 2c7dbe754e7f8e7f265b7a3a931a33cecaab58d6,f696e23132804314cc848f330a445eb40c6e2039..039c03a3645602a8c7a212b2ad5da8e824b63f27
@@@ -1286,7 -1286,7 +1286,7 @@@ BEGI
    -- cheaper but less acurate
    place_centroid := ST_PointOnSurface(NEW.geometry);
    -- For searching near features rather use the centroid
-   near_centroid := ST_Centroid(NEW.geometry);
+   near_centroid := ST_Envelope(NEW.geometry);
    NEW.centroid := null;
    NEW.postcode := null;
    --DEBUG: RAISE WARNING 'Computing preliminary centroid at %',ST_AsText(place_centroid);
               NEW.postcode := location.postcode;
            END IF;
            IF NEW.postcode is null THEN
-             NEW.postcode := get_nearest_postcode(NEW.country_code, near_centroid);
+             NEW.postcode := get_nearest_postcode(NEW.country_code, NEW.geometry);
            END IF;
        END IF;
  
                                    CASE WHEN NEW.rank_search >= 26
                                               AND NEW.rank_search < 30
                                         THEN NEW.geometry
-                                        ELSE near_centroid END,
+                                        ELSE place_centroid END,
                                    search_maxrank, isin_tokens)
    LOOP
      IF location.rank_address != location_rank_search THEN
@@@ -2449,7 -2449,7 +2449,7 @@@ BEGI
      SELECT placex.place_id, osm_type, osm_id, name,
             CASE WHEN extratags ? 'place' THEN 'place' ELSE class END as class,
             CASE WHEN extratags ? 'place' THEN extratags->'place' ELSE type END as type,
 -           admin_level, fromarea, isaddress,
 +           admin_level, fromarea, isaddress and linked_place_id is NULL as isaddress,
             CASE WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address,
             distance, country_code, postcode
        FROM place_addressline join placex on (address_place_id = placex.place_id)