- From: Little, Chris <chris.little@metoffice.gov.uk>
- Date: Tue, 24 Feb 2015 10:52:55 +0000
- To: "Kerry.Taylor@csiro.au" <Kerry.Taylor@csiro.au>, Ed Parsons <eparsons@google.com>
- CC: Phil Archer <phila@w3.org>, "Tandy, Jeremy" <jeremy.tandy@metoffice.gov.uk>, "sdwwg@lists.opengeospatial.org" <sdwwg@lists.opengeospatial.org>, "public-sdw-wg@w3.org" <public-sdw-wg@w3.org>
Kerry, Ed,
Just checking that you were aware of this activity, and perhaps we should ensure SVG with geo info embedded in metadata is included in a SDWWG deliverable at some time.
Chris
-----Original Message-----
From: SVG Working Group repository [mailto:cam+svgwgrepo@mcc.id.au]
Sent: Friday, February 13, 2015 4:21 AM
To: w3c-svg-wg@w3.org
Subject: [svgwg] Move svg:transform mapping to its own spec
https://github.com/w3c/svgwg/commit/637ae4967c0b923a97c5c8f82ac530d44823d1a3
commit 637ae4967c0b923a97c5c8f82ac530d44823d1a3
Author: Dirk Schulze <dschulze@chromium.org>
Date: Fri Feb 13 15:18:27 2015 +1100
Move svg:transform mapping to its own spec
diff --git a/master/coords.html b/master/coords.html
index ecf00e8..be645c1 100644
--- a/master/coords.html
+++ b/master/coords.html
@@ -1574,44 +1574,6 @@ object within a containing block that is only constrained in one direction.</p>
<a href="https://docs.google.com/presentation/d/1POUiroOBbLmXYlQKf0pIR8zVkHWH9jRVN-w8A4aNsIk/">examples</a>
provided by David Vest.</p>
-<h2 id="GeographicCoordinates">Geographic coordinate systems</h2>
-
-<p>In order to allow interoperability between SVG content generators
-and user agents dealing with maps encoded in SVG, the use of a common
-metadata definition for describing the coordinate system used to
-generate SVG documents is encouraged.</p>
-
-<p>Such metadata must be added under the <a>'metadata'</a> element of
-the topmost <a>'svg'</a> element describing the map, consisting of an
-RDF description of the Coordinate Reference System definition used to
-generate the SVG map [<a href='refs.html#ref-RDF-PRIMER'>RDF-PRIMER</a>]. Note that
-the presence of this metadata does not affect the rendering of the SVG
-in any way; it merely provides added semantic value for applications
-that make use of combined maps.</p>
-
-<p>The definition must be conformant to the XML grammar described in
-<a href="http://portal.opengeospatial.org/files/?artifact_id=20509"><cite>GML 3.2.1</cite></a>,
-an OpenGIS Standard for encoding common CRS data types in XML
-[<a href='refs.html#ref-GML'>GML</a>]. In order to correctly map
-the 2-dimensional data used by SVG, the CRS must be of subtype
-<strong>ProjectedCRS</strong> or <strong>Geographic2dCRS</strong>. The
-first axis of the described CRS maps the SVG <var>x</var>-axis and the
-second axis maps the SVG <var>y</var>-axis.</p>
-
-<p>The main purpose of such metadata is to indicate to the user agent
-that two or more SVG documents can be overlayed or merged into a single
-document. Obviously, if two maps reference the same Coordinate Reference
-System definition and have the same SVG <a>'transform'</a> property
-value then they can be overlayed without reprojecting the data. If
-the maps reference different Coordinate Reference Systems and/or have
-different SVG <a>'transform'</a> property values, then a specialized
-cartographic user agent may choose to transform the coordinate data to
-overlay the data. However, typical SVG user agents are not required
-to perform these types of transformations, or even recognize the
-metadata. It is described in this specification so that the connection
-between geographic coordinate systems and the SVG coordinate system is
-clear.</p>
-
<h2 id="DOMInterfaces">DOM interfaces</h2>
<h3 id="InterfaceSVGPointList">Interface SVGPointList</h3>
@@ -2052,8 +2014,6 @@ interface <b>SVGTransform</b> {
<p>If <var>value</var> could not be parsed as a
<a><transform-function></a>, then a <a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#syntaxerror">SyntaxError</a>
is thrown.</p>
- <p class='issue'>The CSS Transforms specification does not have
- a grammar for <a><transform-function></a> yet.</p>
</div>
</dd>
</dl>
diff --git a/specs/transform/Overview.bs b/specs/transform/Overview.bs
new file mode 100644
index 0000000..4c1c144
--- /dev/null
+++ b/specs/transform/Overview.bs
@@ -0,0 +1,325 @@
+<h1>svg:transform for mapping</h1>
+<pre class='metadata'>
+Level: 1
+Status: ED
+ED: http://dev.w3.org/fxtf/motion-1/
+Shortname: transform-mapping
+Group: svg
+Editor: Satoru Takagi, KDDI Corporation, sa-takagi@kddi.com
+Abstract: This specification gives guidance how the SVG transform attribute in the SVG namespace can be used in other context than SVG.
+</pre>
+<pre class=link-defaults>
+spec:svg2; type:element; text:svg
+spec:css-transforms-1; type:property; text:transform
+spec:css-transforms-1; type:type; text:<transform-list>
+</pre>
+
+<h2 id="GeographicCoordinates">Geographic coordinate systems</h2>
+
+In order to allow interoperability between SVG content generators
+and user agents dealing with maps encoded in SVG, the use of a common
+metadata definition for describing the coordinate system used to
+generate SVG documents is encouraged.
+
+Such metadata must be added under the <a element>metadata</a> element of
+the topmost <a element>svg</a> element describing the map, consisting of an
+RDF description of the Coordinate Reference System definition used to
+generate the SVG map [[RDF-PRIMER]]. Note that
+the presence of this metadata does not affect the rendering of the SVG
+in any way; it merely provides added semantic value for applications
+that make use of combined maps.
+
+The definition must be conformant to the XML grammar described in
+<a href="http://portal.opengeospatial.org/files/?artifact_id=20509"><cite>GML 3.2.1</cite></a>,
+an OpenGIS Standard for encoding common CRS data types in XML
+[<a href='refs.html#ref-GML'>GML</a>]. In order to correctly map
+the 2-dimensional data used by SVG, the CRS must be of subtype
+<strong>ProjectedCRS</strong> or <strong>Geographic2dCRS</strong>. The
+first axis of the described CRS maps the SVG <var>x</var>-axis and the
+second axis maps the SVG <var>y</var>-axis.
+
+The main purpose of such metadata is to indicate to the user agent
+that two or more SVG documents can be overlayed or merged into a single
+document. Obviously, if two maps reference the same Coordinate Reference
+System definition and have the same SVG 'transform' property
+value then they can be overlayed without reprojecting the data. If
+the maps reference different Coordinate Reference Systems and/or have
+different SVG 'transform' property values, then a specialized
+cartographic user agent may choose to transform the coordinate data to
+overlay the data. However, typical SVG user agents are not required
+to perform these types of transformations, or even recognize the
+metadata. It is described in this specification so that the connection
+between geographic coordinate systems and the SVG coordinate system is
+clear.
+
+<h2 id="SVGGlobalTransformAttribute">The <span class="attr-name">'svg:transform'</span> attribute</h2>
+
+<div class="adef-list">
+ <p><em>Attribute definition:</em></p>
+ <dl>
+ <dt id="SVGGlobalTransformAttributeDefinition"><dfn>svg:transform</dfn> = <<transform-list>> | ''transform/none''</dt>
+ <dd>
+ <dl>
+ <dt><<transform-list>></dt>
+ <dd>
+ <p>Specifies the affine transformation that has been
+ applied to the map data. The syntax is identical to
+ that described for the 'transform' property.</p>
+ </dd>
+
+ <dt><span class="attr-value">none</span></dt>
+ <dd>
+ <p>Specifies that no supplemental affine transformation has been
+ applied to the map data. Using this value has the same meaning as
+ specifying the identity matrix, which in turn is just the same as
+ not specifying the <a>svg:transform</a> the attribute at all.</p>
+ </dd>
+ </dl>
+ <p class="anim-target">Animatable: no.</p>
+ </dd>
+ </dl>
+</div>
+
+This attribute describes an optional additional affine
+transformation that may have been applied during this
+mapping. This attribute may be added to the OpenGIS
+<em>CoordinateReferenceSystem</em> element. Note
+that, unlike the 'transform' property, it does not indicate that
+a transformation is to <em>be applied</em> to the data within the file.
+Instead, it simply describes the transformation that <em>was already
+applied</em> to the data when being encoded in SVG.
+
+There are three typical uses for the <a>svg:transform</a>
+global attribute. These are described below and used in the examples.
+
+<ul>
+ <li>Most ProjectedCRS have the north direction represented by
+ positive values of the second axis and conversely SVG has a
+ <var>y</var>-down coordinate system. That's why, in order to follow the
+ usual way to represent a map with the north at its top, it is
+ recommended for that kind of ProjectedCRS to use the
+ <a>svg:transform</a>
+ global attribute with a ''scale(1, -1)'' value as in the
+ third example below.</li>
+
+ <li>Most Geographic2dCRS have the latitude as their first
+ axis rather than the longitude, which means that the
+ south-north axis would be represented by the <var>x</var>-axis in SVG
+ instead of the usual <var>y</var>-axis. That's why, in order to follow
+ the usual way to represent a map with the north at its top,
+ it is recommended for that kind of Geographic2dCRS to use the
+ <a>svg:transform'</a>
+ global attribute with a ''rotate(-90)'' value as in the
+ first example (while also adding the ''scale(1, -1)'' as for
+ ProjectedCRS).</li>
+
+ <li>In addition, when converting for profiles which place
+ restrictions on precision of real number values, it may be
+ useful to add an additional scaling factor to retain good
+ precision for a specific area. When generating an SVG
+ document from WGS84 geographic coordinates (EPGS 4326), we
+ recommend the use of an additional 100 times scaling factor
+ corresponding to an <a>svg:transform</a>
+ global attribute with a ''rotate(-90) scale(100)''
+ value (shown in the second example).
+ Different scaling values may be required depending on the
+ particular CRS.</li>
+</ul>
+
+Below is a simple example of the coordinate metadata, which
+describes the coordinate system used by the document via a
+URI.
+
+<div class="example">
+ <pre><code class=html>
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ width="100" height="100" viewBox="0 0 1000 1000">
+
+ <desc>An example that references coordinate data.</desc>
+
+ <metadata>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:crs="http://www.ogc.org/crs"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <rdf:Description rdf:about="">
+ <!-- The Coordinate Reference System is described
+ through a URI. -->
+ <crs:CoordinateReferenceSystem
+ svg:transform="rotate(-90)"
+ rdf:resource="http://www.example.org/srs/epsg.xml#4326"/>
+ </rdf:Description>
+ </rdf:RDF>
+ </metadata>
+
+ <!-- The actual map content -->
+</svg>
+</code></pre>
+</div>
+
+The second example uses a well-known identifier to describe
+the coordinate system. Note that the coordinates used in the
+document have had the supplied transform applied.
+
+<div class="example">
+ <pre><code class=html>
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ width="100" height="100" viewBox="0 0 1000 1000">
+
+ <desc>Example using a well known coordinate system.</desc>
+
+ <metadata>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:crs="http://www.ogc.org/crs"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <rdf:Description rdf:about="">
+ <!-- In case of a well-known Coordinate Reference System
+ an 'Identifier' is enough to describe the CRS -->
+ <crs:CoordinateReferenceSystem svg:transform="rotate(-90) scale(100, 100)">
+ <crs:Identifier>
+ <crs:code>4326</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ </crs:CoordinateReferenceSystem>
+ </rdf:Description>
+ </rdf:RDF>
+ </metadata>
+
+ <!-- The actual map content -->
+</svg>
+ </code></pre>
+</div>
+
+The third example defines the coordinate system completely
+within the SVG document.
+
+<div class="example">
+ <pre><code class=html>
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ width="100" height="100" viewBox="0 0 1000 1000">
+
+ <desc>Coordinate metadata defined within the SVG document</desc>
+
+ <metadata>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:crs="http://www.ogc.org/crs"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <rdf:Description rdf:about="">
+ <!-- For other CRS it should be entirely defined -->
+ <crs:CoordinateReferenceSystem svg:transform="scale(1,-1)">
+ <crs:NameSet>
+ <crs:name>Mercator projection of WGS84</crs:name>
+ </crs:NameSet>
+ <crs:ProjectedCRS>
+ <!-- The actual definition of the CRS -->
+ <crs:CartesianCoordinateSystem>
+ <crs:dimension>2</crs:dimension>
+ <crs:CoordinateAxis>
+ <crs:axisDirection>north</crs:axisDirection>
+ <crs:AngularUnit>
+ <crs:Identifier>
+ <crs:code>9108</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ </crs:AngularUnit>
+ </crs:CoordinateAxis>
+ <crs:CoordinateAxis>
+ <crs:axisDirection>east</crs:axisDirection>
+ <crs:AngularUnit>
+ <crs:Identifier>
+ <crs:code>9108</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ </crs:AngularUnit>
+ </crs:CoordinateAxis>
+ </crs:CartesianCoordinateSystem>
+ <crs:CoordinateReferenceSystem>
+ <!-- the reference system of that projected system is
+ WGS84 which is EPSG 4326 in EPSG codeSpace -->
+ <crs:NameSet>
+ <crs:name>WGS 84</crs:name>
+ </crs:NameSet>
+ <crs:Identifier>
+ <crs:code>4326</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ </crs:CoordinateReferenceSystem>
+ <crs:CoordinateTransformationDefinition>
+ <crs:sourceDimensions>2</crs:sourceDimensions>
+ <crs:targetDimensions>2</crs:targetDimensions>
+ <crs:ParameterizedTransformation>
+ <crs:TransformationMethod>
+ <!-- the projection is a Mercator projection which is
+ EPSG 9805 in EPSG codeSpace -->
+ <crs:NameSet>
+ <crs:name>Mercator</crs:name>
+ </crs:NameSet>
+ <crs:Identifier>
+ <crs:code>9805</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ <crs:description>Mercator (2SP)</crs:description>
+ </crs:TransformationMethod>
+ <crs:Parameter>
+ <crs:NameSet>
+ <crs:name>Latitude of 1st standart parallel</crs:name>
+ </crs:NameSet>
+ <crs:Identifier>
+ <crs:code>8823</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ <crs:value>0</crs:value>
+ </crs:Parameter>
+ <crs:Parameter>
+ <crs:NameSet>
+ <crs:name>Longitude of natural origin</crs:name>
+ </crs:NameSet>
+ <crs:Identifier>
+ <crs:code>8802</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ <crs:value>0</crs:value>
+ </crs:Parameter>
+ <crs:Parameter>
+ <crs:NameSet>
+ <crs:name>False Easting</crs:name>
+ </crs:NameSet>
+ <crs:Identifier>
+ <crs:code>8806</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ <crs:value>0</crs:value>
+ </crs:Parameter>
+ <crs:Parameter>
+ <crs:NameSet>
+ <crs:name>False Northing</crs:name>
+ </crs:NameSet>
+ <crs:Identifier>
+ <crs:code>8807</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ <crs:value>0</crs:value>
+ </crs:Parameter>
+ </crs:ParameterizedTransformation>
+ </crs:CoordinateTransformationDefinition>
+ </crs:ProjectedCRS>
+ </crs:CoordinateReferenceSystem>
+ </rdf:Description>
+ </rdf:RDF>
+ </metadata>
+
+ <!-- the actual map content -->
+</svg>
+ </code></pre>
+</div>
\ No newline at end of file
diff --git a/specs/transform/Overview.html b/specs/transform/Overview.html
new file mode 100644
index 0000000..2510f34
--- /dev/null
+++ b/specs/transform/Overview.html
@@ -0,0 +1,681 @@
+<!doctype html>
+<html lang="en">
+ <head>
+
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
+
+ <title>svg:transform for mapping</title>
+
+
+ <link href="../default.css" rel="stylesheet" type="text/css">
+
+
+ <link href="https://www.w3.org/StyleSheets/TR/W3C-ED" rel="stylesheet" type="text/css">
+
+
+ <meta content="Bikeshed 1.0.0" name="generator">
+ </head>
+
+
+ <body class="h-entry">
+
+ <div class="head">
+
+ <p data-fill-with="logo"></p>
+
+ <h1 class="p-name no-ref" id="title">svg:transform for mapping</h1>
+
+ <h2 class="no-num no-toc no-ref heading settled" id="subtitle"><span class="content">Editor’s Draft,
+ <time class="dt-updated" datetime="2015-02-13">13 February 2015</time></span></h2>
+
+ <div data-fill-with="spec-metadata">
+ <dl>
+ <dt>This version:
+ <dd><a class="u-url" href="http://dev.w3.org/fxtf/motion-1/">http://dev.w3.org/fxtf/motion-1/</a>
+ <dt>Feedback:
+ <dd><span><a href="mailto:www-svg@w3.org?subject=%5Btransform-mapping%5D%20feedback">www-svg@w3.org</a> with subject line “<kbd>[transform-mapping] <var>… message topic …</var></kbd>†(<a href="http://lists.w3.org/Archives/Public/www-svg/" rel="discussion">archives</a>)</span>
+ <dt class="editor">Editor:
+ <dd class="editor">
+ <div class="p-author h-card vcard"><a class="p-name fn u-email email" href="mailto:sa-takagi@kddi.com">Satoru Takagi</a> (<span class="p-org org">KDDI Corporation</span>)</div>
+ </dl>
+ </div>
+
+ <div data-fill-with="warning"></div>
+
+ <p class="copyright" data-fill-with="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2015 <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>, <a href="http://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>, <a href="http://www.keio.ac.jp/">Keio</a>, <a href="http://ev.buaa.edu.cn/">Beihang</a>). W3C <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.
+</p>
+
+ <hr title="Separator for header">
+</div>
+
+
+ <h2 class="no-num no-toc no-ref heading settled" id="abstract"><span class="content">Abstract</span></h2>
+
+ <div class="p-summary" data-fill-with="abstract">
+ <p>This specification gives guidance how the SVG transform attribute in the SVG namespace can be used in other context than SVG.</p>
+
+</div>
+
+
+ <h2 class="no-num no-toc no-ref heading settled" id="status"><span class="content">Status of this document</span></h2>
+
+ <div data-fill-with="status">
+ <p>
+ <em>This section describes the status of this document at the time of
+ its publication. Other documents may supersede this document. A list of
+ current W3C publications and the latest revision of this technical report
+ can be found in the <a href="http://www.w3.org/TR/">W3C technical reports
+ index at http://www.w3.org/TR/.</a></em>
+
+</p>
+ <p>
+ This document is the 13 February 2015 <strong>Editor’s Draft</strong> of svg:transform for mapping.
+
+</p>
+ <p>
+ Comments on this Editor’s Draft are welcome. Comments can be sent to
+ <a href="mailto:www-svg@w3.org?Subject=%5Btransform-mapping%5D%20PUT%20SUBJECT%20HERE">www-svg@w3.org</a>,
+ the public email list for issues related to vector graphics on the Web. This list is
+ <a href="http://lists.w3.org/Archives/Public/www-svg/">archived</a> and senders must agree to have their message
+ publicly archived from their first posting. To subscribe send an email to
+ <a href="mailto:www-svg-request@w3.org?Subject=subscribe">www-svg-request@w3.org</a> with the word <code>subscribe</code>
+ in the subject line.
+
+</p>
+ <p>
+ This document has been produced by the <a href="http://www.w3.org/Graphics/SVG/WG">SVG Working Group</a> as part of the
+ <a href="http://www.w3.org/Graphics/Activity">Graphics Activity</a> within the
+ <a href="http://www.w3.org/Interaction/">W3C Interaction Domain</a>. The goals of the W3C SVG Working Group are discussed in the
+ <a href="http://www.w3.org/2007/11/SVG_rechartering/SVG-WG-charter.html">W3C SVG Charter</a>. The W3C SVG Working Group maintains a
+ public Web page, <a href="http://www.w3.org/Graphics/SVG/">http://www.w3.org/Graphics/SVG/</a>, that contains further
+ background information. The authors of this document are the SVG Working Group participants.
+
+</p>
+ <p>
+ This document was produced by a group operating under
+ the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 W3C Patent Policy</a>.
+ W3C maintains a <a href="http://www.w3.org/2004/01/pp-impl/19480/status" rel="disclosure">public list of any patent disclosures</a>
+ made in connection with the deliverables of each group;
+ these pages also includes instructions for disclosing a patent.
+ An individual who has actual knowledge of a patent which the individual believes contains
+ <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a>
+ must disclose the information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the W3C Patent Policy</a>.
+
+</p>
+ <p>
+ A list of current W3C Recommendations and other technical documents can be found at
+ <a href="http://www.w3.org/TR/">http://www.w3.org/TR/</a>. W3C publications may be updated, replaced, or
+ obsoleted by other documents at any time.
+</p></div>
+
+ <div data-fill-with="at-risk"></div>
+
+
+ <h2 class="no-num no-toc no-ref heading settled" id="contents"><span class="content">Table of contents</span></h2>
+
+ <div data-fill-with="table-of-contents" role="navigation">
+ <ul class="toc" role="directory">
+ <li><a href="#GeographicCoordinates"><span class="secno">1</span> <span class="content">Geographic coordinate systems</span></a>
+ <li><a href="#SVGGlobalTransformAttribute"><span class="secno">2</span> <span class="content">The <span class="attr-name">'svg:transform'</span> attribute</span></a>
+ <li><a href="#conformance"><span class="secno"></span> <span class="content">
+Conformance</span></a>
+ <ul class="toc">
+ <li><a href="#conventions"><span class="secno"></span> <span class="content">
+Document conventions</span></a>
+ <li><a href="#conformance-classes"><span class="secno"></span> <span class="content">
+Conformance classes</span></a>
+ <li><a href="#partial"><span class="secno"></span> <span class="content">
+Partial implementations</span></a>
+ <li><a href="#experimental"><span class="secno"></span> <span class="content">
+Experimental implementations</span></a>
+ <li><a href="#testing"><span class="secno"></span> <span class="content">
+Non-experimental implementations</span></a>
+ </ul>
+ <li><a href="#references"><span class="secno"></span> <span class="content">References</span></a>
+ <ul class="toc">
+ <li><a href="#normative"><span class="secno"></span> <span class="content">Normative References</span></a>
+ <li><a href="#informative"><span class="secno"></span> <span class="content">Informative References</span></a>
+ </ul>
+ <li><a href="#index"><span class="secno"></span> <span class="content">Index</span></a>
+ </ul></div>
+
+ <main>
+
+
+
+
+
+ <h2 class="heading settled" data-level="1" id="GeographicCoordinates"><span class="secno">1. </span><span class="content">Geographic coordinate systems</span><a class="self-link" href="#GeographicCoordinates"></a></h2>
+
+
+ <p>In order to allow interoperability between SVG content generators
+and user agents dealing with maps encoded in SVG, the use of a common
+metadata definition for describing the coordinate system used to
+generate SVG documents is encouraged.</p>
+
+
+ <p>Such metadata must be added under the <a data-link-type="element" href="https://svgwg.org/svg2-draft/metadata.html#elementdef-metadata">metadata</a> element of
+the topmost <a data-link-type="element" href="https://svgwg.org/svg2-draft/struct.html#NewDocument">svg</a> element describing the map, consisting of an
+RDF description of the Coordinate Reference System definition used to
+generate the SVG map <a data-link-type="biblio" href="#biblio-rdf-primer">[RDF-PRIMER]</a>. Note that
+the presence of this metadata does not affect the rendering of the SVG
+in any way; it merely provides added semantic value for applications
+that make use of combined maps.</p>
+
+
+ <p>The definition must be conformant to the XML grammar described in
+<a href="http://portal.opengeospatial.org/files/?artifact_id=20509"><cite>GML 3.2.1</cite></a>,
+an OpenGIS Standard for encoding common CRS data types in XML
+[<a href="refs.html#ref-GML">GML</a>]. In order to correctly map
+the 2-dimensional data used by SVG, the CRS must be of subtype
+<strong>ProjectedCRS</strong> or <strong>Geographic2dCRS</strong>. The
+first axis of the described CRS maps the SVG <var>x</var>-axis and the
+second axis maps the SVG <var>y</var>-axis.</p>
+
+
+ <p>The main purpose of such metadata is to indicate to the user agent
+that two or more SVG documents can be overlayed or merged into a single
+document. Obviously, if two maps reference the same Coordinate Reference
+System definition and have the same SVG <a class="property" data-link-type="propdesc" href="http://dev.w3.org/csswg/css-transforms-1/#propdef-transform">transform</a> property
+value then they can be overlayed without reprojecting the data. If
+the maps reference different Coordinate Reference Systems and/or have
+different SVG <a class="property" data-link-type="propdesc" href="http://dev.w3.org/csswg/css-transforms-1/#propdef-transform">transform</a> property values, then a specialized
+cartographic user agent may choose to transform the coordinate data to
+overlay the data. However, typical SVG user agents are not required
+to perform these types of transformations, or even recognize the
+metadata. It is described in this specification so that the connection
+between geographic coordinate systems and the SVG coordinate system is
+clear.</p>
+
+
+ <h2 class="heading settled" data-level="2" id="SVGGlobalTransformAttribute"><span class="secno">2. </span><span class="content">The <span class="attr-name">'svg:transform'</span> attribute</span><a class="self-link" href="#SVGGlobalTransformAttribute"></a></h2>
+
+
+ <div class="adef-list">
+
+ <p><em>Attribute definition:</em></p>
+
+ <dl>
+
+ <dt id="SVGGlobalTransformAttributeDefinition"><a class="self-link" href="#SVGGlobalTransformAttributeDefinition"></a><dfn data-dfn-type="dfn" data-noexport="" id="svgtransform">svg:transform<a class="self-link" href="#svgtransform"></a></dfn> = <a class="production css" data-link-type="type" href="http://dev.w3.org/csswg/css-transforms-1/#typedef-transform-list"><transform-list></a> | <span class="css">none</span>
+
+
+ <dd>
+
+ <dl>
+
+ <dt><a class="production css" data-link-type="type" href="http://dev.w3.org/csswg/css-transforms-1/#typedef-transform-list"><transform-list></a>
+
+
+ <dd>
+
+ <p>Specifies the affine transformation that has been
+ applied to the map data. The syntax is identical to
+ that described for the <a class="property" data-link-type="propdesc" href="http://dev.w3.org/csswg/css-transforms-1/#propdef-transform">transform</a> property.</p>
+
+
+
+
+
+ <dt><span class="attr-value">none</span>
+
+
+ <dd>
+
+ <p>Specifies that no supplemental affine transformation has been
+ applied to the map data. Using this value has the same meaning as
+ specifying the identity matrix, which in turn is just the same as
+ not specifying the <a data-link-type="dfn" href="#svgtransform">svg:transform</a> the attribute at all.</p>
+
+
+
+
+ </dl>
+
+
+ <p class="anim-target">Animatable: no.</p>
+
+
+
+
+ </dl>
+</div>
+
+
+ <p>This attribute describes an optional additional affine
+transformation that may have been applied during this
+mapping. This attribute may be added to the OpenGIS
+<em>CoordinateReferenceSystem</em> element. Note
+that, unlike the <a class="property" data-link-type="propdesc" href="http://dev.w3.org/csswg/css-transforms-1/#propdef-transform">transform</a> property, it does not indicate that
+a transformation is to <em>be applied</em> to the data within the file.
+Instead, it simply describes the transformation that <em>was already
+applied</em> to the data when being encoded in SVG.</p>
+
+
+ <p>There are three typical uses for the <a data-link-type="dfn" href="#svgtransform">svg:transform</a>
+global attribute. These are described below and used in the examples.</p>
+
+
+ <ul>
+
+ <li>Most ProjectedCRS have the north direction represented by
+ positive values of the second axis and conversely SVG has a
+ <var>y</var>-down coordinate system. That’s why, in order to follow the
+ usual way to represent a map with the north at its top, it is
+ recommended for that kind of ProjectedCRS to use the
+ <a data-link-type="dfn" href="#svgtransform">svg:transform</a>
+ global attribute with a <span class="css">scale(1, -1)</span> value as in the
+ third example below.
+
+
+ <li>Most Geographic2dCRS have the latitude as their first
+ axis rather than the longitude, which means that the
+ south-north axis would be represented by the <var>x</var>-axis in SVG
+ instead of the usual <var>y</var>-axis. That’s why, in order to follow
+ the usual way to represent a map with the north at its top,
+ it is recommended for that kind of Geographic2dCRS to use the
+ <a data-link-type="dfn" href="#svgtransform">svg:transform'</a>
+ global attribute with a <span class="css">rotate(-90)</span> value as in the
+ first example (while also adding the <span class="css">scale(1, -1)</span> as for
+ ProjectedCRS).
+
+
+ <li>In addition, when converting for profiles which place
+ restrictions on precision of real number values, it may be
+ useful to add an additional scaling factor to retain good
+ precision for a specific area. When generating an SVG
+ document from WGS84 geographic coordinates (EPGS 4326), we
+ recommend the use of an additional 100 times scaling factor
+ corresponding to an <a data-link-type="dfn" href="#svgtransform">svg:transform</a>
+ global attribute with a <span class="css">rotate(-90) scale(100)</span>
+ value (shown in the second example).
+ Different scaling values may be required depending on the
+ particular CRS.
+</ul>
+
+
+ <p>Below is a simple example of the coordinate metadata, which
+describes the coordinate system used by the document via a
+URI.</p>
+
+
+ <div class="example">
+
+ <pre><code class="html"><?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ width="100" height="100" viewBox="0 0 1000 1000">
+
+ <desc>An example that references coordinate data.</desc>
+
+ <metadata>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:crs="http://www.ogc.org/crs"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <rdf:Description rdf:about="">
+ <!-- The Coordinate Reference System is described
+ through a URI. -->
+ <crs:CoordinateReferenceSystem
+ svg:transform="rotate(-90)"
+ rdf:resource="http://www.example.org/srs/epsg.xml#4326"/>
+ </rdf:Description>
+ </rdf:RDF>
+ </metadata>
+
+ <!-- The actual map content -->
+</svg>
+</code></pre>
+</div>
+
+
+ <p>The second example uses a well-known identifier to describe
+the coordinate system. Note that the coordinates used in the
+document have had the supplied transform applied.</p>
+
+
+ <div class="example">
+
+ <pre><code class="html"><?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ width="100" height="100" viewBox="0 0 1000 1000">
+
+ <desc>Example using a well known coordinate system.</desc>
+
+ <metadata>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:crs="http://www.ogc.org/crs"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <rdf:Description rdf:about="">
+ <!-- In case of a well-known Coordinate Reference System
+ an 'Identifier' is enough to describe the CRS -->
+ <crs:CoordinateReferenceSystem svg:transform="rotate(-90) scale(100, 100)">
+ <crs:Identifier>
+ <crs:code>4326</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ </crs:CoordinateReferenceSystem>
+ </rdf:Description>
+ </rdf:RDF>
+ </metadata>
+
+ <!-- The actual map content -->
+</svg>
+</code></pre>
+</div>
+
+
+ <p>The third example defines the coordinate system completely
+within the SVG document.</p>
+
+
+ <div class="example">
+
+ <pre><code class="html"><?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+ width="100" height="100" viewBox="0 0 1000 1000">
+
+ <desc>Coordinate metadata defined within the SVG document</desc>
+
+ <metadata>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:crs="http://www.ogc.org/crs"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <rdf:Description rdf:about="">
+ <!-- For other CRS it should be entirely defined -->
+ <crs:CoordinateReferenceSystem svg:transform="scale(1,-1)">
+ <crs:NameSet>
+ <crs:name>Mercator projection of WGS84</crs:name>
+ </crs:NameSet>
+ <crs:ProjectedCRS>
+ <!-- The actual definition of the CRS -->
+ <crs:CartesianCoordinateSystem>
+ <crs:dimension>2</crs:dimension>
+ <crs:CoordinateAxis>
+ <crs:axisDirection>north</crs:axisDirection>
+ <crs:AngularUnit>
+ <crs:Identifier>
+ <crs:code>9108</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ </crs:AngularUnit>
+ </crs:CoordinateAxis>
+ <crs:CoordinateAxis>
+ <crs:axisDirection>east</crs:axisDirection>
+ <crs:AngularUnit>
+ <crs:Identifier>
+ <crs:code>9108</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ </crs:AngularUnit>
+ </crs:CoordinateAxis>
+ </crs:CartesianCoordinateSystem>
+ <crs:CoordinateReferenceSystem>
+ <!-- the reference system of that projected system is
+ WGS84 which is EPSG 4326 in EPSG codeSpace -->
+ <crs:NameSet>
+ <crs:name>WGS 84</crs:name>
+ </crs:NameSet>
+ <crs:Identifier>
+ <crs:code>4326</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ </crs:CoordinateReferenceSystem>
+ <crs:CoordinateTransformationDefinition>
+ <crs:sourceDimensions>2</crs:sourceDimensions>
+ <crs:targetDimensions>2</crs:targetDimensions>
+ <crs:ParameterizedTransformation>
+ <crs:TransformationMethod>
+ <!-- the projection is a Mercator projection which is
+ EPSG 9805 in EPSG codeSpace -->
+ <crs:NameSet>
+ <crs:name>Mercator</crs:name>
+ </crs:NameSet>
+ <crs:Identifier>
+ <crs:code>9805</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ <crs:description>Mercator (2SP)</crs:description>
+ </crs:TransformationMethod>
+ <crs:Parameter>
+ <crs:NameSet>
+ <crs:name>Latitude of 1st standart parallel</crs:name>
+ </crs:NameSet>
+ <crs:Identifier>
+ <crs:code>8823</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ <crs:value>0</crs:value>
+ </crs:Parameter>
+ <crs:Parameter>
+ <crs:NameSet>
+ <crs:name>Longitude of natural origin</crs:name>
+ </crs:NameSet>
+ <crs:Identifier>
+ <crs:code>8802</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ <crs:value>0</crs:value>
+ </crs:Parameter>
+ <crs:Parameter>
+ <crs:NameSet>
+ <crs:name>False Easting</crs:name>
+ </crs:NameSet>
+ <crs:Identifier>
+ <crs:code>8806</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ <crs:value>0</crs:value>
+ </crs:Parameter>
+ <crs:Parameter>
+ <crs:NameSet>
+ <crs:name>False Northing</crs:name>
+ </crs:NameSet>
+ <crs:Identifier>
+ <crs:code>8807</crs:code>
+ <crs:codeSpace>EPSG</crs:codeSpace>
+ <crs:edition>5.2</crs:edition>
+ </crs:Identifier>
+ <crs:value>0</crs:value>
+ </crs:Parameter>
+ </crs:ParameterizedTransformation>
+ </crs:CoordinateTransformationDefinition>
+ </crs:ProjectedCRS>
+ </crs:CoordinateReferenceSystem>
+ </rdf:Description>
+ </rdf:RDF>
+ </metadata>
+
+ <!-- the actual map content -->
+</svg>
+</code></pre>
+</div>
+</main>
+
+ <h2 class="no-ref no-num heading settled" id="conformance"><span class="content">
+Conformance</span><a class="self-link" href="#conformance"></a></h2>
+
+
+ <h3 class="no-ref heading settled" id="conventions"><span class="content">
+Document conventions</span><a class="self-link" href="#conventions"></a></h3>
+
+
+ <p>Conformance requirements are expressed with a combination of
+ descriptive assertions and RFC 2119 terminology. The key words "MUST",
+ "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT",
+ "RECOMMENDED", "MAY", and "OPTIONAL" in the normative parts of this
+ document are to be interpreted as described in RFC 2119.
+ However, for readability, these words do not appear in all uppercase
+ letters in this specification.
+
+ </p>
+ <p>All of the text of this specification is normative except sections
+ explicitly marked as non-normative, examples, and notes. <a data-link-type="biblio" href="#biblio-rfc2119">[RFC2119]</a></p>
+
+
+ <p>Examples in this specification are introduced with the words "for example"
+ or are set apart from the normative text with <code>class="example"</code>,
+ like this:
+
+ </p>
+ <div class="example">
+
+ <p>This is an example of an informative example.</p>
+
+
+ </div>
+
+
+ <p>Informative notes begin with the word "Note" and are set apart from the
+ normative text with <code>class="note"</code>, like this:
+
+ </p>
+ <p class="note" role="note">Note, this is an informative note.</p>
+
+
+ <p>Advisements are normative sections styled to evoke special attention and are
+ set apart from other normative text with <code><strong class="advisement"></code>, like
+ this:
+
+ <strong class="advisement">
+ UAs MUST provide an accessible alternative.
+ </strong>
+
+</p>
+ <h3 class="no-ref heading settled" id="conformance-classes"><span class="content">
+Conformance classes</span><a class="self-link" href="#conformance-classes"></a></h3>
+
+
+ <p>Conformance to this specification
+ is defined for three conformance classes:
+ </p>
+ <dl>
+
+ <dt>style sheet
+
+ <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#style-sheet">CSS
+ style sheet</a>.
+
+ <dt>renderer
+
+ <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#user-agent">UA</a>
+ that interprets the semantics of a style sheet and renders
+ documents that use them.
+
+ <dt>authoring tool
+
+ <dd>A <a href="http://www.w3.org/TR/CSS21/conform.html#user-agent">UA</a>
+ that writes a style sheet.
+
+ </dl>
+
+
+ <p>A style sheet is conformant to this specification
+ if all of its statements that use syntax defined in this module are valid
+ according to the generic CSS grammar and the individual grammars of each
+ feature defined in this module.
+
+ </p>
+ <p>A renderer is conformant to this specification
+ if, in addition to interpreting the style sheet as defined by the
+ appropriate specifications, it supports all the features defined
+ by this specification by parsing them correctly
+ and rendering the document accordingly. However, the inability of a
+ UA to correctly render a document due to limitations of the device
+ does not make the UA non-conformant. (For example, a UA is not
+ required to render color on a monochrome monitor.)
+
+ </p>
+ <p>An authoring tool is conformant to this specification
+ if it writes style sheets that are syntactically correct according to the
+ generic CSS grammar and the individual grammars of each feature in
+ this module, and meet all other conformance requirements of style sheets
+ as described in this module.
+
+</p>
+ <h3 class="no-ref heading settled" id="partial"><span class="content">
+Partial implementations</span><a class="self-link" href="#partial"></a></h3>
+
+
+ <p>So that authors can exploit the forward-compatible parsing rules to
+ assign fallback values, CSS renderers <strong>must</strong>
+ treat as invalid (and <a href="http://www.w3.org/TR/CSS21/conform.html#ignore">ignore
+ as appropriate</a>) any at-rules, properties, property values, keywords,
+ and other syntactic constructs for which they have no usable level of
+ support. In particular, user agents <strong>must not</strong> selectively
+ ignore unsupported component values and honor supported values in a single
+ multi-value property declaration: if any value is considered invalid
+ (as unsupported values must be), CSS requires that the entire declaration
+ be ignored.</p>
+
+
+ <h3 class="no-ref heading settled" id="experimental"><span class="content">
+Experimental implementations</span><a class="self-link" href="#experimental"></a></h3>
+
+
+ <p>To avoid clashes with future CSS features, the CSS2.1 specification
+ reserves a <a href="http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords">prefixed
+ syntax</a> for proprietary and experimental extensions to CSS.
+
+ </p>
+ <p>Prior to a specification reaching the Candidate Recommendation stage
+ in the W3C process, all implementations of a CSS feature are considered
+ experimental. The CSS Working Group recommends that implementations
+ use a vendor-prefixed syntax for such features, including those in
+ W3C Working Drafts. This avoids incompatibilities with future changes
+ in the draft.
+ </p>
+
+
+ <h3 class="no-ref heading settled" id="testing"><span class="content">
+Non-experimental implementations</span><a class="self-link" href="#testing"></a></h3>
+
+
+ <p>Once a specification reaches the Candidate Recommendation stage,
+ non-experimental implementations are possible, and implementors should
+ release an unprefixed implementation of any CR-level feature they
+ can demonstrate to be correctly implemented according to spec.
+
+ </p>
+ <p>To establish and maintain the interoperability of CSS across
+ implementations, the CSS Working Group requests that non-experimental
+ CSS renderers submit an implementation report (and, if necessary, the
+ testcases used for that implementation report) to the W3C before
+ releasing an unprefixed implementation of any CSS features. Testcases
+ submitted to W3C are subject to review and correction by the CSS
+ Working Group.
+
+ </p>
+ <p>Further information on submitting testcases and implementation reports
+ can be found from on the CSS Working Group’s website at
+ <a href="http://www.w3.org/Style/CSS/Test/">http://www.w3.org/Style/CSS/Test/</a>.
+ Questions should be directed to the
+ <a href="http://lists.w3.org/Archives/Public/public-css-testsuite">public-css-testsuite@w3.org</a>
+ mailing list.
+
+
+
+</p>
+ <h2 class="no-num heading settled" id="references"><span class="content">References</span><a class="self-link" href="#references"></a></h2>
+ <h3 class="no-num heading settled" id="normative"><span class="content">Normative References</span><a class="self-link" href="#normative"></a></h3>
+ <dl>
+ <dt id="biblio-rfc2119"><a class="self-link" href="#biblio-rfc2119"></a>[rfc2119]
+ <dd>S. Bradner. <a href="https://tools.ietf.org/html/rfc2119">Key words for use in RFCs to Indicate Requirement Levels</a>. March 1997. Best Current Practice. URL: <a href="https://tools.ietf.org/html/rfc2119">https://tools.ietf.org/html/rfc2119</a>
+ </dl>
+ <h3 class="no-num heading settled" id="informative"><span class="content">Informative References</span><a class="self-link" href="#informative"></a></h3>
+ <dl>
+ <dt id="biblio-rdf-primer"><a class="self-link" href="#biblio-rdf-primer"></a>[rdf-primer]
+ <dd>Frank Manola; Eric Miller. <a href="http://www.w3.org/TR/rdf-primer/">RDF Primer</a>. 10 February 2004. REC. URL: <a href="http://www.w3.org/TR/rdf-primer/">http://www.w3.org/TR/rdf-primer/</a>
+ </dl>
+ <h2 class="no-num heading settled" id="index"><span class="content">Index</span><a class="self-link" href="#index"></a></h2>
+ <ul class="indexlist">
+ <li>svg:transform, <a href="#svgtransform">2</a>
+ </ul></body>
+</html>
\ No newline at end of file
============================================================
/home/svgwg/bin/node "/home/svgwg/svgwg.org/git/svgwg/tools/publish/publish.js" --list-toc-pages
/home/svgwg/bin/node "/home/svgwg/svgwg.org/git/svgwg/tools/publish/publish.js" --list-nontoc-pages
/home/svgwg/bin/node "/home/svgwg/svgwg.org/git/svgwg/tools/publish/publish.js" --build Overview toc coords
/home/svgwg/bin/node "/home/svgwg/svgwg.org/git/svgwg/tools/publish/publish.js" --build-single-page
Received on Tuesday, 24 February 2015 10:53:27 UTC