4 | countries | -
5-9 | states, regions, provinces | -
10-12 | counties | -
-13-16 | cities, municipalities, islands | 7.5 km
+13-16 | cities, municipalities, islands | 15 km
17-18 | towns, boroughs | 4 km
19 | villages, suburbs | 2 km
20 | hamlets, farms, neighbourhoods | 1 km
10-12 | county
13-16 | city
17-21 | suburb
- 22-25 | neighbourhood
+ 22-24 | neighbourhood
+ 25 | squares, farms, localities
26-27 | street
28-30 | POI/house number
The country rank 4 usually doesn't show up in the address parts of an object.
The country is determined indirectly from the country code.
-Ranks 5-25 can be assigned more or less freely. They make up the major part
+Ranks 5-24 can be assigned more or less freely. They make up the major part
of the address.
+Rank 25 is also an addressing rank but it is special because while it can be
+the parent to a POI with an addr:place of the same name, it cannot be a parent
+to streets. Use it for place features that are technically on the same level
+as a street (e.g. squares, city blocks) or for places that should not normally
+appear in an address unless explicitly tagged so (e.g place=locality which
+should be uninhabited and as such not addressable).
+
The street ranks 26 and 27 are handled slightly differently. Only one object
from these ranks shows up in an address.
if ($aWithImportance === null) {
$aWithImportance = array_flip(array(
+ 'boundary:administrative',
'place:country',
'place:state',
'place:province',
$aResult['lon'],
$aResult['lat']
);
- // Adjust importance for the number of exact string matches in the result
- $iCountWords = 0;
- $sAddress = $aResult['langaddress'];
- foreach ($aRecheckWords as $i => $sWord) {
- if (stripos($sAddress, $sWord)!==false) {
- $iCountWords++;
- if (preg_match('/(^|,)\s*'.preg_quote($sWord, '/').'\s*(,|$)/', $sAddress)) $iCountWords += 0.1;
- }
- }
-
- $aResult['importance'] = $aResult['importance'] + ($iCountWords*0.1); // 0.1 is a completely arbitrary number but something in the range 0.1 to 0.5 would seem right
// secondary ordering (for results with same importance (the smaller the better):
// - approximate importance of address parts
- $aResult['foundorder'] = -$aResult['addressimportance']/10;
+ if (isset($aResult['addressimportance']) && $aResult['addressimportance']) {
+ $aResult['foundorder'] = -$aResult['addressimportance']/10;
+ } else {
+ $aResult['foundorder'] = -$aResult['importance'];
+ }
// - number of exact matches from the query
$aResult['foundorder'] -= $aResults[$aResult['place_id']]->iExactMatches;
// - importance of the class/type
} else {
$aResult['foundorder'] += 0.01;
}
+
+ // Adjust importance for the number of exact string matches in the result
+ $iCountWords = 0;
+ $sAddress = $aResult['langaddress'];
+ foreach ($aRecheckWords as $i => $sWord) {
+ if (stripos($sAddress, $sWord)!==false) {
+ $iCountWords++;
+ if (preg_match('/(^|,)\s*'.preg_quote($sWord, '/').'\s*(,|$)/', $sAddress)) $iCountWords += 0.1;
+ }
+ }
+
+ // 0.1 is a completely arbitrary number but something in the range 0.1 to 0.5 would seem right
+ $aResult['importance'] = $aResult['importance'] + ($iCountWords*0.1);
}
$aSearchResults[$iIdx] = $aResult;
}
# just use the pgxs makefile
-find_program(PG_CONFIG pg_config)
+
+foreach(suffix ${PostgreSQL_ADDITIONAL_VERSIONS} "13" "12" "11" "10" "9.6" "9.5" "9.4" "9.3")
+ list(APPEND PG_CONFIG_HINTS
+ "/usr/pgsql-${suffix}/bin")
+endforeach()
+
+find_program(PG_CONFIG pg_config HINTS ${PG_CONFIG_HINTS})
+
+
+
execute_process(COMMAND ${PG_CONFIG} --pgxs
OUTPUT_VARIABLE PGXS
OUTPUT_STRIP_TRAILING_WHITESPACE)
-Subproject commit acbec68bbf94dafae103663801d55291cf8f227e
+Subproject commit 94a5060353179f4cf3e92aa622a2aa5d1afa6fee
"province" : [8, 0],
"region" : [18, 0],
"county" : 12,
+ "district" : 12,
"municipality" : 14,
"city" : 16,
"town" : [18, 16],
"borough" : 18,
"village" : [19, 16],
- "district" : [19, 16],
"suburb" : [19, 20],
"hamlet" : 20,
"croft" : 20,
- "subdivision" : 20,
- "allotments" : 20,
+ "subdivision" : 22,
+ "allotments" : 22,
"neighbourhood" : [20, 22],
"quarter" : [20, 22],
"isolated_dwelling" : [22, 20],
- "city_block" : 22,
- "mountain_pass" : [20, 0],
+ "farm" : [22, 20],
+ "city_block" : 25,
+ "mountain_pass" : 25,
"square" : 25,
+ "locality" : 25,
"houses" : [28, 0],
- "farm" : [20, 0],
- "locality" : [20, 0],
"house" : 30,
"" : [22, 0]
},
python3-pip python3-setuptools python3-devel \
expat-devel zlib-devel
- # make sure pg_config gets found
- echo 'PATH=/usr/pgsql-11/bin/:$PATH' >> ~/.bash_profile
- source ~/.bash_profile
-
- pip3 install --user psycopg2 pytidylib
+ pip3 install --user psycopg2
#
python3-pip python3-setuptools python3-devel \
expat-devel zlib-devel
- # make sure pg_config gets found
- echo 'PATH=/usr/pgsql-12/bin:$PATH' >> ~/.bash_profile
- source ~/.bash_profile
-
- pip3 install --user psycopg2 pytidylib
+ pip3 install --user psycopg2
#