Skip to content
Commits on Source (5)
......@@ -2,7 +2,7 @@
<info>
<entry
path="trunk"
revision="15238"
revision="15322"
kind="dir">
<url>https://josm.openstreetmap.de/svn/trunk</url>
<relative-url>^/trunk</relative-url>
......@@ -11,9 +11,9 @@
<uuid>0c6e7542-c601-0410-84e7-c038aed88b3b</uuid>
</repository>
<commit
revision="15238">
revision="15322">
<author>Don-vip</author>
<date>2019-07-09T22:52:47.490134Z</date>
<date>2019-08-26T06:55:27.395789Z</date>
</commit>
</entry>
</info>
......@@ -413,6 +413,8 @@ Build-Date: ${build.tstamp}
<link href="https://docs.oracle.com/en/java/javase/11/docs/api" if:set="isJava11" />
<doctitle><![CDATA[<h2>JOSM - Javadoc</h2>]]></doctitle>
<bottom><![CDATA[<a href="https://josm.openstreetmap.de/">JOSM</a>]]></bottom>
<!-- Disable HTML checking until we switch to Java13+, see https://bugs.openjdk.java.net/browse/JDK-8223552 -->
<arg value="-Xdoclint:-html" if:set="isJava13" />
<arg value="-html5" if:set="isJava9" />
<arg value="--add-exports" if:set="isJava9" />
<arg value="java.base/sun.security.util=ALL-UNNAMED" if:set="isJava9" />
......
This diff is collapsed.
......@@ -2,6 +2,10 @@
* Taginfo query: select keypairs.key1, keypairs.key2, keypairs.count_all, keys.count_all, cast(keypairs.count_all as real)/keys.count_all as from_fraction_all from keys, keypairs where key1='waterway' and keys.key=keypairs.key2 and (key1<>'highway' or keypairs.count_all>12000) and (key1<>'railway' or keypairs.count_all>3000) and (key1<>'waterway' or keypairs.count_all>800) and key2 not like '%:%' and from_fraction_all>0.97 and 1 union select keypairs.key2, keypairs.key1, keypairs.count_all, keys.count_all, cast(keypairs.count_all as real)/keys.count_all as from_fraction_all from keys, keypairs where key2='waterway' and keys.key=keypairs.key1 and (key2<>'highway' or keypairs.count_all>12000) and (key2<>'railway' or keypairs.count_all>3000) and (key2<>'waterway' or keypairs.count_all>800) and key1 not like '%:%' and from_fraction_all>0.97 and 1 order by keypairs.count_all desc limit 1000;
*/
way[surface=~/^(unpaved|compacted|gravel|fine_gravel|pebblestone|ground|earth|dirt|grass|sand|mud|ice|salt|snow|woodchips)$/] { /* without grass_paver as it is controversial */
set unpaved_surface;
}
/* {0.key} without {1.key} (warning level) */
way[junction ][!highway][junction!=yes],
way[lanes ][!highway][leisure!=track][leisure!=swimming_pool],
......@@ -42,6 +46,7 @@ way[have_riverbank ][!waterway],
*[border_type ][!boundary],
*[piste:difficulty ][!piste:type],
*[place ][!name][place!=islet],
*[transformer ][!power],
*[source:date ][!source],
*[source:name ][!name],
*[source:maxspeed:forward ][!maxspeed:forward][!maxspeed],
......@@ -87,9 +92,12 @@ way[lanes:backward][!lanes:forward][oneway!=yes][oneway!=-1],
group: tr("missing tag");
}
/* {0.key} without {1.tag} */
/* {0.key} without {1.tag}, #17997 */
*[generator:source ][power!=generator],
*[generator:method ][power!=generator],
*[generator:type ][power!=generator],
node[fire_hydrant:type ][emergency!=fire_hydrant][disused:emergency!=fire_hydrant],
*[transformer ][!power],
node[manhole ][man_made!=manhole],
way[fence_type ][barrier!=fence],
*[recycling_type ][amenity!=recycling],
*[information ][tourism!=information],
......@@ -211,7 +219,7 @@ way[usage=penstock][waterway!=pressurised] {
}
/* {0.key} without {1.key}, {2.key} or {3.key}, #17253 */
way[oneway ][!highway][!railway][!aerialway][attraction!=summer_toboggan],
way[oneway ][!highway][!railway][!aerialway][attraction!=summer_toboggan][aeroway!~/^(runway|taxiway)$/],
*[snowplowing][!highway][!amenity][!leisure] {
throwWarning: tr("{0} without {1}, {2} or {3}", "{0.key}", "{1.key}", "{2.key}", "{3.key}");
group: tr("missing tag");
......@@ -250,9 +258,12 @@ way[highway=footway][oneway=no] {
group: tr("suspicious tag combination");
}
/* {0.tag} together with {1.tag}, see #17623, #17592, #17594, #17542, #16861, #16147, #10186 */
/* {0.tag} together with {1.tag}, see #17950, #17330, #17623, #17592, #17594, #17542, #16861, #16147, #10186 */
*[amenity=police][police],
node[highway=crossing][crossing=no],
node[railway=crossing][crossing=no],
way[junction=yes][highway],
way[tracktype=grade1][surface][surface=~/^(unpaved|compacted|gravel|fine_gravel|pebblestone|ground|earth|dirt|grass|sand|mud|ice|salt|snow|woodchips)$/],
way[tracktype=grade1][surface].unpaved_surface,
way[tracktype=grade2][surface][surface=~/^(sand|mud)$/],
way[segregated][bicycle=no],
way[segregated][foot=no],
......@@ -262,13 +273,6 @@ way[waterway=canal][tunnel=yes] {
group: tr("suspicious tag combination");
}
way[highway=footway][bicycle=designated],
way[highway=cycleway][foot=designated] {
throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.tag}");
group: tr("suspicious tag combination");
suggestAlternative: "highway=path";
}
/* {0.tag} together with {1.tag} (error level) */
relation[type=multipolygon][area=no] {
throwError: tr("{0} together with {1}", "{0.tag}", "{1.tag}");
......@@ -277,7 +281,7 @@ relation[type=multipolygon][area=no] {
/* {0.key} together with {1.key}, #17630, #17604 */
*[building:part][building],
*[addr:street][addr:place] {
*[addr:street][addr:place][outside("CZ,DK")] {
throwWarning: tr("{0} together with {1}", "{0.key}", "{1.key}");
group: tr("suspicious tag combination");
}
......@@ -597,4 +601,26 @@ way:areaStyle[highway][highway =~ /motorway|trunk|primary|secondary|tertiary|unc
area[cemetery=sector][landuse=cemetery] {
throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.tag}");
group: tr("suspicious tag combination");
}
/* #17967 */
*[highway=cycleway][cycleway=track] {
throwWarning: tr("{0} together with {1}. Remove {1}.", "{0.tag}", "{1.tag}");
group: tr("suspicious tag combination");
fixRemove: "cycleway";
}
/* #17973 */
way[highway=path ][foot][foot!=no ][!segregated][bicycle][bicycle!=no]!.unpaved_surface,
way[highway=footway ][bicycle][bicycle!=no][!segregated]!.unpaved_surface,
way[highway=cycleway][foot][foot!=no ][!segregated]!.unpaved_surface {
throwWarning: tr("Combined foot- and cycleway without {1}.", "{3.key}");
group: tr("missing tag");
}
/* #17989 */
node[emergency_ward_entrance][emergency!=emergency_ward_entrance] {
throwWarning: tr("{0} without {1}", "{0.tag}", "{1.tag}");
group: tr("missing tag");
fixAdd: "emergency=emergency_ward_entrance";
}
\ No newline at end of file
......@@ -403,14 +403,12 @@ way[type=palm] {
suggestAlternative: "embankment=yes";
group: tr("deprecated tagging");
}
*[bridge=swing] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "bridge:movable=swing";
suggestAlternative: "bridge:structure=simple-suspension";
group: tr("deprecated tagging");
}
*[bridge=suspension] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "bridge=yes + bridge:structure=suspension";
......@@ -418,6 +416,13 @@ way[type=palm] {
fixAdd: "bridge=yes";
fixAdd: "bridge:structure=suspension";
}
*[bridge=pontoon] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "bridge=yes + bridge:structure=floating";
group: tr("deprecated tagging");
fixAdd: "bridge=yes";
fixAdd: "bridge:structure=floating";
}
/* See #10530 - Incorrect tag proposed in internal preset for years */
*[fee=interval],
......@@ -452,7 +457,8 @@ way[type=palm] {
fixAdd: "park_ride=yes";
}
/* see #10661, #10837, #11737, #12771 */
/* see #17950, #10661, #10837, #11737, #12771 */
*[police=yes],
*[traffic_calming=yes],
*[access=restricted],
*[barrier=yes],
......@@ -960,11 +966,12 @@ node[type][pipeline=marker] {
suggestAlternative: "amenity=gambling";
group: tr("deprecated tagging");
}
*[office=real_estate],
*[office=real_estate_agent] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "office=estate_agent ";
suggestAlternative: "office=estate_agent";
group: tr("deprecated tagging");
fixAdd: "office=estate_agent ";
fixAdd: "office=estate_agent";
}
*[shop=glass] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
......@@ -976,6 +983,7 @@ node[type][pipeline=marker] {
*[amenity=proposed],
*[amenity=disused],
*[shop=disused],
*[highway=abandoned],
*[historic=abandoned] {
throwWarning: tr("{0} is deprecated. Use the {1}: key prefix instead.", "{0.tag}", "{0.value}");
group: tr("deprecated tagging");
......@@ -1247,14 +1255,37 @@ way[direction=down][incline][incline!=down] {
group: tr("deprecated tagging");
}
way[building=y],
way[building=1] {
*[building=true],
*[building="*"],
*[building=Y],
*[building=y],
*[building=1] {
throwError: tr("{0}", "{0.tag}");
suggestAlternative: "building=yes";
group: tr("misspelled value");
fixAdd: "building=yes";
}
/* #17786 */
*[building=abandoned],
*[building=address],
*[building=bing],
*[building=collapsed],
*[building=damaged],
*[building=demolished],
*[building=disused],
*[building=fixme],
*[building=occupied],
*[building=other],
*[building=razed],
*[building=unclassified],
*[building=undefined],
*[building=unknown],
*[building=unidentified] {
throwWarning: tr("{0} is not a building type.", "{0.tag}");
group: tr("deprecated tagging");
}
/* #15675 */
node[power=transformer][location=pole][transformer] {
throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.tag}");
......@@ -1472,4 +1503,271 @@ way[/^is_in:.*$/] {
throwWarning: tr("{0} is deprecated", "{0.key}");
fixRemove: "contact:google_plus";
group: tr("deprecated tagging");
}
/* #17370 */
*[amenity=garages],
*[amenity=garage] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: concat("building=", "{0.value}");
suggestAlternative: "landuse=garages";
suggestAlternative: "amenity=parking + parking=garage_boxes";
group: tr("deprecated tagging");
}
*[shop=winery],
*[amenity=winery] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "craft=winery";
suggestAlternative: "shop=wine";
group: tr("deprecated tagging");
}
*[amenity=youth_centre] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "amenity=community_centre + community_centre=youth_centre";
fixAdd: "amenity=community_centre";
fixAdd: "community_centre=youth_centre";
group: tr("deprecated tagging");
}
*[building:type][building=yes],
*[building:type][!building] {
throwWarning: tr("{0} is deprecated", "{0.key}");
suggestAlternative: "building";
group: tr("deprecated tagging");
fixChangeKey: "building:type => building";
assertMatch: "way building:type=church";
assertMatch: "way building:type=church building=yes";
assertNoMatch: "way building:type=church building=supermarket";
}
*[building:type][building][building!=yes] {
throwWarning: tr("{0} is deprecated", "{0.key}");
suggestAlternative: "building";
group: tr("deprecated tagging");
assertNoMatch: "way building:type=church";
assertNoMatch: "way building:type=church building=yes";
assertMatch: "way building:type=church building=supermarket";
}
*[escalator] {
throwWarning: tr("{0} is deprecated", "{0.key}");
suggestAlternative: "highway=steps + conveying=*";
group: tr("deprecated tagging");
}
*[fenced] {
throwWarning: tr("{0} is deprecated", "{0.key}");
suggestAlternative: "barrier=fence";
group: tr("deprecated tagging");
}
*[historic_name][!old_name] {
throwWarning: tr("{0} is deprecated", "{0.key}");
suggestAlternative: "old_name";
group: tr("deprecated tagging");
fixChangeKey: "historic_name => old_name";
}
*[historic_name][old_name] {
throwWarning: tr("{0} is deprecated", "{0.key}");
suggestAlternative: "old_name";
group: tr("deprecated tagging");
}
*[landuse=field] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "landuse=farmland";
group: tr("deprecated tagging");
fixAdd: "landuse=farmland";
}
*[leisure=beach] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "natural=beach";
suggestAlternative: "leisure=beach_resort";
group: tr("deprecated tagging");
}
*[leisure=club] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "club=*";
group: tr("deprecated tagging");
}
*[leisure=video_arcade] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "leisure=amusement_arcade";
suggestAlternative: "leisure=adult_gaming_centre";
group: tr("deprecated tagging");
}
*[man_made=jetty] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "man_made=pier";
group: tr("deprecated tagging");
fixAdd: "man_made=pier";
}
*[man_made=village_pump] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "man_made=water_well";
group: tr("deprecated tagging");
fixAdd: "man_made=water_well";
}
*[man_made=water_tank] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "man_made=storage_tank + content=water";
group: tr("deprecated tagging");
fixAdd: "man_made=storage_tank";
fixAdd: "content=water";
}
*[natural=moor] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "natural=heath";
suggestAlternative: "natural=scrub";
suggestAlternative: "natural=grassland";
suggestAlternative: "natural=wetland";
suggestAlternative: "natural=fell";
suggestAlternative: "natural=tundra";
suggestAlternative: "landuse=meadow + meadow=agricultural";
group: tr("deprecated tagging");
}
*[noexit=no][!fixme] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "fixme=continue";
group: tr("deprecated tagging");
fixAdd: "fixme=continue";
fixRemove: "noexit";
}
*[noexit=no][fixme] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "fixme=continue";
group: tr("deprecated tagging");
}
*[shop=dive] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "shop=scuba_diving";
group: tr("deprecated tagging");
fixAdd: "shop=scuba_diving";
}
*[shop=furnace] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "shop=fireplace";
suggestAlternative: "craft=plumber";
group: tr("deprecated tagging");
}
*[sport=paragliding] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "sport=free_flying";
group: tr("deprecated tagging");
fixAdd: "sport=free_flying";
}
*[tourism=bed_and_breakfast] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "tourism=guest_house + guest_house=bed_and_breakfast";
group: tr("deprecated tagging");
fixAdd: "tourism=guest_house";
fixAdd: "guest_house=bed_and_breakfast";
}
/* #17880 */
*[diaper=yes],
*[diaper=no] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: concat("changing_table=", "{0.value}");
group: tr("deprecated tagging");
fixChangeKey: "diaper => changing_table";
set diaper_checked;
}
*[diaper][diaper =~ /^[1-9][0-9]*$/] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: concat("changing_table=yes + changing_table:count=", "{0.value}");
group: tr("deprecated tagging");
fixChangeKey: "diaper => changing_table:count";
fixAdd: "changing_table=yes";
set diaper_checked;
}
*[diaper=room] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "changing_table=room";
suggestAlternative: "changing_table=dedicated_room";
group: tr("deprecated tagging");
set diaper_checked;
}
*[diaper]!.diaper_checked {
throwWarning: tr("{0} is deprecated", "{0.key}");
suggestAlternative: "changing_table";
group: tr("deprecated tagging");
}
*[diaper:male=yes] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "changing_table:location=male_toilet";
group: tr("deprecated tagging");
fixAdd: "changing_table:location=male_toilet";
fixRemove: "diaper:male";
set diaper___checked;
}
*[diaper:female=yes] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "changing_table:location=female_toilet";
group: tr("deprecated tagging");
fixAdd: "changing_table:location=female_toilet";
fixRemove: "diaper:female";
set diaper___checked;
}
*[diaper:unisex=yes] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "changing_table:location=unisex_toilet";
group: tr("deprecated tagging");
fixAdd: "changing_table:location=unisex_toilet";
fixRemove: "diaper:unisex";
set diaper___checked;
}
*[diaper:wheelchair=yes],
*[diaper:wheelchair=no] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: concat("changing_table:wheelchair=", "{0.value}");
group: tr("deprecated tagging");
fixChangeKey: "diaper:wheelchair => changing_table:wheelchair";
set diaper___checked;
}
*[diaper:fee=yes],
*[diaper:fee=no] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: concat("changing_table:fee=", "{0.value}");
group: tr("deprecated tagging");
fixChangeKey: "diaper:fee => changing_table:fee";
set diaper___checked;
}
*[/^diaper:/]!.diaper___checked {
throwWarning: tr("{0} is deprecated", "diaper:*");
suggestAlternative: "changing_table:*";
group: tr("deprecated tagging");
}
*[changing_table][changing_table!~/^(yes|no|limited)$/] {
throwWarning: tr("wrong value: {0}", "{0.tag}");
suggestAlternative: "changing_table=yes";
suggestAlternative: "changing_table=no";
suggestAlternative: "changing_table=limited";
}
/* #17990 */
*[roof:shape=half_hipped] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "roof:shape=half-hipped";
group: tr("deprecated tagging");
fixAdd: "roof:shape=half-hipped";
}
/* #18003 */
*[bridge_name] {
throwWarning: tr("{0} is deprecated", "{0.key}");
suggestAlternative: "bridge:name";
group: tr("deprecated tagging");
fixChangeKey: "bridge_name => bridge:name";
}
/* #18007 */
*[access=public] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "access=yes";
group: tr("deprecated tagging");
fixAdd: "access=yes";
}
/* #17330 */
*[crossing=island] {
throwWarning: tr("{0} is deprecated", "{0.tag}");
suggestAlternative: "crossing:island=yes";
group: tr("deprecated tagging");
fixRemove: "crossing";
fixAdd: "crossing:island=yes";
}
\ No newline at end of file
......@@ -3,7 +3,7 @@ node[area=no],
node[oneway],
node[bridge],
node[sidewalk],
node[footway],
node[footway][footway!=crossing], /* footway=crossing has own warning in highway.mapcss */
node[man_made=embankment],
node[man_made=groyne],
node[man_made=cutline],
......
......@@ -45,6 +45,18 @@ way[railway=level_crossing] {
assertNoMatch: "node highway=crossing";
}
/* #18060 */
node[footway=crossing] {
throwWarning: tr("{0} on a node", "{0.tag}");
suggestAlternative: "highway=crossing";
suggestAlternative: "railway=crossing";
}
node[cycleway=crossing] {
throwWarning: tr("{0} on a node", "{0.tag}");
suggestAlternative: "highway=crossing + bicycle=yes";
suggestAlternative: "railway=crossing + bicycle=yes";
}
way[highway=unclassified][!name][noname!=yes] {
throwOther: tr("Unnamed unclassified highway");
assertMatch: "way highway=unclassified";
......@@ -52,7 +64,11 @@ way[highway=unclassified][!name][noname!=yes] {
assertNoMatch: "way highway=unclassified name=Foo";
}
way.major_road[!ref][!destination:ref][noref!=yes][junction!=roundabout] {
/* #17970 */
relation[type=route][route=road][ref] > way.major_road {
set road_route_has_ref;
}
way.major_road!.road_route_has_ref[!ref][!destination:ref][noref!=yes][junction!=roundabout] {
throwOther: tr("highway without a reference");
group: tr("missing tag");
assertMatch: "way highway=primary";
......@@ -127,8 +143,8 @@ way[footway][footway!=sidewalk][footway!=crossing]!.fixable_footway!.not_fixable
assertMatch: "way footway=bar";
}
/* #11270, #9297, #15439, #16424 */
way[railway =~ /^(light_rail|miniature|narrow_gauge|preserved|rail)$/][!highway] > node { set .is_in_railway }
/* #11270, #9297, #15439, #16424, #17022 */
way[railway =~ /^(miniature|narrow_gauge|preserved|rail)$/][!highway] > node { set .is_in_railway }
way[highway =~ /^(bridleway|cycleway|footway|path|steps)$/] > node { set .is_in_minor_road }
way[highway =~ /^(bus_guideway|living_street|motorway|motorway_link|pedestrian|primary|primary_link|raceway|residential|road|secondary|secondary_link|service|tertiary|tertiary_link|track|trunk|trunk_link|unclassified)$/] > node { set .is_in_major_road }
node[railway!=crossing][crossing!=no].is_in_railway.is_in_minor_road!.is_in_major_road {
......
......@@ -55,6 +55,7 @@ E:collection
E:addr:state
E:import_uuid
E:image
E:mapillary
E:url
E:website
E:postal_code
......@@ -325,6 +326,7 @@ K:shop=organic
K:shop=pasta
K:shop=tiles
K:shop=vacant
K:shop=games
;
; Craft Key/Value Pairs
K:craft=tailor
......
......@@ -121,6 +121,7 @@ node[emergency=fire_hydrant][fire_hydrant:count=1] {
*[name][name=~/^(?i)(collège)$/][amenity=school]["school:FR"="collège"],
*[name][name=~/^(?i)(lycée)$/][amenity=school]["school:FR"="lycée"],
*[name][name=~/^(?i)(Аптека|farmacia|pharmacy|pharmacie)$/][amenity=pharmacy],
*[name][name=~/^(?i)(hydrant)$/][emergency=fire_hydrant],
*[name][name=~/^(?i)(АГЗС|АЗС)$/][amenity=fuel] {
throwWarning: tr("{0}", "{0.tag}");
group: tr("descriptive name");
......
This diff is collapsed.