Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenMapTiles 3.15.0 SNAPSHOT (2) #144

Merged
merged 185 commits into from
Mar 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
185 commits
Select commit Hold shift + click to select a range
0bb61f7
version bumped from 3.14.0 to 3.15.0-SNAPSHOT
phanecak-maptiler Jul 5, 2023
d32501e
regenerate-openmaptiles.sh 07f243c5d9efa558fa539d7a31b2ae50507aaa9d (…
phanecak-maptiler Jul 5, 2023
862e50a
SQL -> Java re-implementation of OMT PR 1457
phanecak-maptiler Jul 6, 2023
8998ddd
version bumped from 3.14.0 to 3.15.0-SNAPSHOT
phanecak-maptiler Jul 5, 2023
14c204d
WaterName.areaToMinZoom(): improved handling of rounding and precissi…
phanecak-maptiler Jul 7, 2023
fcfe115
mvn spotless:apply
phanecak-maptiler Jul 7, 2023
91b1842
water label min. zoom calculation simplified
phanecak-maptiler Jul 9, 2023
05b91a7
comment adjusted to be hopefully more useful
phanecak-maptiler Jul 9, 2023
096b1a4
mvn spotless:apply
phanecak-maptiler Jul 10, 2023
fda198f
minzoom for CA_TRANSCANADA and US_INTERSTATE trunk now 4 (to match OM…
phanecak-maptiler Jul 10, 2023
74f655b
minzoom for some other Canada trunks now 4 (to match OMT PR 1446)
phanecak-maptiler Jul 10, 2023
cf92b5e
equals() simplified + clean-up of comments
phanecak-maptiler Jul 10, 2023
be4ac2d
Merge pull request #3 from phanecak-maptiler/zlw-water-area-size
phanecak-maptiler Jul 11, 2023
32c59d1
regenerate-openmaptiles.sh 5f7b2c11b3224759a21133381ca7d959a1f3cf51 (…
phanecak-maptiler Jul 14, 2023
4e3f0fd
GB road relations processing adjusted to match OMT PR 1465, e.g. hand…
phanecak-maptiler Jul 14, 2023
da044ca
regenerate-openmaptiles.sh edb42f2db3c2b0ec37045367720eed84d7bbd71f (…
phanecak-maptiler Jul 14, 2023
436e3b3
IE road relations processing adjusted to match OMT PR 1466, e.g. hand…
phanecak-maptiler Jul 14, 2023
6354264
fixed handling of networkType for secondary GB routes
phanecak-maptiler Jul 14, 2023
984b7f2
clean-up: case statements simplified
phanecak-maptiler Jul 14, 2023
4702e31
Merge branch 'omt3_15-gb_primary_secondary' into omt3_15-routes_of_ir…
phanecak-maptiler Jul 14, 2023
1e1b896
mvn spotless:apply
phanecak-maptiler Jul 14, 2023
8750c78
clazz calculation moved up so that minzoom can be set to 3 for only l…
phanecak-maptiler Jul 14, 2023
7418117
unit tests adjusted + extended to cover 'minzoom=3 fore lakes' change
phanecak-maptiler Jul 14, 2023
bfce42e
fixed minor typo from previous PR
phanecak-maptiler Jul 17, 2023
65f672f
Merge pull request #4 from phanecak-maptiler/omt3_15-trans_canada
phanecak-maptiler Jul 17, 2023
213dd14
render POIs for large universities at low zoom (to match OMT PR 1479)
phanecak-maptiler Jul 17, 2023
77e6aea
Merge pull request #5 from phanecak-maptiler/omt3_15-gb_primary_secon…
phanecak-maptiler Jul 18, 2023
1fa4181
Merge pull request #6 from phanecak-maptiler/omt3_15-routes_of_ireland
phanecak-maptiler Jul 18, 2023
03f2b04
clean-up, to make the diff/PR smaller
phanecak-maptiler Jul 18, 2023
7a718e6
Merge pull request #7 from phanecak-maptiler/omt3_15-big_lake_lake_lines
phanecak-maptiler Jul 19, 2023
a93cc9e
Merge pull request #8 from phanecak-maptiler/large_uni_poi_zoom
phanecak-maptiler Jul 19, 2023
17604dc
Merge branch 'upstream-main' into omt_3_15_0
phanecak-maptiler Aug 4, 2023
f06187a
Merge branch 'upstream-main' into omt_3_15_0
phanecak-maptiler Sep 6, 2023
5b6a46c
Merge branch 'upstream-main' into omt_3_15_0
phanecak-maptiler Sep 13, 2023
e46c44c
regenerate-openmaptiles.sh 5e9b7c475d53a5bd5ea394da361594d3f4ce2d66 (…
phanecak-maptiler Sep 25, 2023
258db80
handle 'grade1' and 'tracktype' as per OMT PR 1485
phanecak-maptiler Sep 25, 2023
62814fe
Merge pull request #9 from phanecak-maptiler/omt3_15-set_paved_attrib…
phanecak-maptiler Sep 26, 2023
d3429c4
added implementation of agg_stop
phanecak-maptiler Sep 26, 2023
7f96e66
Merge branch 'upstream-main' into omt_3_15_0
phanecak-maptiler Sep 26, 2023
137a89a
Merge branch 'omt_3_15_0' into omt3_15-agg_stop_fix
phanecak-maptiler Sep 26, 2023
0672adf
Merge pull request #10 from phanecak-maptiler/omt3_15-agg_stop_fix
phanecak-maptiler Sep 28, 2023
6a099de
clean-up: mvn spotless:apply
phanecak-maptiler Oct 2, 2023
afbd863
Long ferries (as per OMT PR 1486)
phanecak-maptiler Oct 2, 2023
19a75a0
regenerate-openmaptiles.sh b3d67ed5b327c9059aeea0b3304772c6b4c8c7e9 …
phanecak-maptiler Oct 2, 2023
899a0c5
Add aboriginal lands (as per OMT PR 1489)
phanecak-maptiler Oct 2, 2023
7043e8c
handle duplicate route relations (to match OMT PR 1501)
phanecak-maptiler Oct 4, 2023
b597ecf
regenerate-openmaptiles.sh master, to match several OMT PRs which adj…
phanecak-maptiler Oct 6, 2023
604f22b
URLs in comments adjusted to match OMT PR 1560
phanecak-maptiler Oct 9, 2023
ed7e357
Convert separated addresses to dashed addresses
phanecak-maptiler Oct 9, 2023
3470989
add brunnel (and layer) attributes only for certain zoomlevels, depen…
phanecak-maptiler Oct 10, 2023
3876d6b
unit test testInterstateMotorway(): brunnel tag for test line no long…
phanecak-maptiler Oct 10, 2023
bca12e2
unit test testInterstateMotorway() clean-up: Z13 was tested twice
phanecak-maptiler Oct 10, 2023
7a22bc6
Merge pull request #15 from phanecak-maptiler/omt3_15-yml_sync_and_ja…
phanecak-maptiler Oct 10, 2023
cf9e850
Merge pull request #16 from phanecak-maptiler/omt3_15-update_doc
phanecak-maptiler Oct 10, 2023
22029f1
Merge branch 'omt_3_15_0' into omt3_15-aboriginal
phanecak-maptiler Oct 10, 2023
26680da
Merge pull request #13 from phanecak-maptiler/omt3_15-fix-dupe-route
phanecak-maptiler Oct 11, 2023
37c657d
Merge pull request #12 from phanecak-maptiler/omt3_15-aboriginal
phanecak-maptiler Oct 11, 2023
ac6bb21
minor clean-up: fixed unit test naming
phanecak-maptiler Oct 11, 2023
f6c4ace
Merge pull request #17 from phanecak-maptiler/omt3_15-housenumber-col…
phanecak-maptiler Oct 11, 2023
72abc21
partial fix for differences in transportation_name layer
phanecak-maptiler Oct 12, 2023
6125d70
Merge branch 'omt_3_15_0' into omt3_15-long-ferries
phanecak-maptiler Oct 12, 2023
b7e7f4c
further adjustments to better match what is done with ferries in OMT
phanecak-maptiler Oct 17, 2023
00560b3
ferry minLength tweak + clean-up
phanecak-maptiler Oct 17, 2023
5d08720
mvn spotless:apply
phanecak-maptiler Oct 17, 2023
397efef
fixed minor typo
phanecak-maptiler Oct 17, 2023
dca9671
minor reformatting
phanecak-maptiler Oct 17, 2023
8654d86
ferry line length filter replaced with min. zoom calculation
phanecak-maptiler Oct 18, 2023
8e1703b
testFerry() adjusted to match previous commit
phanecak-maptiler Oct 18, 2023
6c05d7d
clea-up of unused stuff + mvn spotless:apply
phanecak-maptiler Oct 18, 2023
b6cda03
mvn spotless:apply
phanecak-maptiler Oct 18, 2023
338329a
Merge branch 'omt3_15-long-ferries' into omt3_15-frag-fix
phanecak-maptiler Oct 18, 2023
9b59981
added TODO node for follow-up pull-request/simplification
phanecak-maptiler Oct 18, 2023
a7bcfa9
clean-up: common getMinZoom() code moved to Utils
phanecak-maptiler Oct 18, 2023
30dab9f
minzoom clipping for brunnel was adjusted do Z9-Z12 -> test adjusted too
phanecak-maptiler Oct 18, 2023
f50e2b7
Merge pull request #11 from phanecak-maptiler/omt3_15-long-ferries
phanecak-maptiler Oct 23, 2023
1ddfb9a
clean-up
phanecak-maptiler Oct 23, 2023
0a2565d
use same tolerance for all transportation items, like OSM does
phanecak-maptiler Oct 23, 2023
59b3078
clean-up, since ferry and non-ferry procesing is now same
phanecak-maptiler Oct 23, 2023
d3434f9
Merge pull request #18 from phanecak-maptiler/omt3_15-frag-fix
phanecak-maptiler Oct 26, 2023
50273b0
Merge branch 'omt_3_15_0' into omt3_15-fix_for_diff_in_transportation…
phanecak-maptiler Oct 27, 2023
124b1dc
Merge branch 'upstream-main' into omt_3_15_0
phanecak-maptiler Oct 30, 2023
93bdca5
Merge pull request #19 from phanecak-maptiler/omt3_15-transportation_…
phanecak-maptiler Nov 2, 2023
8c200bd
Merge branch 'omt_3_15_0' into omt3_15-fix_for_diff_in_transportation…
phanecak-maptiler Nov 2, 2023
c9c5f01
Merge pull request #20 from phanecak-maptiler/omt3_15-fix_for_diff_in…
phanecak-maptiler Nov 2, 2023
43d16a9
we need regenerate to work with master branch for now
phanecak-maptiler Nov 3, 2023
269575b
first sub-class search for agg_stop simplified a little
phanecak-maptiler Nov 3, 2023
e58b60e
Merge branch 'upstream-main' into omt_3_15_0
phanecak-maptiler Nov 6, 2023
45abdbe
contains() used instead of indexOf() for better readability
phanecak-maptiler Nov 16, 2023
124d000
numbers as list, not array, so that getFirst() and getLast() can be used
phanecak-maptiler Nov 16, 2023
91d5e82
better trimming and filtring of housenumbers
phanecak-maptiler Nov 16, 2023
d93ca1f
adjusted handling of large house numbers
phanecak-maptiler Nov 16, 2023
8380e2f
several unit tests collapsed to one with @ParameterizedTest + @CsvSource
phanecak-maptiler Nov 16, 2023
1a9a333
AGG_STOP_SUBCLASS_ORDER simplified from Map to List
phanecak-maptiler Nov 16, 2023
9886cb1
fixed major omission from previous commit
phanecak-maptiler Nov 16, 2023
654e08a
clamp() used to replace min()&max() combo
phanecak-maptiler Nov 16, 2023
1f64f5f
agg_stop now implemented
phanecak-maptiler Nov 16, 2023
0f8487e
fixed typo in the error message
phanecak-maptiler Nov 16, 2023
35442fa
prepare IE and GB boundary geometry outside of synchronized{}
phanecak-maptiler Nov 16, 2023
99704bf
fixed typo in the error message
phanecak-maptiler Nov 16, 2023
eb46f86
mvn spotless:apply
phanecak-maptiler Nov 16, 2023
bfaa676
switch statements for IE and GB route networks simplified
phanecak-maptiler Nov 16, 2023
4374adf
avoid RouteNetwork->String mapping, not needed for anyMatch()
phanecak-maptiler Nov 16, 2023
371206c
fix: attr. brunnel optional based on size on Z4-Z11, attr. layer opti…
phanecak-maptiler Nov 16, 2023
e21c74a
tolerance change in transportation reverted, added note to README as …
phanecak-maptiler Nov 16, 2023
f499467
fix: monzoom for sea&co. is Z0-Z14 based on area, for the rest it is …
phanecak-maptiler Nov 16, 2023
caa41e1
clean-up: avoid doing area->side->area, do just area
phanecak-maptiler Nov 16, 2023
a20d488
Merge pull request #21 from phanecak-maptiler/omt_3_15_0-updates_base…
phanecak-maptiler Nov 16, 2023
b9db64a
regenerate-openmaptiles.sh 6c31841f4674f15e15afde346a060cf7c22e6cdd (…
phanecak-maptiler Nov 16, 2023
9ab8f47
relevant process() functions adjusted to match changes in transportat…
phanecak-maptiler Nov 16, 2023
32982da
regenerate-openmaptiles.sh master, instead of 6c31841f4674f15e15afde3…
phanecak-maptiler Nov 16, 2023
3cbe8c8
Merge pull request #22 from phanecak-maptiler/omt3_15-zlw-oneway-rail
phanecak-maptiler Nov 16, 2023
912538b
introduce duplicate housenumber filtering (matching OMT PR 1391)
phanecak-maptiler Nov 20, 2023
a0569fd
(less related) clean-up: use isEmpty() instead if size check
phanecak-maptiler Nov 20, 2023
5bab4cf
testContainsHousenumber UT adjusted, since duplicate housenumber filt…
phanecak-maptiler Nov 20, 2023
a5eabee
Merge pull request #23 from phanecak-maptiler/omt3_15-housenumber_fil…
phanecak-maptiler Nov 20, 2023
dc8a179
use combination of uic_ref, name, network and operator as key for agg…
phanecak-maptiler Nov 20, 2023
7a09981
Merge pull request #24 from phanecak-maptiler/omt3_15-agg_stop_fix-2
phanecak-maptiler Nov 20, 2023
60ee412
agg_stop comparison made more explicit, since we want to match same e…
phanecak-maptiler Nov 20, 2023
6863915
mvn spotless:apply
phanecak-maptiler Nov 20, 2023
23d9ba7
name now important for agg_stop processing, hence name:es (ab)used fo…
phanecak-maptiler Nov 20, 2023
602036c
Merge pull request #25 from phanecak-maptiler/omt3_15-agg_stop_fix-2
phanecak-maptiler Nov 20, 2023
e11f9c6
agg_stop: simplified processing of nearest station
phanecak-maptiler Nov 21, 2023
f5fe5fe
agg_stop: forther code simplification
phanecak-maptiler Nov 21, 2023
27f57a3
Merge pull request #26 from phanecak-maptiler/omt3_15-agg_stop_cleanup
phanecak-maptiler Nov 21, 2023
ac14a04
Merge branch 'upstream-main' into omt_3_15_0
phanecak-maptiler Nov 21, 2023
f390550
fixed major typo introduced in previous merge
phanecak-maptiler Nov 21, 2023
3b363cb
setMinPixelSize() + setMinZoom() used instead of areaToMinZoom()
phanecak-maptiler Nov 21, 2023
360751e
clean-up: unused stuff removed
phanecak-maptiler Nov 21, 2023
503eee8
mvn spotless:apply
phanecak-maptiler Nov 21, 2023
212c80c
setAttrWithMinSize() used instead of getBrunnelMinzoom()
phanecak-maptiler Nov 21, 2023
28b75a7
getMinZoomForLength() no longer used, hence removed
phanecak-maptiler Nov 21, 2023
6dcd29d
Merge pull request #27 from phanecak-maptiler/omt3_15-area_to_minzoom…
phanecak-maptiler Nov 21, 2023
8fb6707
MIN_LENGTH value halved, to partially counter the effect of Planetile…
phanecak-maptiler Nov 28, 2023
612f700
clean-up: LOG2 not used, hence removed
phanecak-maptiler Nov 28, 2023
c3239ad
Revert "MIN_LENGTH value halved, to partially counter the effect of P…
phanecak-maptiler Dec 11, 2023
8d26841
use 256px as buffer pixel override instead of MIN_LENGTH
phanecak-maptiler Dec 11, 2023
d756038
added BY_TEMP_HAS_NAME comparator to avoid its repeated construction …
phanecak-maptiler Dec 12, 2023
08ee4da
duplicate houcenumber processing simplified further
phanecak-maptiler Dec 12, 2023
c8c4b24
clean-up: get(0) replaced with getFirst()
phanecak-maptiler Dec 12, 2023
57c2547
clean-up: CPU-intensive prepare() moved out of synchronized block
phanecak-maptiler Dec 12, 2023
82bb68a
regenerate-openmaptiles.sh 3cf77e2a542d8a369bb08bf2538cdde0b3effb2b (…
phanecak-maptiler Dec 15, 2023
7eed2ac
unit test adjusted for POI office class changes
phanecak-maptiler Dec 15, 2023
59fa9ac
Merge pull request #29 from phanecak-maptiler/omt3_15-more-office-values
phanecak-maptiler Dec 15, 2023
60be59b
regenerate-openmaptiles.sh master (to match content of OMT PR 1544)
phanecak-maptiler Dec 18, 2023
a0b7443
added charging_station implementation matching OMT PR 1544
phanecak-maptiler Dec 18, 2023
3b0959b
Merge pull request #30 from phanecak-maptiler/omt3_15-charging_station
phanecak-maptiler Dec 18, 2023
69393d0
use setMinPixelSizeBelowZoom() instead of uniAreaToMinZoom()
phanecak-maptiler Dec 19, 2023
bdea325
use setMinPixelSizeBelowZoom() instead of getFerryMinzoom()
phanecak-maptiler Dec 20, 2023
6aa4e88
fixed unit test, to match recent tweaks
phanecak-maptiler Dec 22, 2023
c992cfb
Merge pull request #28 from phanecak-maptiler/omt3_15-transportation_…
phanecak-maptiler Dec 22, 2023
3108e5b
Merge branch 'upstream-main' into omt_3_15_0
phanecak-maptiler Jan 8, 2024
ae2c25e
regenerate-openmaptiles.sh master (to match content of OMT PR 1605)
phanecak-maptiler Jan 8, 2024
ad06ec4
Merge pull request #32 from phanecak-maptiler/omt3_15-zlw-document-de…
phanecak-maptiler Jan 8, 2024
802046f
Fix university office/amenity collision (to match OSM PR 1607)
phanecak-maptiler Jan 10, 2024
00e9732
Merge pull request #33 from phanecak-maptiler/omt3_15-zlw-university-…
phanecak-maptiler Jan 10, 2024
0e9f9f9
Remove expressway from ramps
phanecak-maptiler Jan 10, 2024
fd68c18
Merge pull request #34 from phanecak-maptiler/omt3_15-zlw-expressway-…
phanecak-maptiler Jan 10, 2024
0a635f7
Merge branch 'upstream-main' into omt_3_15_0
phanecak-maptiler Jan 15, 2024
4f0cf07
Merge branch 'upstream-main' into omt_3_15_0
phanecak-maptiler Jan 16, 2024
7d28732
OsmMarinePoint+ne_10m_geography_marine_polys join via name limited to…
phanecak-maptiler Jan 23, 2024
da1b7ba
regenerate-openmaptiles.sh master (to match content of OMT PR 1604)
phanecak-maptiler Jan 25, 2024
2299a69
Revert "Add aboriginal lands (as per OMT PR 1489)"
phanecak-maptiler Jan 25, 2024
ab5d1b5
added handling of aboriginal_lands/OsmBoundaryPolygon into Boundary a…
phanecak-maptiler Jan 26, 2024
2cf1f7f
big islands can now get rank lower than 3
phanecak-maptiler Jan 26, 2024
fff48f7
Add e-road and a-road for transportation z4
phanecak-maptiler Jan 27, 2024
3ad70b0
testPolishHighwayIssue165() adjusted: e-road now takes precendence
phanecak-maptiler Jan 27, 2024
0282d93
Merge pull request #35 from phanecak-maptiler/omt3_15-water_name-bay_…
phanecak-maptiler Jan 29, 2024
f4a55b3
Merge pull request #36 from phanecak-maptiler/omt3_15-zlw-indigenous-…
phanecak-maptiler Jan 29, 2024
206ca85
Merge pull request #37 from phanecak-maptiler/omt3_15-international_r…
phanecak-maptiler Jan 29, 2024
cc3db05
Merge branch 'upstream-main' into omt_3_15_0
phanecak-maptiler Jan 29, 2024
c673532
Merge branch 'upstream-main' into omt_3_15_0
phanecak-maptiler Feb 12, 2024
bc12b25
regenerate-openmaptiles.sh master (to match content of OMT PR 1627)
phanecak-maptiler Feb 12, 2024
e0ebeea
Merge pull request #38 from phanecak-maptiler/omt3_15-michalgwo-patch-1
phanecak-maptiler Feb 12, 2024
197e87b
regenerate-openmaptiles.sh fff7110aeb61882abfafe22d1618fbe6181d96cb (…
phanecak-maptiler Feb 20, 2024
9de78fc
Expanded road route attributes (to match OMT PR 1620)
phanecak-maptiler Feb 20, 2024
27f6706
unrelated clean-up: use getFirst()
phanecak-maptiler Feb 20, 2024
088eaa6
adjusted handling or null and empty ref
phanecak-maptiler Feb 20, 2024
9299238
regenerate-openmaptiles.sh master (to match content of OMT PR 1620)
phanecak-maptiler Feb 20, 2024
1d500c2
Merge pull request #39 from phanecak-maptiler/omt3_15-zlw-route-name-…
phanecak-maptiler Feb 20, 2024
6634955
pointOnSurface() used instead of centroid() to make sure the point is…
phanecak-maptiler Feb 28, 2024
b7e3fb4
adjusted deduplication of route_<n>_<something> attributes
phanecak-maptiler Feb 28, 2024
e36cb3c
clean-up of some previous adjustments of importantMarinePoints
phanecak-maptiler Feb 28, 2024
1d8dbab
clean-up: removed unused imports
phanecak-maptiler Feb 28, 2024
d6c9873
Merge pull request #40 from phanecak-maptiler/omt_3_15_0-updates_base…
phanecak-maptiler Feb 28, 2024
8a97fd6
mvn spotless:apply
phanecak-maptiler Feb 28, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
205 changes: 153 additions & 52 deletions src/main/java/org/openmaptiles/generated/OpenMapTilesSchema.java

Large diffs are not rendered by default.

107 changes: 63 additions & 44 deletions src/main/java/org/openmaptiles/generated/Tables.java
Original file line number Diff line number Diff line change
Expand Up @@ -248,8 +248,9 @@ public OsmParkPolygon(SourceFeature source, String mappingKey) {
}

/** Imposm3 "mapping" to filter OSM elements that should appear in this "table". */
public static final Expression MAPPING = and(or(matchAny("leisure", "nature_reserve"),
matchAny("boundary", "national_park", "protected_area", "aboriginal_lands")), matchType("polygon"));
public static final Expression MAPPING =
and(or(matchAny("leisure", "nature_reserve"), matchAny("boundary", "national_park", "protected_area")),
matchType("polygon"));

/**
* Interface for layer implementations to extend to subscribe to OSM elements filtered and parsed as
Expand All @@ -259,6 +260,25 @@ public interface Handler {
void process(OsmParkPolygon element, FeatureCollector features);
}
}
/** An OSM element that would appear in the {@code osm_boundary_polygon} table generated by imposm3. */
public record OsmBoundaryPolygon(@Override String name, @Override String boundary, @Override SourceFeature source)
implements Row, WithName, WithBoundary, WithSource {
public OsmBoundaryPolygon(SourceFeature source, String mappingKey) {
this(source.getString("name"), source.getString("boundary"), source);
}

/** Imposm3 "mapping" to filter OSM elements that should appear in this "table". */
public static final Expression MAPPING =
and(matchAny("boundary", "aboriginal_lands"), matchAny("type", "boundary"), matchType("polygon"));

/**
* Interface for layer implementations to extend to subscribe to OSM elements filtered and parsed as
* {@link OsmBoundaryPolygon}.
*/
public interface Handler {
void process(OsmBoundaryPolygon element, FeatureCollector features);
}
}
/** An OSM element that would appear in the {@code osm_aeroway_polygon} table generated by imposm3. */
public record OsmAerowayPolygon(@Override String ref, @Override String aeroway, @Override SourceFeature source)
implements Row, WithRef, WithAeroway, WithSource {
Expand Down Expand Up @@ -320,24 +340,23 @@ public interface Handler {
public record OsmHighwayLinestring(@Override String highway, @Override String construction,
@Override String tracktype, @Override String ref, @Override String network, @Override int zOrder,
@Override long layer, @Override long level, @Override boolean indoor, @Override String name,
@Override String nameEn, @Override String nameDe, @Override String shortName, @Override boolean isTunnel,
@Override boolean isBridge, @Override boolean isRamp, @Override boolean isFord, @Override int isOneway,
@Override boolean isArea, @Override String service, @Override String access, @Override boolean toll,
@Override String usage, @Override String publicTransport, @Override String manMade, @Override String bicycle,
@Override String foot, @Override String horse, @Override String mtbScale, @Override String sacScale,
@Override String surface, @Override boolean expressway, @Override SourceFeature source)
@Override String nameEn, @Override String nameDe, @Override boolean isTunnel, @Override boolean isBridge,
@Override boolean isRamp, @Override boolean isFord, @Override int isOneway, @Override boolean isArea,
@Override String service, @Override String access, @Override boolean toll, @Override String usage,
@Override String publicTransport, @Override String manMade, @Override String bicycle, @Override String foot,
@Override String horse, @Override String mtbScale, @Override String sacScale, @Override String surface,
@Override boolean expressway, @Override SourceFeature source)
implements Row, WithHighway, WithConstruction, WithTracktype, WithRef, WithNetwork, WithZOrder, WithLayer,
WithLevel, WithIndoor, WithName, WithNameEn, WithNameDe, WithShortName, WithIsTunnel, WithIsBridge, WithIsRamp,
WithIsFord, WithIsOneway, WithIsArea, WithService, WithAccess, WithToll, WithUsage, WithPublicTransport,
WithManMade, WithBicycle, WithFoot, WithHorse, WithMtbScale, WithSacScale, WithSurface, WithExpressway, WithSource {
WithLevel, WithIndoor, WithName, WithNameEn, WithNameDe, WithIsTunnel, WithIsBridge, WithIsRamp, WithIsFord,
WithIsOneway, WithIsArea, WithService, WithAccess, WithToll, WithUsage, WithPublicTransport, WithManMade,
WithBicycle, WithFoot, WithHorse, WithMtbScale, WithSacScale, WithSurface, WithExpressway, WithSource {
public OsmHighwayLinestring(SourceFeature source, String mappingKey) {
this(source.getString("highway"), source.getString("construction"), source.getString("tracktype"),
source.getString("ref"), source.getString("network"), source.getWayZorder(), source.getLong("layer"),
source.getLong("level"), source.getBoolean("indoor"), source.getString("name"), source.getString("name:en"),
source.getString("name:de"), source.getString("short_name"), source.getBoolean("tunnel"),
source.getBoolean("bridge"), source.getBoolean("ramp"), source.getBoolean("ford"),
source.getDirection("oneway"), source.getBoolean("area"), source.getString("service"),
source.getString("access"), source.getBoolean("toll"), source.getString("usage"),
source.getString("name:de"), source.getBoolean("tunnel"), source.getBoolean("bridge"),
source.getBoolean("ramp"), source.getBoolean("ford"), source.getDirection("oneway"), source.getBoolean("area"),
source.getString("service"), source.getString("access"), source.getBoolean("toll"), source.getString("usage"),
source.getString("public_transport"), source.getString("man_made"), source.getString("bicycle"),
source.getString("foot"), source.getString("horse"), source.getString("mtb:scale"),
source.getString("sac_scale"), source.getString("surface"), source.getBoolean("expressway"), source);
Expand All @@ -363,17 +382,17 @@ public interface Handler {
/** An OSM element that would appear in the {@code osm_railway_linestring} table generated by imposm3. */
public record OsmRailwayLinestring(@Override String railway, @Override String ref, @Override String network,
@Override int zOrder, @Override long layer, @Override long level, @Override boolean indoor, @Override String name,
@Override String nameEn, @Override String nameDe, @Override String shortName, @Override boolean isTunnel,
@Override boolean isBridge, @Override boolean isRamp, @Override boolean isFord, @Override boolean isArea,
@Override String service, @Override String usage, @Override SourceFeature source) implements Row, WithRailway,
WithRef, WithNetwork, WithZOrder, WithLayer, WithLevel, WithIndoor, WithName, WithNameEn, WithNameDe, WithShortName,
WithIsTunnel, WithIsBridge, WithIsRamp, WithIsFord, WithIsArea, WithService, WithUsage, WithSource {
@Override String nameEn, @Override String nameDe, @Override boolean isTunnel, @Override boolean isBridge,
@Override boolean isRamp, @Override boolean isFord, @Override boolean isArea, @Override String service,
@Override String usage, @Override SourceFeature source) implements Row, WithRailway, WithRef, WithNetwork,
WithZOrder, WithLayer, WithLevel, WithIndoor, WithName, WithNameEn, WithNameDe, WithIsTunnel, WithIsBridge,
WithIsRamp, WithIsFord, WithIsArea, WithService, WithUsage, WithSource {
public OsmRailwayLinestring(SourceFeature source, String mappingKey) {
this(source.getString("railway"), source.getString("ref"), source.getString("network"), source.getWayZorder(),
source.getLong("layer"), source.getLong("level"), source.getBoolean("indoor"), source.getString("name"),
source.getString("name:en"), source.getString("name:de"), source.getString("short_name"),
source.getBoolean("tunnel"), source.getBoolean("bridge"), source.getBoolean("ramp"), source.getBoolean("ford"),
source.getBoolean("area"), source.getString("service"), source.getString("usage"), source);
source.getString("name:en"), source.getString("name:de"), source.getBoolean("tunnel"),
source.getBoolean("bridge"), source.getBoolean("ramp"), source.getBoolean("ford"), source.getBoolean("area"),
source.getString("service"), source.getString("usage"), source);
}

/** Imposm3 "mapping" to filter OSM elements that should appear in this "table". */
Expand All @@ -391,16 +410,15 @@ public interface Handler {
}
/** An OSM element that would appear in the {@code osm_aerialway_linestring} table generated by imposm3. */
public record OsmAerialwayLinestring(@Override String aerialway, @Override int zOrder, @Override long layer,
@Override String name, @Override String nameEn, @Override String nameDe, @Override String shortName,
@Override boolean isTunnel, @Override boolean isBridge, @Override boolean isRamp, @Override boolean isFord,
@Override int isOneway, @Override boolean isArea, @Override String service, @Override String usage,
@Override SourceFeature source)
implements Row, WithAerialway, WithZOrder, WithLayer, WithName, WithNameEn, WithNameDe, WithShortName, WithIsTunnel,
WithIsBridge, WithIsRamp, WithIsFord, WithIsOneway, WithIsArea, WithService, WithUsage, WithSource {
@Override String name, @Override String nameEn, @Override String nameDe, @Override boolean isTunnel,
@Override boolean isBridge, @Override boolean isRamp, @Override boolean isFord, @Override int isOneway,
@Override boolean isArea, @Override String service, @Override String usage, @Override SourceFeature source)
implements Row, WithAerialway, WithZOrder, WithLayer, WithName, WithNameEn, WithNameDe, WithIsTunnel, WithIsBridge,
WithIsRamp, WithIsFord, WithIsOneway, WithIsArea, WithService, WithUsage, WithSource {
public OsmAerialwayLinestring(SourceFeature source, String mappingKey) {
this(source.getString("aerialway"), source.getWayZorder(), source.getLong("layer"), source.getString("name"),
source.getString("name:en"), source.getString("name:de"), source.getString("short_name"),
source.getBoolean("tunnel"), source.getBoolean("bridge"), source.getBoolean("ramp"), source.getBoolean("ford"),
source.getString("name:en"), source.getString("name:de"), source.getBoolean("tunnel"),
source.getBoolean("bridge"), source.getBoolean("ramp"), source.getBoolean("ford"),
source.getDirection("oneway"), source.getBoolean("area"), source.getString("service"),
source.getString("usage"), source);
}
Expand All @@ -419,16 +437,16 @@ public interface Handler {
}
/** An OSM element that would appear in the {@code osm_shipway_linestring} table generated by imposm3. */
public record OsmShipwayLinestring(@Override String shipway, @Override int zOrder, @Override long layer,
@Override String name, @Override String nameEn, @Override String nameDe, @Override String shortName,
@Override boolean isTunnel, @Override boolean isBridge, @Override boolean isRamp, @Override boolean isFord,
@Override boolean isArea, @Override String service, @Override String usage, @Override SourceFeature source)
implements Row, WithShipway, WithZOrder, WithLayer, WithName, WithNameEn, WithNameDe, WithShortName, WithIsTunnel,
WithIsBridge, WithIsRamp, WithIsFord, WithIsArea, WithService, WithUsage, WithSource {
@Override String name, @Override String nameEn, @Override String nameDe, @Override boolean isTunnel,
@Override boolean isBridge, @Override boolean isRamp, @Override boolean isFord, @Override boolean isArea,
@Override String service, @Override String usage, @Override SourceFeature source)
implements Row, WithShipway, WithZOrder, WithLayer, WithName, WithNameEn, WithNameDe, WithIsTunnel, WithIsBridge,
WithIsRamp, WithIsFord, WithIsArea, WithService, WithUsage, WithSource {
public OsmShipwayLinestring(SourceFeature source, String mappingKey) {
this(source.getString("route"), source.getWayZorder(), source.getLong("layer"), source.getString("name"),
source.getString("name:en"), source.getString("name:de"), source.getString("short_name"),
source.getBoolean("tunnel"), source.getBoolean("bridge"), source.getBoolean("ramp"), source.getBoolean("ford"),
source.getBoolean("area"), source.getString("service"), source.getString("usage"), source);
source.getString("name:en"), source.getString("name:de"), source.getBoolean("tunnel"),
source.getBoolean("bridge"), source.getBoolean("ramp"), source.getBoolean("ford"), source.getBoolean("area"),
source.getString("service"), source.getString("usage"), source);
}

/** Imposm3 "mapping" to filter OSM elements that should appear in this "table". */
Expand Down Expand Up @@ -1236,11 +1254,6 @@ public interface WithShipway {
String shipway();
}

/** Rows with a String shortName attribute. */
public interface WithShortName {
String shortName();
}

/** Rows with a SourceFeature source attribute. */
public interface WithSource {
SourceFeature source();
Expand Down Expand Up @@ -1331,6 +1344,8 @@ public interface WithZOrder {
OsmMountainLinestring.MAPPING),
MultiExpression.entry(new RowClassAndConstructor(OsmParkPolygon.class, OsmParkPolygon::new),
OsmParkPolygon.MAPPING),
MultiExpression.entry(new RowClassAndConstructor(OsmBoundaryPolygon.class, OsmBoundaryPolygon::new),
OsmBoundaryPolygon.MAPPING),
MultiExpression.entry(new RowClassAndConstructor(OsmAerowayPolygon.class, OsmAerowayPolygon::new),
OsmAerowayPolygon.MAPPING),
MultiExpression.entry(new RowClassAndConstructor(OsmAerowayLinestring.class, OsmAerowayLinestring::new),
Expand Down Expand Up @@ -1406,6 +1421,10 @@ public static Map<Class<? extends Row>, List<RowHandlerAndClass<?>>> generateDis
result.computeIfAbsent(OsmParkPolygon.class, cls -> new ArrayList<>())
.add(new RowHandlerAndClass<>(typedHandler.getClass(), typedHandler::process));
}
if (handler instanceof OsmBoundaryPolygon.Handler typedHandler) {
result.computeIfAbsent(OsmBoundaryPolygon.class, cls -> new ArrayList<>())
.add(new RowHandlerAndClass<>(typedHandler.getClass(), typedHandler::process));
}
if (handler instanceof OsmAerowayPolygon.Handler typedHandler) {
result.computeIfAbsent(OsmAerowayPolygon.class, cls -> new ArrayList<>())
.add(new RowHandlerAndClass<>(typedHandler.getClass(), typedHandler::process));
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/org/openmaptiles/layers/Boundary.java
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
import org.locationtech.jts.operation.polygonize.Polygonizer;
import org.openmaptiles.OpenMapTilesProfile;
import org.openmaptiles.generated.OpenMapTilesSchema;
import org.openmaptiles.generated.Tables;
import org.openmaptiles.util.OmtLanguageUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -95,6 +97,7 @@ public class Boundary implements
OpenMapTilesProfile.NaturalEarthProcessor,
OpenMapTilesProfile.OsmRelationPreprocessor,
OpenMapTilesProfile.OsmAllProcessor,
Tables.OsmBoundaryPolygon.Handler,
OpenMapTilesProfile.FeaturePostProcessor,
OpenMapTilesProfile.FinishHandler {

Expand Down Expand Up @@ -127,6 +130,7 @@ public class Boundary implements
private final Map<Long, List<Geometry>> regionGeometries = new HashMap<>();
private final Map<CountryBoundaryComponent, List<Geometry>> boundariesToMerge = new HashMap<>();
private final PlanetilerConfig config;
private final Translations translations;

public Boundary(Translations translations, PlanetilerConfig config, Stats stats) {
this.config = config;
Expand All @@ -141,6 +145,7 @@ public Boundary(Translations translations, PlanetilerConfig config, Stats stats)
false
);
this.stats = stats;
this.translations = translations;
}

private static boolean isDisputed(Map<String, Object> tags) {
Expand Down Expand Up @@ -306,6 +311,15 @@ public void processAllOsm(SourceFeature feature, FeatureCollector features) {
}
}

@Override
public void process(Tables.OsmBoundaryPolygon element, FeatureCollector features) {
features.polygon(LAYER_NAME).setBufferPixels(BUFFER_SIZE)
.putAttrs(OmtLanguageUtils.getNames(element.source().tags(), translations))
.setAttr(OpenMapTilesSchema.Boundary.Fields.CLASS, element.boundary())
.setMinPixelSizeBelowZoom(13, 4) // for Z4: `sql_filter: area>power(ZRES3,2)`, etc.
.setMinZoom(4);
}

@Override
public void finish(String sourceName, FeatureCollector.Factory featureCollectors,
Consumer<FeatureCollector.Feature> emit) {
Expand Down
21 changes: 8 additions & 13 deletions src/main/java/org/openmaptiles/layers/Park.java
Original file line number Diff line number Diff line change
Expand Up @@ -91,20 +91,15 @@ public Park(Translations translations, PlanetilerConfig config, Stats stats) {

msbarry marked this conversation as resolved.
Show resolved Hide resolved
@Override
public void process(Tables.OsmParkPolygon element, FeatureCollector features) {
String clazz;
if ("aboriginal_lands".equals(element.boundary())) {
clazz = "aboriginal_lands";
} else {
String protectionTitle = element.protectionTitle();
if (protectionTitle != null) {
protectionTitle = protectionTitle.replace(' ', '_').toLowerCase(Locale.ROOT);
}
clazz = coalesce(
nullIfEmpty(protectionTitle),
nullIfEmpty(element.boundary()),
nullIfEmpty(element.leisure())
);
String protectionTitle = element.protectionTitle();
if (protectionTitle != null) {
protectionTitle = protectionTitle.replace(' ', '_').toLowerCase(Locale.ROOT);
}
String clazz = coalesce(
nullIfEmpty(protectionTitle),
nullIfEmpty(element.boundary()),
nullIfEmpty(element.leisure())
);

// park shape
var outline = features.polygon(LAYER_NAME).setBufferPixels(BUFFER_SIZE)
Expand Down
26 changes: 23 additions & 3 deletions src/main/java/org/openmaptiles/layers/Place.java
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ public class Place implements
Tables.OsmIslandPoint.Handler,
Tables.OsmIslandPolygon.Handler,
Tables.OsmCityPoint.Handler,
Tables.OsmBoundaryPolygon.Handler,
OpenMapTilesProfile.FeaturePostProcessor {

/*
Expand All @@ -96,8 +97,10 @@ public class Place implements
* and minimum zoom level to use for those points.
*/

private static final TreeMap<Double, Integer> ISLAND_AREA_RANKS = new TreeMap<>(Map.of(
Double.MAX_VALUE, 3,
private static final TreeMap<Double, Integer> AREA_RANKS = new TreeMap<>(Map.of(
Double.MAX_VALUE, 1,
squareMetersToWorldArea(640_000_000), 2,
squareMetersToWorldArea(160_000_000), 3,
squareMetersToWorldArea(40_000_000), 4,
squareMetersToWorldArea(15_000_000), 5,
squareMetersToWorldArea(1_000_000), 6
Expand Down Expand Up @@ -282,7 +285,7 @@ public void process(Tables.OsmStatePoint element, FeatureCollector features) {
public void process(Tables.OsmIslandPolygon element, FeatureCollector features) {
try {
double area = element.source().area();
int rank = ISLAND_AREA_RANKS.ceilingEntry(area).getValue();
int rank = AREA_RANKS.ceilingEntry(area).getValue();
int minzoom = rank <= 3 ? 8 : rank <= 4 ? 9 : 10;

features.pointOnSurface(LAYER_NAME).setBufferPixels(BUFFER_SIZE)
Expand Down Expand Up @@ -369,6 +372,23 @@ public void process(Tables.OsmCityPoint element, FeatureCollector features) {
}
}

@Override
public void process(Tables.OsmBoundaryPolygon element, FeatureCollector features) {
try {
int rank = AREA_RANKS.ceilingEntry(element.source().area()).getValue();
int minzoom = rank <= 4 ? rank + 5 : 10;

features.pointOnSurface(LAYER_NAME).setBufferPixels(BUFFER_SIZE)
.putAttrs(OmtLanguageUtils.getNames(element.source().tags(), translations))
.setAttr(OpenMapTilesSchema.Boundary.Fields.CLASS, element.boundary())
.setAttr(Fields.RANK, rank)
.setMinZoom(minzoom);
} catch (GeometryException e) {
e.log(stats, "omt_boundary_poly",
"Unable to get point for OSM boundary polygon " + element.source().id());
}
}

@Override
public List<VectorTile.Feature> postProcess(int zoom, List<VectorTile.Feature> items) {
// infer the rank field from ordering of the place labels with each label grid square
Expand Down
Loading
Loading