You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@baremaps.apache.org by bc...@apache.org on 2023/10/26 09:58:19 UTC
[incubator-baremaps] branch colorfull-extrusions updated: Improve queries
This is an automated email from the ASF dual-hosted git repository.
bchapuis pushed a commit to branch colorfull-extrusions
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git
The following commit(s) were added to refs/heads/colorfull-extrusions by this push:
new 6f80f822 Improve queries
6f80f822 is described below
commit 6f80f8221b908e6c129bb51a78533469c7b48f21
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Thu Oct 26 11:58:14 2023 +0200
Improve queries
---
basemap/layers/building/extrusion.js | 11 +++++++-
basemap/layers/building/tileset.js | 54 +++++++++++++++++++++---------------
2 files changed, 41 insertions(+), 24 deletions(-)
diff --git a/basemap/layers/building/extrusion.js b/basemap/layers/building/extrusion.js
index 2c28e5ed..9da8d3a9 100644
--- a/basemap/layers/building/extrusion.js
+++ b/basemap/layers/building/extrusion.js
@@ -21,7 +21,15 @@ export default {
type: 'fill-extrusion',
source: 'baremaps',
'source-layer': 'building',
- filter: ['!=', ['get', 'building'], 'no'],
+ filter: [
+ 'all',
+ ['!', ['has', 'layer']],
+ [
+ 'any',
+ ['!=', ['get', 'building'], 'no'],
+ ['==', ['get', 'building:part'], 'yes'],
+ ]
+ ],
layout: {
visibility: 'visible',
},
@@ -33,6 +41,7 @@ export default {
["get", "building:colour"],
theme.buildingShapeFillColor,
],
+ //"fill-extrusion-color": theme.buildingShapeFillColor,
"fill-extrusion-base": [
'interpolate',
['linear'],
diff --git a/basemap/layers/building/tileset.js b/basemap/layers/building/tileset.js
index 47c962e1..96537507 100644
--- a/basemap/layers/building/tileset.js
+++ b/basemap/layers/building/tileset.js
@@ -26,21 +26,25 @@ export default {
id,
tags
|| jsonb_build_object('extrusion:base', (CASE
- WHEN tags ? 'building:min_height'
- THEN tags ->> 'building:min_height'
- WHEN tags ->> 'building:min_level' ~ '^[0-9\\\\\\\\.]+$'
- THEN tags ->> 'building:min_level'
- ELSE '0' END)::real * 3)
+ WHEN tags ? 'building:min_height'
+ THEN (tags ->> 'building:min_height')::real
+ WHEN tags ->> 'building:min_level' ~ '^[0-9\\\\\\\\.]+$'
+ THEN (tags ->> 'building:min_level')::real * 3
+ ELSE '0' END)::real)
|| jsonb_build_object('extrusion:height', (CASE
- WHEN tags ? 'building:height'
- THEN tags ->> 'building:height'
- WHEN tags ->> 'building:levels' ~ '^[0-9\\\\\\\\.]+$'
- THEN tags ->> 'building:levels'
- ELSE '2' END)::real * 3),
- geom
+ WHEN tags ? 'height'
+ THEN (split_part(regexp_replace(replace(tags ->> 'height', ',', '.'), '[A-Za-z]', ''), ';', 1))::real
+ WHEN tags ? 'building:height'
+ THEN (tags ->> 'building:height')::real
+ WHEN tags ->> 'building:levels' ~ '^[0-9\\\\\\\\.]+$'
+ THEN (tags ->> 'building:levels')::real * 3
+ ELSE '2' END)::real),
+ geom
FROM osm_ways
- WHERE tags ? 'building'`,
+ WHERE tags ? 'building'
+ OR tags ? 'building:part'`,
},
+ /*
{
minzoom: 13,
maxzoom: 20,
@@ -49,20 +53,24 @@ export default {
id,
tags
|| jsonb_build_object('extrusion:base', (CASE
- WHEN tags ? 'building:min_height'
- THEN tags ->> 'building:min_height'
- WHEN tags ->> 'building:min_level' ~ '^[0-9\\\\\\\\.]+$'
- THEN tags ->> 'building:min_level'
- ELSE '0' END)::real * 3)
+ WHEN tags ? 'building:min_height'
+ THEN (tags ->> 'building:min_height')::real
+ WHEN tags ->> 'building:min_level' ~ '^[0-9\\\\\\\\.]+$'
+ THEN (tags ->> 'building:min_level')::real * 3
+ ELSE '0' END)::real)
|| jsonb_build_object('extrusion:height', (CASE
- WHEN tags ? 'building:height'
- THEN tags ->> 'building:height'
- WHEN tags ->> 'building:levels' ~ '^[0-9\\\\\\\\.]+$'
- THEN tags ->> 'building:levels'
- ELSE '2' END)::real * 3),
+ WHEN tags ? 'height'
+ THEN (split_part(regexp_replace(replace(tags ->> 'height', ',', '.'), '[A-Za-z]', ''), ';', 1))::real
+ WHEN tags ? 'building:height'
+ THEN (tags ->> 'building:height')::real
+ WHEN tags ->> 'building:levels' ~ '^[0-9\\\\\\\\.]+$'
+ THEN (tags ->> 'building:levels')::real * 3
+ ELSE '2' END)::real),
geom
FROM osm_relations
- WHERE tags ? 'building'`,
+ WHERE tags ? 'building'
+ OR tags ? 'building:part'`,
},
+ */
],
}