Commit 7113a8ae authored by Bas Couwenberg's avatar Bas Couwenberg

Imported Upstream version 0.0.svn7995+dfsg1

parent 0000e0ef
......@@ -13,7 +13,7 @@
<classpathentry kind="lib" path="test/lib/fest/jcip-annotations-1.0.jar"/>
<classpathentry kind="lib" path="test/lib/fest/MRJToolkitStubs-1.0.jar"/>
<classpathentry kind="lib" path="test/lib/jfcunit.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7.0_72"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7.0_76"/>
<classpathentry exported="true" kind="con" path="GROOVY_SUPPORT"/>
<classpathentry kind="lib" path="test/lib/unitils-core/commons-collections-3.2.jar"/>
<classpathentry kind="lib" path="test/lib/unitils-core/commons-lang-2.3.jar"/>
......
......@@ -6,6 +6,7 @@ org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annota
org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7
......
eclipse.preferences.version=1
groovy.compiler.level=-1
groovy.compiler.level=23
JOSM was originally designed and coded by Immanuel Scholz,
and is now maintained by the OpenStreetMap community.
The current JOSM maintainer is Dirk Stöcker.
A lot of administration work is done by Paul Hartmann and Vincent Privat.
Major code contributions from (in alphabetical order):
Stefan Breunig
David Earl
Gabriel Ebner
Dave Hansen
Paul Hartmann
Karl Guggisberg
Matthias Julius
Alexei Kasatkin
Jiri Klement
Ulf Lamping
Simon Legner
Raphael Mack
Upliner Mikhalych
Vincent Privat
Frederik Ramm
Dirk Stöcker
Many minor contributions and patches by others; see SVN history
at http://josm.openstreetmap.de/svn/ for details. Use
"josm-dev AT openstreetmap.org" to contact still active authors.
The logo has been designed by Ilya Palikov.
Copyright rests with the contributors.
-------------------------------- EXTERNAL CODE --------------------------------
The jpeg metadata extraction code is from Drew Noakes
(http://code.google.com/p/metadata-extractor/) and licensed
with Apache license version 2.0.
The Bzip2 code is from Apache Commons Compress and licensed
with Apache license version 2.0.
The signpost code (http://code.google.com/p/oauth-signpost/)
is from Matthias Käppler and licensed with the Apache License 2.0.
The mail/url validator routines use code from Apache Commons
Validator which is licensed with Apache license version 2.0.
The NTv2 transformation code (http://jgridshift.sourceforge.net/)
is from Peter Yuill and licensed with LGPL.
The MultiSplitPane is from Hans Muller and licensed with LGPL
(https://today.java.net/pub/a/today/2006/03/23/multi-split-pane.html).
The Alphanum Algorithm is from David Koelle and license with LGPL
(http://www.davekoelle.com/alphanum.html)
The Diff code (http://www.bmsi.com/java/#diff)
is from Stuart D. Gathman and licensed with GPL.
The Ellipsoid code (http://www.i3s.unice.fr/~johan/gps/)
is from Johan Montagnat and licensed with GPL.
The JSON code (https://java.net/projects/jsonp/)
is from Oracle (RI for JSR 353: Java API for JSON Processing)
and licensed with GPL / classpath exception.
The opening hour validation uses code from opening_hour.js
(https://github.com/ypid/opening_hours.js) which is licensed
with the New (2-clause) BSD license.
------------------------------------ ICONS ------------------------------------
Most icons have been nicked from GNOME and the GIMP, both under GPL.
Some are originally LGPL but redistributed here under GPL.
The keyboard icon comes fom:
- source: http://www.iconfinder.net/index.php?q=key&page=icondetails&iconid=8553&size=128&q=key&s12=on&s16=on&s22=on&s32=on&s48=on&s64=on&s128=on
- licence: GPL
- designer: Paolino, http://www.paolinoland.it/
- original filename: keyboard.png
- original size: 128x128
- modifications: icon was cropped, then resized
JOSM was originally designed and coded by Immanuel Scholz,
and is now maintained by the OpenStreetMap community.
The current JOSM maintainer is Dirk Stöcker.
A lot of administration work is done by Paul Hartmann and Vincent Privat.
Major code contributions from (in alphabetical order):
Stefan Breunig
David Earl
Gabriel Ebner
Dave Hansen
Paul Hartmann
Karl Guggisberg
Matthias Julius
Alexei Kasatkin
Jiri Klement
Ulf Lamping
Simon Legner
Raphael Mack
Upliner Mikhalych
Vincent Privat
Frederik Ramm
Dirk Stöcker
Many minor contributions and patches by others; see SVN history
at http://josm.openstreetmap.de/svn/ for details. Use
"josm-dev AT openstreetmap.org" to contact still active authors.
The logo has been designed by Ilya Palikov.
Copyright rests with the contributors.
-------------------------------- EXTERNAL CODE --------------------------------
The jpeg metadata extraction code is from Drew Noakes
(http://code.google.com/p/metadata-extractor/) and licensed
with Apache license version 2.0.
The Bzip2 code is from Apache Commons Compress and licensed
with Apache license version 2.0.
The signpost code (http://code.google.com/p/oauth-signpost/)
is from Matthias Käppler and licensed with the Apache License 2.0.
The mail/url validator routines use code from Apache Commons
Validator which is licensed with Apache license version 2.0.
The NTv2 transformation code (http://jgridshift.sourceforge.net/)
is from Peter Yuill and licensed with LGPL.
The MultiSplitPane is from Hans Muller and licensed with LGPL
(https://today.java.net/pub/a/today/2006/03/23/multi-split-pane.html).
The Alphanum Algorithm is from David Koelle and license with LGPL
(http://www.davekoelle.com/alphanum.html)
The Diff code (http://www.bmsi.com/java/#diff)
is from Stuart D. Gathman and licensed with GPL.
The Ellipsoid code (http://www.i3s.unice.fr/~johan/gps/)
is from Johan Montagnat and licensed with GPL.
The JSON code (https://java.net/projects/jsonp/)
is from Oracle (RI for JSR 353: Java API for JSON Processing)
and licensed with GPL / classpath exception.
The opening hour validation uses code from opening_hour.js
(https://github.com/ypid/opening_hours.js) which is licensed
with the New (2-clause) BSD license.
------------------------------------ ICONS ------------------------------------
Most icons have been nicked from GNOME and the GIMP, both under GPL.
Some are originally LGPL but redistributed here under GPL.
The keyboard icon comes fom:
- source: http://www.iconfinder.net/index.php?q=key&page=icondetails&iconid=8553&size=128&q=key&s12=on&s16=on&s22=on&s32=on&s48=on&s64=on&s128=on
- licence: GPL
- designer: Paolino, http://www.paolinoland.it/
- original filename: keyboard.png
- original size: 128x128
- modifications: icon was cropped, then resized
......@@ -114,8 +114,8 @@ This is an overview of the files and directories in the JOSM code repository:
- performance/ performance tests (source code)
- unit/ unit tests (source code)
- tools/ libraries and tools that help in the development process
- animal-sniffer-ant-tasks-1.11.jar
TODO: what is this?
- animal-sniffer-ant-tasks-1.13.jar
used to build and check code signatures to ensure plugins binary compatibility
- appbundler-1.0ea.jar used to build Mac OS X package for Oracle Java 7
- findbugs/ libs and config files for findbugs (automatically detects common bugs and potential
problems in source code); can be launched as an ant target in build.xml
......
<?xml version="1.0"?>
<info>
<entry
kind="dir"
path="trunk"
revision="7906"
kind="dir">
revision="7995">
<url>http://josm.openstreetmap.de/svn/trunk</url>
<repository>
<root>http://josm.openstreetmap.de/svn</root>
<uuid>0c6e7542-c601-0410-84e7-c038aed88b3b</uuid>
</repository>
<commit
revision="7906">
revision="7995">
<author>Don-vip</author>
<date>2014-12-28T23:13:58.752464Z</date>
<date>2015-01-31T14:17:59.510945Z</date>
</commit>
</entry>
</info>
......@@ -278,7 +278,7 @@ Build-Date: ${build.tstamp}
<include name="**/*.jar"/>
</fileset>
<pathelement path="dist/josm-custom.jar"/>
<pathelement path="tools/groovy-all-2.3.9.jar"/>
<pathelement path="tools/groovy-all-2.4.0.jar"/>
</path>
<macrodef name="init-test-preferences">
<attribute name="testfamily"/>
......@@ -325,7 +325,7 @@ Build-Date: ${build.tstamp}
</sequential>
</macrodef>
<target name="test-compile" depends="test-init,dist">
<taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpath="tools/groovy-all-2.3.9.jar"/>
<taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpath="tools/groovy-all-2.4.0.jar"/>
<call-groovyc testfamily="unit">
<cp-elements>
<path refid="test.classpath"/>
......@@ -448,7 +448,7 @@ Build-Date: ${build.tstamp}
<local name="plugins"/>
<property name="dir" value="plugin-check"/>
<typedef uri="antlib:org.codehaus.mojo.animal_sniffer">
<classpath path="tools/animal-sniffer-ant-tasks-1.11.jar"/>
<classpath path="tools/animal-sniffer-ant-tasks-1.13.jar"/>
</typedef>
<mkdir dir="${dir}"/>
<!-- List of deprecated plugins -->
......@@ -520,6 +520,7 @@ Build-Date: ${build.tstamp}
<ignore classname="au.edu.*"/>
<ignore classname="au.com.*"/>
<ignore classname="com.*"/>
<ignore classname="de.miethxml.*"/>
<ignore classname="javax.*"/>
<ignore classname="jogamp.*"/>
<ignore classname="junit.*"/>
......@@ -530,6 +531,7 @@ Build-Date: ${build.tstamp}
<ignore classname="org.dom4j.*"/>
<ignore classname="org.hsqldb.*"/>
<ignore classname="org.ibex.*"/>
<ignore classname="org.iso_relax.*"/>
<ignore classname="org.jaitools.*"/>
<ignore classname="org.jaxen.*"/>
<ignore classname="org.jdom2.*"/>
......@@ -541,6 +543,7 @@ Build-Date: ${build.tstamp}
<ignore classname="org.slf4j.*"/>
<!-- plugins used by another ones -->
<ignore classname="org.openstreetmap.josm.plugins.geotools.*"/>
<ignore classname="org.openstreetmap.josm.plugins.jna.*"/>
<ignore classname="org.openstreetmap.josm.plugins.jts.*"/>
<ignore classname="org.openstreetmap.josm.plugins.log4j.*"/>
<ignore classname="org.openstreetmap.josm.plugins.utilsplugin2.*"/>
......
This diff is collapsed.
......@@ -26,7 +26,7 @@
<xs:simpleType name="type">
<xs:restriction base="xs:string">
<xs:enumeration value="wms" />
<xs:enumeration value="wms_endpoint" />
<xs:enumeration value="wms_endpoint" />
<xs:enumeration value="tms" />
<xs:enumeration value="html" />
<xs:enumeration value="bing" />
......@@ -57,6 +57,14 @@
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="description">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="lang" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="point">
<xs:attribute name="lat" type="tns:latitude" use="required" />
<xs:attribute name="lon" type="tns:longitude" use="required" />
......@@ -598,6 +606,8 @@
<xs:all>
<!-- The name of the imagery source -->
<xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:string" />
<!-- A description of the imagery source -->
<xs:element name="description" minOccurs="0" type="tns:description" />
<!-- A unique id for the imagery source -->
<xs:element name="id" minOccurs="0" maxOccurs="1" type="tns:id" />
<!-- The type. Can be tms, wms and html. In addition, there are the special types bing and scanex
......@@ -637,7 +647,19 @@
<xs:element name="country-code" minOccurs="0" maxOccurs="1" type="tns:iso3166" />
<!-- A base64-encoded image that is displayed as menu/toolbar icon -->
<xs:element name="icon" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="mirror" minOccurs="0">
<xs:complexType>
<xs:all>
<xs:element name="type" minOccurs="1" maxOccurs="1" type="tns:type" />
<xs:element name="url" minOccurs="1" maxOccurs="1" type="xs:string" />
<xs:element name="projections" minOccurs="0" maxOccurs="1" type="tns:projections" />
<xs:element name="min-zoom" minOccurs="0" maxOccurs="1" type="tns:zoom" />
<xs:element name="max-zoom" minOccurs="0" maxOccurs="1" type="tns:zoom" />
</xs:all>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="last-check" type="xs:date" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
......
......@@ -52,12 +52,36 @@
<3949> +proj=lcc +lat_0=49 +lat_1=48.25 +lat_2=49.75 +lon_0=3 +x_0=1700000 +y_0=8200000 +ellps=GRS80 +nadgrids=null +bounds=-5.5,46.5,10.2,51.1 <>
# Lambert CC9 (France) Zone 50
<3950> +proj=lcc +lat_0=50 +lat_1=49.25 +lat_2=50.75 +lon_0=3 +x_0=1700000 +y_0=9200000 +ellps=GRS80 +nadgrids=null +bounds=-5.5,47.5,10.2,51.1 <>
# ETRS89
<4258> +proj=lonlat +ellps=GRS80 +datum=GRS80 +bounds=-180,-90,180,90 <>
# WGS 84
<4326> +proj=lonlat +ellps=WGS84 +datum=WGS84 +bounds=-180,-90,180,90 <>
# Swiss Grid (Switzerland)
<21781> +proj=somerc +lat_0=46d57'8.66" +lon_0=7d26'22.5" +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.374,15.056,405.346 +bounds=5.7,45.7,10.6,47.9 <>
# HD72 / EOV (Hungary)
<23700> +proj=somerc +lat_0=47.14439372222222 +lon_0=19.04857177777778 +k_0=0.99993 +x_0=650000 +y_0=200000 +ellps=GRS67 +towgs84=52.17,-71.82,-14.9 +units=m +bounds=16.1200,45.7800,22.9100,48.6000 <>
# ETRS89 / UTM zone 28N
<25828> +proj=tmerc +lon_0=-15 +k_0=0.9996 +x_0=500000 +ellps=GRS80 +datum=GRS80 +bounds=-20,-5,-10,85 <>
# ETRS89 / UTM zone 29N
<25829> +proj=tmerc +lon_0=-9 +k_0=0.9996 +x_0=500000 +ellps=GRS80 +datum=GRS80 +bounds=-14,-5,-4,85 <>
# ETRS89 / UTM zone 30N
<25830> +proj=tmerc +lon_0=-3 +k_0=0.9996 +x_0=500000 +ellps=GRS80 +datum=GRS80 +bounds=-8,-5,2,85 <>
# ETRS89 / UTM zone 31N
<25831> +proj=tmerc +lon_0=3 +k_0=0.9996 +x_0=500000 +ellps=GRS80 +datum=GRS80 +bounds=-2,-5,8,85 <>
# ETRS89 / UTM zone 32N
<25832> +proj=tmerc +lon_0=9 +k_0=0.9996 +x_0=500000 +ellps=GRS80 +datum=GRS80 +bounds=4,-5,14,85 <>
# ETRS89 / UTM zone 33N
<25833> +proj=tmerc +lon_0=15 +k_0=0.9996 +x_0=500000 +ellps=GRS80 +datum=GRS80 +bounds=10,-5,20,85 <>
# ETRS89 / UTM zone 34N
<25834> +proj=tmerc +lon_0=21 +k_0=0.9996 +x_0=500000 +ellps=GRS80 +datum=GRS80 +bounds=16,-5,26,85 <>
# ETRS89 / UTM zone 35N
<25835> +proj=tmerc +lon_0=27 +k_0=0.9996 +x_0=500000 +ellps=GRS80 +datum=GRS80 +bounds=22,-5,32,85 <>
# ETRS89 / UTM zone 36N
<25836> +proj=tmerc +lon_0=33 +k_0=0.9996 +x_0=500000 +ellps=GRS80 +datum=GRS80 +bounds=28,-5,38,85 <>
# ETRS89 / UTM zone 37N
<25837> +proj=tmerc +lon_0=39 +k_0=0.9996 +x_0=500000 +ellps=GRS80 +datum=GRS80 +bounds=34,-5,44,85 <>
# ETRS89 / UTM zone 38N
<25838> +proj=tmerc +lon_0=45 +k_0=0.9996 +x_0=500000 +ellps=GRS80 +datum=GRS80 +bounds=40,-5,50,85 <>
# Lambert 4 Zones France (Nord)
<27561> +proj=lcc +lat_0=49.5 +lat_1=48d35'54.682" +lat_2=50d23'45.282" +lon_0=2d20'14.025" +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +nadgrids=ntf_r93_b.gsb +bounds=-4.416666666666665,46.65,9.18,51.300000000000004 <>
# Lambert 4 Zones France (Centre)
......
/* see #9667 - Verify interpolation range/values
Matches nodes with a decrease of addr:housenumber within addr:interpolation=even/odd.
*/
*[tag("addr:housenumber") > child_tag("addr:housenumber")][regexp_test("even|odd", parent_tag("addr:interpolation"))] + *[addr:housenumber] {
throwWarning: tr("Decreasing house numbers in addresses interpolation");
}
/* see #9667 - Verify interpolation range/values
Matches nodes with a decrease of addr:housenumber within addr:interpolation=even/odd.
*/
*[tag("addr:housenumber") > child_tag("addr:housenumber")][regexp_test("even|odd", parent_tag("addr:interpolation"))] + *[addr:housenumber] {
throwWarning: tr("Decreasing house numbers in addresses interpolation");
}
......@@ -105,6 +105,13 @@ way[junction ][!highway][junction!=yes],
throwWarning: tr("{0} without {1}", "{0.key}", "{1.tag}");
}
/* {0.tag} without {1.key} */
*[aeroway=terminal][!building],
*[power=generator][!generator:source],
*[amenity=place_of_worship][!religion] {
throwWarning: tr("{0} without {1}", "{0.tag}", "{1.key}");
}
/* {0.key} without {1.key} or {2.key} */
*[incline ][!highway][!railway],
*[oneway ][!highway][!railway] {
......@@ -118,9 +125,9 @@ way[junction ][!highway][junction!=yes],
throwWarning: tr("{0} without {1} or {2}", "{0.key}", "{1.key}", "{2.tag}");
}
/* {0.key} without {1.tag} or {2.tag} */
*[parking ][amenity!=parking][amenity!=parking_entrance] {
throwWarning: tr("{0} without {1} or {2}", "{0.key}", "{1.tag}", "{2.tag}");
/* {0.key} without {1.tag}, {2.tag} or {3.tag} */
*[parking ][amenity!=parking][amenity!=parking_entrance][amenity!=motorcycle_parking] {
throwWarning: tr("{0} without {1}, {2} or {3}", "{0.key}", "{1.tag}", "{2.tag}", "{3.tag}");
}
/* {0.key} without {1.key}, {2.key} or {3.key} */
......@@ -149,9 +156,10 @@ way[junction ][!highway][junction!=yes],
throwWarning: tr("{0} on suspicious object", "{0.key}");
}
node[amenity =~ /^(restaurant|cafe|fast_food)$/][!name] {
node[amenity =~ /^(restaurant|cafe|fast_food)$/][!name][noname!=yes] {
throwOther: tr("restaurant without name");
assertMatch: "node amenity=restaurant";
assertNoMatch: "node amenity=restaurant noname=yes";
assertNoMatch: "node amenity=restaurant name=Foobar";
}
......@@ -171,7 +179,7 @@ way[highway][natural],
}
/* see #9593 */
*[sport][tourism != hotel][highway != raceway][leisure !~ /^(sports_centre|stadium|track|pitch|golf_course|water_park|swimming_pool|recreation_ground)$/][natural !~ /^(beach|bare_rock)$/][amenity !~ /^(pub|restaurant|swimming_pool)$/][landuse !~ /^(recreation_ground|piste|farm|farmland)$/] {
*[sport][!building][tourism != hotel][highway != raceway][leisure !~ /^(sports_centre|stadium|track|pitch|golf_course|water_park|swimming_pool|recreation_ground)$/][natural !~ /^(beach|bare_rock|peak)$/][amenity !~ /^(pub|restaurant|swimming_pool)$/][landuse !~ /^(recreation_ground|piste|farm|farmland)$/] {
throwWarning: tr("sport without physical feature");
assertMatch: "node sport=tennis";
assertNoMatch: "node sport=tennis leisure=pitch";
......
......@@ -241,7 +241,7 @@
assertMatch: "way fixme=yes";
}
/* see #10107, #10108 - http://wiki.openstreetmap.org/wiki/Proposed_features/leaftype#Features.2FPages_affected */
/* see #10107, #10108, #10929 - http://wiki.openstreetmap.org/wiki/Proposed_features/leaftype#Features.2FPages_affected */
*[wood=deciduous],
*[type=broad_leaved],
*[type=broad_leafed] {
......@@ -250,9 +250,11 @@
fixAdd: "leaf_type=broadleaved";
}
*[wood=coniferous] {
*[wood=coniferous],
*[type=coniferous],
*[type=conifer] {
throwWarning: tr("{0}={1} is deprecated", "{0.key}", "{0.value}");
fixRemove: "wood";
fixRemove: "{0.key}";
fixAdd: "leaf_type=needleleaved";
}
......@@ -331,6 +333,7 @@
/* see #10661, #10837 */
*[barrier=yes],
*[aerialway=yes],
*[amenity=yes],
*[place=yes] {
throwWarning: tr("{0}={1} is unspecific. Please replace ''{1}'' by a specific value.", "{0.key}", "{0.value}");
......@@ -362,8 +365,16 @@ way[sidewalk=yes] {
}
/* see #10837 */
*[building][levels] {
*[building][levels],
*[building:part=yes][levels] {
throwWarning: tr("{0} is deprecated", "{1.key}");
suggestAlternative: "building:levels";
fixChangeKey: "levels => building:levels";
}
/* see #10691 */
*[protected_class] {
throwWarning: tr("{0} is deprecated", "{0.key}");
suggestAlternative: "protect_class";
fixChangeKey: "protected_class => protect_class";
}
\ No newline at end of file
/* {0} on a node, should be a way */
node[oneway],
node[bridge?],
node[bridge],
node[sidewalk],
node[footway],
node[man_made=embankment],
node[man_made=groyne],
node[aerialway=cable_car],
node[aerialway=gondola],
node[aerialway=chair_lift],
node[aerialway=mixed_lift],
node[aerialway=drag_lift],
node[aerialway=t-bar],
node[aerialway=j-bar],
node[aerialway=platter],
node[aerialway=magic_carpet],
node[aerialway=rope_tow],
node[aerialway=goods],
node[aeroway=taxiway],
node[aeroway=runway],
node[railway=rail],
node[railway=narrow_gauge],
node[railway=monorail],
node[railway=preserved],
node[railway=light_rail],
node[railway=subway],
node[railway=tram],
node[railway=disused],
node[railway=abandoned],
node[waterway=river],
node[waterway=riverbank],
node[waterway=canal],
node[waterway=wadi],
node[waterway=stream],
node[waterway=ditch],
node[waterway=drain],
node[natural=coastline],
node[natural=ridge],
node[natural=tree_row] {
throwWarning: tr("{0} on a node. Should be used on a way.", "{0.key}");
throwWarning: tr("{0} on a node. Should be used on a way.", "{0.tag}");
assertMatch: "node oneway=-1";
assertNoMatch: "way oneway=-1";
assertMatch: "node bridge=yes";
assertNoMatch: "node bridge=13";
assertMatch: "node bridge=viaduct";
}
/* {0} on a node, should be an area; see ticket #10679 */
......@@ -35,6 +59,10 @@ node[natural=sand],
node[natural=wood],
node[natural=bare_rock],
node[waterway=riverbank],
node[man_made=bridge],
node[man_made=breakwater],
node[aeroway=apron],
node[power=plant],
node[source:outline] {
throwWarning: tr("{0} on a node. Should be drawn as an area.", "{0.tag}");
}
......@@ -45,6 +73,18 @@ node[restriction] {
throwWarning: tr("{0}=* on a node. Should be used in a relation", "{0.key}");
}
/* {0} on a way, should be a node */
way[entrance],
way[man_made=survey_point],
way[power=pole],
way[amenity=vending_machine],
way[natural=peak],
way[natural=saddle],
way[natural=volcano],
way[natural=tree] {
throwWarning: tr("{0} on a way. Should be used on a node.", "{0.tag}");
}
/* {0} on a way, should be a relation; see #10252 */
way[route=bus] {
throwWarning: tr("{0} on a way. Should be used in a relation", "{0.tag}");
......
......@@ -16,7 +16,7 @@ way[highway][name =~ /(?i).* (Ave|Blvd|Br|Brg|Cct|Cir|Cl|Cr|Crct|Cres|Crt|Ct|Dr|
assertMatch: "way highway=unclassified name=\"Bou blvd.\"";
}
node[highway =~ /motorway|trunk|primary|secondary|tertiary|unclassified|residential|service|living_street|pedestrian|track|path|footway/][highway!=motorway_junction][highway!=services] {
node[highway =~ /motorway|trunk|primary|secondary|tertiary|unclassified|residential|service|living_street|pedestrian|track|path|footway|cycleway|bus_guideway|bridleway/][highway!=motorway_junction][highway!=services] {
throwWarning: tr("wrong highway tag on a node");
assertMatch: "node highway=primary";
assertMatch: "node highway=primary_link";
......@@ -37,15 +37,18 @@ node[highway =~ /motorway|trunk|primary|secondary|tertiary|unclassified|resident
assertNoMatch: "node highway=turning_circle";
}
way[highway=crossing], way[railway=crossing] {
way[highway=crossing],
way[railway=crossing],
way[railway=level_crossing] {
throwWarning: tr("wrong crossing tag on a way");
assertMatch: "way highway=crossing";
assertNoMatch: "node highway=crossing";
}
way[highway=unclassified][!name] {
way[highway=unclassified][!name][noname!=yes] {
throwOther: tr("Unnamed unclassified highway");
assertMatch: "way highway=unclassified";
assertNoMatch: "way highway=unclassified noname=yes";
assertNoMatch: "way highway=unclassified name=Foo";
}
......
/* see #9757, #10869 - Better handling of semicolon in values
*/
*["addr:street" =~ /.+;(.+)?/],
*[highway =~ /.+;(.+)?/],
*[lanes =~ /.+;(.+)?/],
*[maxspeed =~ /.+;(.+)?/],
*[name =~ /.+;(.+)?/],
*[surface =~ /.+;(.+)?/],
*[water =~ /.+;(.+)?/] {
throwWarning: tr("{0} with multiple values", "{0.key}");
}