From 9ab08493f0b7b0d6647087f3f3472a145f034a90 Mon Sep 17 00:00:00 2001 From: Jo <93162192+josail@users.noreply.github.com> Date: Mon, 2 Jun 2025 19:32:33 +0200 Subject: [PATCH 01/12] Icons N27, Nb increase line width slightly for map visibility --- icons/svg/N/N27.svg | 4 ++-- icons/svg/N/Nb_no.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/icons/svg/N/N27.svg b/icons/svg/N/N27.svg index 4684b90..deb9454 100644 --- a/icons/svg/N/N27.svg +++ b/icons/svg/N/N27.svg @@ -78,14 +78,14 @@ y1="0" x2="120" y2="120" - style="stroke:#a30075;stroke-width:4;fill:none" + style="stroke:#a30075;stroke-width:6;fill:none" id="line9" /> From 9bf524c94d6745497bb61559c30e675b721e352b Mon Sep 17 00:00:00 2001 From: Jo <93162192+josail@users.noreply.github.com> Date: Mon, 2 Jun 2025 19:36:20 +0200 Subject: [PATCH 02/12] Icons N1.2, N2.1, N22 updates: color adjustment of N1.2 and N2.1 to rose color according to OpenNauticalChart rendering, new N22 symbols for environmentally sensitive sea areas (ESSA) in green color --- icons/svg/N/N1.2_ro.svg | 22 ++++++++ icons/svg/N/N2.1_gn.svg | 22 ++++++++ icons/svg/N/N2.1_ro.svg | 22 ++++++++ icons/svg/N/N22_Bird_gn.svg | 23 ++++++++ icons/svg/N/N22_Coral_gn.svg | 22 ++++++++ icons/svg/N/N22_Dolphin_gn.svg | 22 ++++++++ icons/svg/N/N22_ESSA_gn.svg | 87 ++++++++++++++++++++++++++++++ icons/svg/N/N22_Fish_gn.svg | 45 ++++++++++++++++ icons/svg/N/N22_PSSA_gn.svg | 77 ++++++++++++++++++++++++++ icons/svg/N/N22_Penguin_gn.svg | 48 +++++++++++++++++ icons/svg/N/N22_Sea_Turtle_gn.svg | 23 ++++++++ icons/svg/N/N22_Whale_gn.svg | 26 +++++++++ icons/svg/N/N22_seahorse_gn.svg | 90 +++++++++++++++++++++++++++++++ 13 files changed, 529 insertions(+) create mode 100644 icons/svg/N/N1.2_ro.svg create mode 100644 icons/svg/N/N2.1_gn.svg create mode 100644 icons/svg/N/N2.1_ro.svg create mode 100644 icons/svg/N/N22_Bird_gn.svg create mode 100644 icons/svg/N/N22_Coral_gn.svg create mode 100644 icons/svg/N/N22_Dolphin_gn.svg create mode 100644 icons/svg/N/N22_ESSA_gn.svg create mode 100644 icons/svg/N/N22_Fish_gn.svg create mode 100644 icons/svg/N/N22_PSSA_gn.svg create mode 100644 icons/svg/N/N22_Penguin_gn.svg create mode 100644 icons/svg/N/N22_Sea_Turtle_gn.svg create mode 100644 icons/svg/N/N22_Whale_gn.svg create mode 100644 icons/svg/N/N22_seahorse_gn.svg diff --git a/icons/svg/N/N1.2_ro.svg b/icons/svg/N/N1.2_ro.svg new file mode 100644 index 0000000..6af5102 --- /dev/null +++ b/icons/svg/N/N1.2_ro.svg @@ -0,0 +1,22 @@ + + + N1.2: General Area no permanent obstruction ONC rose color + + + + image/svg+xml + + N1.2: General Area no permanent obstruction ONC rose color + + + + + + + + + + + + + diff --git a/icons/svg/N/N2.1_gn.svg b/icons/svg/N/N2.1_gn.svg new file mode 100644 index 0000000..19e664f --- /dev/null +++ b/icons/svg/N/N2.1_gn.svg @@ -0,0 +1,22 @@ + + + N2.1: Restriction Area environmentally sensitive sea area green color + + + + image/svg+xml + + N2.1: Restriction Area environmentally sensitive sea area green color + + + + + + + + + + + + + diff --git a/icons/svg/N/N2.1_ro.svg b/icons/svg/N/N2.1_ro.svg new file mode 100644 index 0000000..f6919b9 --- /dev/null +++ b/icons/svg/N/N2.1_ro.svg @@ -0,0 +1,22 @@ + + + N2.1: Restriction Area ONC rose color + + + + image/svg+xml + + N2.1: Restriction Area ONC rose color + + + + + + + + + + + + + diff --git a/icons/svg/N/N22_Bird_gn.svg b/icons/svg/N/N22_Bird_gn.svg new file mode 100644 index 0000000..060065b --- /dev/null +++ b/icons/svg/N/N22_Bird_gn.svg @@ -0,0 +1,23 @@ + + + + + N22: Bird sanctuary green color + + + + + diff --git a/icons/svg/N/N22_Coral_gn.svg b/icons/svg/N/N22_Coral_gn.svg new file mode 100644 index 0000000..0e7490c --- /dev/null +++ b/icons/svg/N/N22_Coral_gn.svg @@ -0,0 +1,22 @@ + + + + + N22: Coral sanctuary green color + + + + + diff --git a/icons/svg/N/N22_Dolphin_gn.svg b/icons/svg/N/N22_Dolphin_gn.svg new file mode 100644 index 0000000..053fa62 --- /dev/null +++ b/icons/svg/N/N22_Dolphin_gn.svg @@ -0,0 +1,22 @@ + + + + + N22: Dolphin sanctuary green color + + + + + diff --git a/icons/svg/N/N22_ESSA_gn.svg b/icons/svg/N/N22_ESSA_gn.svg new file mode 100644 index 0000000..0855a90 --- /dev/null +++ b/icons/svg/N/N22_ESSA_gn.svg @@ -0,0 +1,87 @@ + + + + + + + N22: Environmentally Sensitive Sea Area + + + + image/svg+xml + + N22: Environmentally Sensitive Sea Area + + + + + + + + + + + + + + + + diff --git a/icons/svg/N/N22_Fish_gn.svg b/icons/svg/N/N22_Fish_gn.svg new file mode 100644 index 0000000..a96b47c --- /dev/null +++ b/icons/svg/N/N22_Fish_gn.svg @@ -0,0 +1,45 @@ + + + + + N22 Fish sanctuary green color + + + + image/svg+xml + + + N22 Fish sanctuary green color + + + + + + + + + + + diff --git a/icons/svg/N/N22_PSSA_gn.svg b/icons/svg/N/N22_PSSA_gn.svg new file mode 100644 index 0000000..fc789ef --- /dev/null +++ b/icons/svg/N/N22_PSSA_gn.svg @@ -0,0 +1,77 @@ + + + + + + N22: Particularly Sensitive Sea Area + + + + + image/svg+xml + + N22: Particularly Sensitive Sea Area + + + + + + + + + + + + + + + + + + diff --git a/icons/svg/N/N22_Penguin_gn.svg b/icons/svg/N/N22_Penguin_gn.svg new file mode 100644 index 0000000..94c2cb7 --- /dev/null +++ b/icons/svg/N/N22_Penguin_gn.svg @@ -0,0 +1,48 @@ + + + + + N22: Penguin sanctuary green color + + + + + + diff --git a/icons/svg/N/N22_Sea_Turtle_gn.svg b/icons/svg/N/N22_Sea_Turtle_gn.svg new file mode 100644 index 0000000..977882d --- /dev/null +++ b/icons/svg/N/N22_Sea_Turtle_gn.svg @@ -0,0 +1,23 @@ + + + + + N22: Seaturtle sanctuary green color + + + + + diff --git a/icons/svg/N/N22_Whale_gn.svg b/icons/svg/N/N22_Whale_gn.svg new file mode 100644 index 0000000..2add8a8 --- /dev/null +++ b/icons/svg/N/N22_Whale_gn.svg @@ -0,0 +1,26 @@ + + + + +N22: Whale sanctuary green color + + + + + + diff --git a/icons/svg/N/N22_seahorse_gn.svg b/icons/svg/N/N22_seahorse_gn.svg new file mode 100644 index 0000000..3a5e6bc --- /dev/null +++ b/icons/svg/N/N22_seahorse_gn.svg @@ -0,0 +1,90 @@ + + + + + N22: Seahorse Marine Sanctuary green color + + + + + + image/svg+xml + + N22: Seahorse Marine Sanctuary green color + + + + + + + + + + + + + + + + + + + + + + + From e88571e1cea4c5a4d909fa77452498a87f596bdc Mon Sep 17 00:00:00 2001 From: Jo <93162192+josail@users.noreply.github.com> Date: Mon, 2 Jun 2025 20:51:12 +0200 Subject: [PATCH 03/12] Update INT1_MapCSS.mapcss Amend Section N: Areas and Limits with icons, symbols displayed on restricted areas, introducing N22 environmentally sensitive sea areas (ESSA) displayed with green boundaries and new symbols for animial and plant sanctuaries --- INT1_MapCSS.mapcss | 399 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 372 insertions(+), 27 deletions(-) diff --git a/INT1_MapCSS.mapcss b/INT1_MapCSS.mapcss index 7841579..925a436 100644 --- a/INT1_MapCSS.mapcss +++ b/INT1_MapCSS.mapcss @@ -11,11 +11,12 @@ meta { title: "INT 1 Rendering (IHO standarized symbols) PD"; icon: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/IHO_c.svg"; - author: "Aun (Skippern) Johnsen"; - version: "0.2.1"; + author: "Aun (Skippern) Johnsen 2015, 2019, Josail 2023, 2025"; + version: "0.3"; description: "JOSM rendering of nautical symbols according to IHO standard INT-1"; min-josm-version: 8087; } +/* 2023 update Section J: Nature of Seabed, 2025 update Section N: Areas and Limits */ /* For JOSM, creating a light background color */ canvas { @@ -603,50 +604,384 @@ way["seamark:type"=ferry_route]::int1_ferry_route { dashes: 5,8; } -/* N: Areas, Limites */ -way["seamark:type"=restricted_area]::restricted_area_base { - repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N2.1.svg"; - repeat-image-width: 18; +/* N: Areas and Limits */ +/* 1.6.2025, version 0.3.15, Josail, PD, reference in https://wiki.openstreetmap.org/wiki/Seamarks/INT-1_Section_N */ +/* layer restricted_area_base is used for drawing the area boundary, restricted_area_icon for specific symbols */ +/* anchorage areas without restrictions take a rose dashed line N1.2_ro,svg, restricted_areas and areas with tag restricted_areas:restriction take dashed T-line at the boundary N2.1_ro.svg */ +/* N22: evironmentally sensitive sea areas take a green dashed T-line N2.1_gn.svg at the boundary, when no restriction is specified by tag restricted_areas:restriction */ +/* N22: symbols stay green, even in areas with specified restriction, where the boundary is a rose dashed T-line */ + +way["seamark:type"=anchorage]::anchorage_base { + z-index: -1; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N1.2_ro.svg"; + repeat-image-width: 9; repeat-image-spacing: 8; } -relation[boundary=protected_area] > way::protected_area_base, -way[boundary=protected_area]::protected_area_base, -way["seamark:type"=natural_reserve]::protected_area_base { - repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22.svg"; - repeat-image-width: 18; +way["seamark:type"=restricted_area]::restricted_area_base, +way["seamark:restricted_area:restriction"]::restricted_area_base, +relation[boundary=restricted_area] > way::restricted_area_base, +relation["seamark:type"=restricted_area] > way::restricted_area_base { + set .restricted_area; + z-index: -1; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N2.1_ro.svg"; + repeat-image-width: 9; repeat-image-spacing: 8; -} -way["seamark:restricted_area:restriction"=no_entry]::restricted_area { + + /* following lines can be used by uncommenting for highlighting tags for further development */ + /* + text-position: center; + text-offset-y: 30; + font-size: 12; + font-color: #ff00ff; + max-width: 10; + text: eval(concat(tag("seamark:restricted_area:category"),"; ",tag("seamark:restricted_area:restriction"))); + */ +} +*["seamark:restricted_area:restriction"~=no_entry]::restricted_area, +*["seamark:restricted_area:category"~=military]::restricted_area { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N2.2.svg"; + icon-height: 30; repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N2.2.svg"; - repeat-image-width: 20; - repeat-image-spacing: 80; -} -way["seamark:type"=anchorage]::anchorage_base { - repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N2.1.svg"; repeat-image-width: 18; - repeat-image-spacing: 8; + repeat-image-spacing: 82; + repeat-image-phase: 00; } + +/* N10 to N14: Anchorages */ +node["seamark:type"=anchorage][!"seamark:anchorage:category"][!name][!ref]::anchorage { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N10.svg"; + icon-height: 32; +} +way["seamark:type"=anchorage][!"seamark:anchorage:category"][!name][!ref]::anchorage { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N12.svg"; + icon-height: 32; +} +node["seamark:type"=anchorage]["seamark:anchorage:category"]["seamark:anchorage:category"!=explosives]["seamark:anchorage:category"!=quarantine]["seamark:anchorage:category"!=seaplane]::anchorage, +node["seamark:type"=anchorage]["name"]::anchorage, +node["seamark:type"=anchorage]["ref"]::anchorage { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N12.svg"; + icon-height: 32; + /* Text amendments for N12.2 to N12.6 */ + text: eval(concat( + cond(tag("seamark:anchorage:category")=deep_water, eval("DW"), eval("")), + cond(tag("seamark:anchorage:category")=tanker, eval("Tanker"), eval("")), + tag("name"), " ", tag("ref"), + cond(tag("seamark:anchorage:category")="24_hour", eval(" 24 h"), eval("")), + cond(tag("seamark:anchorage:category")=small_craft, eval(" Small Craft"), eval("")), + cond(tag("seamark:anchorage:category")=reserved, eval(" Reserved"), eval("")) + )); + text-color: #8e008e; + font-size: 16; + font-style: italic; + text-position: center; + text-anchor-horizontal: left; + text-anchor-vertical: center; + } +way["seamark:type"=anchorage]["seamark:anchorage:category"]["seamark:anchorage:category"!=explosives]["seamark:anchorage:category"!=quarantine]["seamark:anchorage:category"!=seaplane]::anchorage, +way["seamark:type"=anchorage]["name"]::anchorage, +way["seamark:type"=anchorage]["ref"]::anchorage { + /* Text amendments for N12.2 to N12.6 */ + text: eval(concat( + cond(tag("seamark:anchorage:category")=deep_water, eval(" DW"), eval("")), + cond(tag("seamark:anchorage:category")=tanker, eval("Tanker "), eval("")), + tag("name"), " ", tag("ref"), + cond(tag("seamark:anchorage:category")="24_hour", eval(" 24 h "), eval("")), + cond(tag("seamark:anchorage:category")=small_craft, eval(" Small Craft "), eval("")), + cond(tag("seamark:anchorage:category")=reserved, eval(" Reserved "), eval("")), + cond(tag("seamark:anchorage:category")=limited_time, eval("Temporal "), eval("")), + cond(tag("seamark:anchorage:category")=waiting, eval(" WA"), eval("")) + )); + text-color: #8e008e; + font-size: 16; + font-style: italic; + text-position: center; + text-offset-x: -30; + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N12.svg"; + icon-height: 24; + } +node["seamark:type"=anchorage]["seamark:anchorage:category"=explosives]::anchorage, +way["seamark:type"=anchorage]["seamark:anchorage:category"=explosives]::anchorage { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N12.7.svg"; + icon-height: 32; +} +node["seamark:type"=anchorage]["seamark:anchorage:category"=quarantine]::anchorage, +way["seamark:type"=anchorage]["seamark:anchorage:category"=quarantine]::anchorage { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N12.8.svg"; + icon-height: 32; +} +node["seamark:type"=anchorage]["seamark:anchorage:category"=seaplane]::anchorage, +way["seamark:type"=anchorage]["seamark:anchorage:category"=seaplane]::anchorage { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N13.svg"; + icon-height: 32; +} + way["seamark:type"=anchorage]::anchorage_area { repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N12.svg"; - repeat-image-width: 28; - repeat-image-spacing: 80; + repeat-image-width: 22; + repeat-image-spacing: 78; + repeat-image-phase: 25; +} + +/* N20 to N27: Restricted Areas */ +/* includes N22 green boundary line setup, in case no restrictions take precedence */ +*["seamark:type"=restricted_area][!"seamark:restricted_area:restriction"]["seamark:restricted_area:category"=~/marine_reserve|essa|pssa|nature_reserve|ecological_reserve|bird_sanctuary|seal_sanctuary|turtle_sanctuary|fish_sanctuary|seahorse_sanctuary|seagrass_sanctuary|kelp_sanctuary|coral_sanctuary|duck_sanctuary|penguin_sanctuary|dolphin_sanctuary|whale_sanctuary|game_reserve/]["seamark:restricted_area:category"!~/safety|degaussing_range|military|historic_wreck|navigational_aid_safety|minefield|swimming|waiting|research|dredging|no_wake|swinging|water_skiing/]::protected_area_base, +relation[boundary=protected_area][!"seamark:restricted_area:restriction"] > way::protected_area_base, +way[boundary=protected_area][!"seamark:restricted_area:restriction"]::protected_area_base { + set .environmentally_portected_area; +} +*["seamark:restricted_area:category"~=pssa]::protected_area_base { + major-z-index: -2; + linecap: none; + width: 16; + color: #008e00; + opacity: 0.3; + offset: -8; +} +*.environmentally_portected_area::protected_area_base { + z-index: -1; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N2.1_gn.svg"; + repeat-image-width: 9; + repeat-image-spacing: 8; } way["seamark:restricted_area:restriction"~=no_anchoring]::anchorage_area { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N20.svg"; + icon-height: 28; repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N20.svg"; - repeat-image-width: 28; + repeat-image-width: 20; repeat-image-spacing: 80; + repeat-image-phase: 25; } way["seamark:restricted_area:restriction"~=no_fishing]::no_fishing { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N21.svg"; + icon-height: 40; repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N21.svg"; - repeat-image-width: 28; + repeat-image-width: 30; + repeat-image-spacing: 70; + repeat-image-phase: 55; +} +*["seamark:restricted_area:category"~=bird_sanctuary]::protected_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Bird_gn.svg"; + icon-height: 28; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Bird_gn.svg"; + repeat-image-width: 22; + repeat-image-spacing: 78; + repeat-image-phase: 75; +} +*["seamark:restricted_area:category"~=duck_sanctuary]::protected_area_icon, +*["seamark:restricted_area:category"~=game_reserve]::protected_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_duck_green.svg"; + icon-height: 28; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_duck_green.svg"; + repeat-image-width: 22; + repeat-image-spacing: 78; + repeat-image-phase: 75; +} +*["seamark:restricted_area:category"~=seal_sanctuary]::protected_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_seal_green.svg"; + icon-height: 26; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_seal_green.svg"; + repeat-image-width: 26; + repeat-image-spacing: 74; + repeat-image-phase: 75; +} +*["seamark:restricted_area:category"~=seahorse_sanctuary]::protected_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Seahorse_gn.svg"; + icon-height: 36; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Seahorse_gn.svg"; + repeat-image-width: 20; + repeat-image-spacing: 80; + repeat-image-phase: 75; +} +*["seamark:restricted_area:category"~=seagrass_sanctuary]::protected_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/J/J13.4gn.svg"; + icon-height: 30; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/J/J13.4gn.svg"; + repeat-image-width: 22; + repeat-image-spacing: 78; + repeat-image-phase: 75; +} +*["seamark:restricted_area:category"~=kelp_sanctuary]::protected_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/J/J13.2br.svg"; + icon-height: 22; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/J/J13.2br.svg"; + repeat-image-width: 30; + repeat-image-spacing: 70; + repeat-image-phase: 75; +} +*["seamark:restricted_area:category"~=coral_sanctuary]::protected_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Coral_gn.svg"; + icon-height: 28; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Coral_gn.svg"; + repeat-image-width: 18; + repeat-image-spacing: 82; + repeat-image-phase: 75; +} +*["seamark:restricted_area:category"~=fish_sanctuary][!"seamark:restricted_area:restriction"~=no_fishing]::protected_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Fish_gn.svg"; + icon-height: 44; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Fish_gn.svg"; + repeat-image-width: 30; + repeat-image-spacing: 70; + repeat-image-phase: 75; +} +*["seamark:restricted_area:category"~=fish_sanctuary]["seamark:restricted_area:restriction"!~/no_fishing/]::protected_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Fish_gn.svg"; + icon-height: 44; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Fish_gn.svg"; + repeat-image-width: 30; + repeat-image-spacing: 70; + repeat-image-phase: 75; +} +*["seamark:restricted_area:category"~=sea_turtle_sanctuary]::protected_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Sea_Turtle_gn.svg"; + icon-height: 30; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Sea_Turtle_gn.svg"; + repeat-image-width: 20; repeat-image-spacing: 80; - repeat-image-phase: 20; + repeat-image-phase: 75; } -node["seamark:type"=anchorage]::anchorage { - icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N12.svg"; - icon-height: 32; +*["seamark:restricted_area:category"~=penguin_sanctuary]::protected_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Penguin_gn.svg"; + icon-height: 36; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Penguin_gn.svg"; + repeat-image-width: 20; + repeat-image-spacing: 80; + repeat-image-phase: 75; +} +*["seamark:restricted_area:category"~=dolphin_sanctuary]::protected_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Dolphin_gn.svg"; + icon-height: 40; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Dolphin_gn.svg"; + repeat-image-width: 26; + repeat-image-spacing: 74; + repeat-image-phase: 75; +} +*["seamark:restricted_area:category"~=whale_sanctuary]::protected_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Whale_gn.svg"; + icon-height: 30; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Whale_gn.svg"; + repeat-image-width: 28; + repeat-image-spacing: 72; + repeat-image-phase: 75; +} +*["seamark:restricted_area:category"~=marine_reserve]::protected_area_icon, +*["seamark:restricted_area:category"~=nature_reserve]::protected_area_icon, +*["seamark:restricted_area:category"~=ecological_reserve]::protected_area_icon { + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_MR_green.svg"; + repeat-image-width: 32; + repeat-image-spacing: 68; + repeat-image-phase: 80; +} +*["seamark:restricted_area:category"~=essa]::protected_area_icon { + z-index: -1; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_ESSA_gn.svg"; + repeat-image-width: 44; + repeat-image-spacing: 256; + repeat-image-phase: 80; + repeat-image-align: top; + text: eval(concat(eval("ESSA "), tag(ref))); + text-color: #008e00; + text-position: inside; + font-size: 16; + font-style: italic; +} +*["seamark:restricted_area:category"~=pssa]::protected_area_icon { + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_PSSA_gn.svg"; + repeat-image-width: 42; + repeat-image-spacing: 258; + repeat-image-phase: 80; + repeat-image-align: top; + text: eval(concat(eval("PSSA "), tag(ref))); + text-color: #008e00; + text-position: inside; + font-size: 16; + font-style: italic; +} +*["seamark:restricted_area:category"=degaussing_range]::restricted_area_icon { + text: eval("Degaussing Range"); + text-color: #8e008e; + font-size: 16; + font-style: italic; + text-anchor-horizontal: center; + text-position: center; +} +*["seamark:restricted_area:category"~=maximum_speed]::restricted_area_icon, +*["seamark:restricted_area:restriction"~=maximum_speed]::restricted_area_icon { + _match: regexp_match("(.+?)kn(.+)", concat(tag("seamark:restricted_area:information"," "), " "), "i"); /* _match element 1 = all characters in front of characters "kn" case insensitive, _match element 2 = all characters after kn are disregarded */ + text: cond(get(prop("_match"),1),concat(get(prop("_match"),1), " kn"),tag("seamark:restricted_area:information")); + text-color: #8e008e; + font-size: 16; + font-style: italic; + text-anchor-horizontal: center; + text-position: center; +} +*["seamark:restricted_area:category"~=maximum_speed]::restricted_area_icon, +*["seamark:restricted_area:restriction"~=maximum_speed]::restricted_area_icon { + _match: regexp_match("(.+?)kn(.+)", concat(tag("seamark:restricted_area:information"," "), " "), "i"); /* _match element 1 = all characters in front of characters "kn" case insensitive, _match element 2 = all characters after kn are disregarded */ + text: cond(get(prop("_match"),1),concat(get(prop("_match"),1), " kn"),tag("seamark:restricted_area:information")); + text-color: #8e008e; + font-size: 16; + font-style: italic; + text-anchor-horizontal: center; + text-position: center; +} +*["seamark:restricted_area:category"~=no_wake]::restricted_area_icon, +*["seamark:restricted_area:restriction"~=no_wake]::restricted_area_icon { + /* not official, there is no specific INT-1 symbol for such areas, but created based on the no_wake notice mark symbol */ + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N27.svg"; + icon-height: 28; +} +*["seamark:restricted_area:category"~=no_wake]["seamark:restricted_area:restriction"~=maximum_speed]::restricted_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N27.svg"; + icon-height: 28; + icon-position: center; + icon-offset-x: -20; + _match: regexp_match("(.+?)kn(.+)", concat(tag("seamark:restricted_area:information"," "), " "), "i"); /* _match element 1 = all characters in front of characters "kn" case insensitive, _match element 2 = all characters after kn are disregarded */ + text: cond(get(prop("_match"),1),concat(get(prop("_match"),1), " kn"),tag("seamark:restricted_area:information")); + text-color: #8e008e; + font-size: 16; + font-style: italic; + text-anchor-horizontal: center; + text-position: center; + text-offset-x: 20; +} + +/* N30 to N34: Military practice areas*/ +/* N31: see implementation with N2.2, remaining section is incomplete, amendments welcome */ +*["seamark:restricted_area:category"=minefield]::restricted_area_icon { + text: eval("Minefield"); + text-color: #8e008e; + font-size: 16; + font-style: italic; + text-anchor-horizontal: center; + text-position: center; +} + +/* N2.1, N20 to N34, when no restricted_area:category implemented style is found by the list below, the restricted_area:category is displayed as text */ +*["seamark:restricted_area:category"]["seamark:restricted_area:category"!~/bird_sanctuary|duck_sanctuary|game_reserve|seal_sanctuary|seahorse_sanctuary|seagrass_sanctuary|kelp_sanctuary|coral_sanctuary|fish_sanctuary|sea_turtle_sanctuary|peguin_sanctuary|dolphin_sanctuary|whale_sanctuary|marine_reserve|ecological_reserve|nature_reserve|essa|pssa|degaissing_range|maximum_speed|no_wake|minefield/]::restricted_area_icon { + text: eval(title(replace(tag("seamark:restricted_area:category"), "_", " "))); + text-color: #8e008e; + font-size: 16; + font-style: italic; + text-anchor-horizontal: center; + text-position: center; + /* I don't know how to effectively implement the changing line pattern according to INT-1 N25, improvement/amendment is welcome here */ +} +*|z17["seamark:restricted_area:information"] { + shield-text: eval(tag("seamark:restricted_area:information")); + text-color: #8e008e; + font-size: 12; + font-style: italic; + text-anchor-horizontal: center; + text-position: center; + shield: #8e008e; + shield-opacity: 0.3; + shield-frame-width: 2; + shield-fram-color: #8e008e; + /* helpful in JOSM checking for additional information on the restricted area, when zooming in */ } +/* N40 to N49: Boundaries and Limits */ way[boundary], area[boundary], relation[boundary] > way::int1_border { @@ -670,6 +1005,16 @@ relation[boundary=administrative][admin_level=2] > way[border_type=territorial]. repeat-image-spacing: 3; opacity: 0.05; } + +/* N60 to N65: Various Limits*/ +/* still missing, please amend */ + +/* N Supplementary Symbols, Ng Diving prohibited */ +*["seamark:restricted_area:restriction"~=no_diving]::restricted_area_icon { + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/Nb_no.svg"; + icon-height: 28; +} + /* O: Hydrographic Terms */ /* P: Lights */ node[man_made=lighthouse]::int1_lighthouse { From 30e949f3d5e0fc1ee6c67c9039bc84307cd47918 Mon Sep 17 00:00:00 2001 From: Jo <93162192+josail@users.noreply.github.com> Date: Mon, 2 Jun 2025 21:19:28 +0200 Subject: [PATCH 04/12] Update INT1_MapCSS.mapcss correct file reference for N22_seahorse_gn.svg with adjusted line width for visibility --- INT1_MapCSS.mapcss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/INT1_MapCSS.mapcss b/INT1_MapCSS.mapcss index 925a436..a3877cb 100644 --- a/INT1_MapCSS.mapcss +++ b/INT1_MapCSS.mapcss @@ -785,9 +785,9 @@ way["seamark:restricted_area:restriction"~=no_fishing]::no_fishing { repeat-image-phase: 75; } *["seamark:restricted_area:category"~=seahorse_sanctuary]::protected_area_icon { - icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Seahorse_gn.svg"; + icon-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_seahorse_gn.svg"; icon-height: 36; - repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_Seahorse_gn.svg"; + repeat-image: "https://raw.githubusercontent.com/OpenNauticalChart/josm/master/icons/svg/N/N22_seahorse_gn.svg"; repeat-image-width: 20; repeat-image-spacing: 80; repeat-image-phase: 75; From 77f367c25f0ccd80521706818dd8c4f77874b098 Mon Sep 17 00:00:00 2001 From: Jo <93162192+josail@users.noreply.github.com> Date: Mon, 2 Jun 2025 22:08:55 +0200 Subject: [PATCH 05/12] Update INT1_MapCSS.mapcss amend restricted area category list with specific display --- INT1_MapCSS.mapcss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INT1_MapCSS.mapcss b/INT1_MapCSS.mapcss index a3877cb..eb315ef 100644 --- a/INT1_MapCSS.mapcss +++ b/INT1_MapCSS.mapcss @@ -958,7 +958,7 @@ way["seamark:restricted_area:restriction"~=no_fishing]::no_fishing { } /* N2.1, N20 to N34, when no restricted_area:category implemented style is found by the list below, the restricted_area:category is displayed as text */ -*["seamark:restricted_area:category"]["seamark:restricted_area:category"!~/bird_sanctuary|duck_sanctuary|game_reserve|seal_sanctuary|seahorse_sanctuary|seagrass_sanctuary|kelp_sanctuary|coral_sanctuary|fish_sanctuary|sea_turtle_sanctuary|peguin_sanctuary|dolphin_sanctuary|whale_sanctuary|marine_reserve|ecological_reserve|nature_reserve|essa|pssa|degaissing_range|maximum_speed|no_wake|minefield/]::restricted_area_icon { +*["seamark:restricted_area:category"]["seamark:restricted_area:category"!~/bird_sanctuary|duck_sanctuary|game_reserve|seal_sanctuary|seahorse_sanctuary|seagrass_sanctuary|kelp_sanctuary|coral_sanctuary|fish_sanctuary|sea_turtle_sanctuary|peguin_sanctuary|dolphin_sanctuary|whale_sanctuary|marine_reserve|ecological_reserve|nature_reserve|essa|pssa|degaissing_range|maximum_speed|no_wake|navigational_aid_safety|military|minefield/]::restricted_area_icon { text: eval(title(replace(tag("seamark:restricted_area:category"), "_", " "))); text-color: #8e008e; font-size: 16; From 379eaea18ac62325e9534810ed0bd2075cd85197 Mon Sep 17 00:00:00 2001 From: Jo <93162192+josail@users.noreply.github.com> Date: Mon, 2 Jun 2025 22:10:05 +0200 Subject: [PATCH 06/12] Update INT1_MapCSS.mapcss --- INT1_MapCSS.mapcss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INT1_MapCSS.mapcss b/INT1_MapCSS.mapcss index eb315ef..5dcfa28 100644 --- a/INT1_MapCSS.mapcss +++ b/INT1_MapCSS.mapcss @@ -958,7 +958,7 @@ way["seamark:restricted_area:restriction"~=no_fishing]::no_fishing { } /* N2.1, N20 to N34, when no restricted_area:category implemented style is found by the list below, the restricted_area:category is displayed as text */ -*["seamark:restricted_area:category"]["seamark:restricted_area:category"!~/bird_sanctuary|duck_sanctuary|game_reserve|seal_sanctuary|seahorse_sanctuary|seagrass_sanctuary|kelp_sanctuary|coral_sanctuary|fish_sanctuary|sea_turtle_sanctuary|peguin_sanctuary|dolphin_sanctuary|whale_sanctuary|marine_reserve|ecological_reserve|nature_reserve|essa|pssa|degaissing_range|maximum_speed|no_wake|navigational_aid_safety|military|minefield/]::restricted_area_icon { +*["seamark:restricted_area:category"]["seamark:restricted_area:category"!~/bird_sanctuary|duck_sanctuary|game_reserve|seal_sanctuary|seahorse_sanctuary|seagrass_sanctuary|kelp_sanctuary|coral_sanctuary|fish_sanctuary|sea_turtle_sanctuary|peguin_sanctuary|dolphin_sanctuary|whale_sanctuary|marine_reserve|ecological_reserve|nature_reserve|essa|pssa|degaissing_range|maximum_speed|no_wake|navigational_aid_safety|safety|military|minefield/]::restricted_area_icon { text: eval(title(replace(tag("seamark:restricted_area:category"), "_", " "))); text-color: #8e008e; font-size: 16; From c08c07472319079a5f7ece5af6f70bb7efe3ae27 Mon Sep 17 00:00:00 2001 From: Jo <93162192+josail@users.noreply.github.com> Date: Mon, 2 Jun 2025 22:47:15 +0200 Subject: [PATCH 07/12] Update INT1_MapCSS.mapcss --- INT1_MapCSS.mapcss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INT1_MapCSS.mapcss b/INT1_MapCSS.mapcss index 5dcfa28..943b272 100644 --- a/INT1_MapCSS.mapcss +++ b/INT1_MapCSS.mapcss @@ -967,7 +967,7 @@ way["seamark:restricted_area:restriction"~=no_fishing]::no_fishing { text-position: center; /* I don't know how to effectively implement the changing line pattern according to INT-1 N25, improvement/amendment is welcome here */ } -*|z17["seamark:restricted_area:information"] { +*|z17-["seamark:restricted_area:information"]::restricted_area_icon { shield-text: eval(tag("seamark:restricted_area:information")); text-color: #8e008e; font-size: 12; From 62e8c7ad9b1d26120ae5a0aade57198642c93fbf Mon Sep 17 00:00:00 2001 From: Jo <93162192+josail@users.noreply.github.com> Date: Mon, 2 Jun 2025 23:37:00 +0200 Subject: [PATCH 08/12] Update INT1_MapCSS.mapcss typo --- INT1_MapCSS.mapcss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INT1_MapCSS.mapcss b/INT1_MapCSS.mapcss index 943b272..635407e 100644 --- a/INT1_MapCSS.mapcss +++ b/INT1_MapCSS.mapcss @@ -958,7 +958,7 @@ way["seamark:restricted_area:restriction"~=no_fishing]::no_fishing { } /* N2.1, N20 to N34, when no restricted_area:category implemented style is found by the list below, the restricted_area:category is displayed as text */ -*["seamark:restricted_area:category"]["seamark:restricted_area:category"!~/bird_sanctuary|duck_sanctuary|game_reserve|seal_sanctuary|seahorse_sanctuary|seagrass_sanctuary|kelp_sanctuary|coral_sanctuary|fish_sanctuary|sea_turtle_sanctuary|peguin_sanctuary|dolphin_sanctuary|whale_sanctuary|marine_reserve|ecological_reserve|nature_reserve|essa|pssa|degaissing_range|maximum_speed|no_wake|navigational_aid_safety|safety|military|minefield/]::restricted_area_icon { +*["seamark:restricted_area:category"]["seamark:restricted_area:category"!~/bird_sanctuary|duck_sanctuary|game_reserve|seal_sanctuary|seahorse_sanctuary|seagrass_sanctuary|kelp_sanctuary|coral_sanctuary|fish_sanctuary|sea_turtle_sanctuary|penguin_sanctuary|dolphin_sanctuary|whale_sanctuary|marine_reserve|ecological_reserve|nature_reserve|essa|pssa|degaissing_range|maximum_speed|no_wake|navigational_aid_safety|safety|military|minefield/]::restricted_area_icon { text: eval(title(replace(tag("seamark:restricted_area:category"), "_", " "))); text-color: #8e008e; font-size: 16; From 4931d25b2fd82e5aa743fe7e03f583bff4f3281c Mon Sep 17 00:00:00 2001 From: Jo <93162192+josail@users.noreply.github.com> Date: Mon, 2 Jun 2025 23:51:03 +0200 Subject: [PATCH 09/12] Update INT1_MapCSS.mapcss correction for green color boundary of pssa, in case no restriction is specified --- INT1_MapCSS.mapcss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INT1_MapCSS.mapcss b/INT1_MapCSS.mapcss index 635407e..574bd29 100644 --- a/INT1_MapCSS.mapcss +++ b/INT1_MapCSS.mapcss @@ -729,7 +729,7 @@ relation[boundary=protected_area][!"seamark:restricted_area:restriction"] > way: way[boundary=protected_area][!"seamark:restricted_area:restriction"]::protected_area_base { set .environmentally_portected_area; } -*["seamark:restricted_area:category"~=pssa]::protected_area_base { +*["seamark:restricted_area:category"~=pssa]::protected_area_base_pssa { major-z-index: -2; linecap: none; width: 16; From 578b0c71f401a74c1e443b716695258c1bac9f15 Mon Sep 17 00:00:00 2001 From: Jo <93162192+josail@users.noreply.github.com> Date: Tue, 3 Jun 2025 21:42:15 +0200 Subject: [PATCH 10/12] Update INT1_MapCSS.mapcss --- INT1_MapCSS.mapcss | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/INT1_MapCSS.mapcss b/INT1_MapCSS.mapcss index 574bd29..b61c7a3 100644 --- a/INT1_MapCSS.mapcss +++ b/INT1_MapCSS.mapcss @@ -967,17 +967,14 @@ way["seamark:restricted_area:restriction"~=no_fishing]::no_fishing { text-position: center; /* I don't know how to effectively implement the changing line pattern according to INT-1 N25, improvement/amendment is welcome here */ } -*|z17-["seamark:restricted_area:information"]::restricted_area_icon { - shield-text: eval(tag("seamark:restricted_area:information")); +*|z18-["seamark:restricted_area:information"]::restricted_area_info { + text: eval(tag("seamark:restricted_area:information")); text-color: #8e008e; font-size: 12; font-style: italic; text-anchor-horizontal: center; text-position: center; - shield: #8e008e; - shield-opacity: 0.3; - shield-frame-width: 2; - shield-fram-color: #8e008e; + text-offset-y: -30; /* helpful in JOSM checking for additional information on the restricted area, when zooming in */ } From a0146652ae35add62fb95ef586927b64b205264d Mon Sep 17 00:00:00 2001 From: Jo <93162192+josail@users.noreply.github.com> Date: Sun, 8 Jun 2025 23:23:38 +0200 Subject: [PATCH 11/12] Update INT-1-preset.xml Section N - integrating all categories and available icons - additional German translations --- INT-1-preset.xml | 354 +++++++++++++++++++++++++++-------------------- 1 file changed, 204 insertions(+), 150 deletions(-) diff --git a/INT-1-preset.xml b/INT-1-preset.xml index 854e3aa..1003949 100644 --- a/INT-1-preset.xml +++ b/INT-1-preset.xml @@ -1,5 +1,5 @@ - + @@ -45,41 +45,41 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2026,148 +2026,192 @@ - - From b36ee37f12d0c863ea5aadec8e4b12c4cad1707d Mon Sep 17 00:00:00 2001 From: Jo <93162192+josail@users.noreply.github.com> Date: Mon, 9 Jun 2025 00:58:42 +0200 Subject: [PATCH 12/12] Update INT-1-preset.xml INT-1 Section N: - Anchorages amended with icons and reference ref= option --- INT-1-preset.xml | 70 +++++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/INT-1-preset.xml b/INT-1-preset.xml index 1003949..5af72cb 100644 --- a/INT-1-preset.xml +++ b/INT-1-preset.xml @@ -2033,7 +2033,7 @@ - + @@ -2054,7 +2054,7 @@ - + @@ -2090,29 +2090,31 @@