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
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
${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)
#
#-----------------------------------------------------------------------------
- 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)
#-----------------------------------------------------------------------------
-- 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
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)