--{
--
-- INTERNAL FUNCTION
--- text _AsGMLNode(id, point, nsprefix, precision, options, idprefix)
+-- text _AsGMLNode(id, point, nsprefix, precision, options, idprefix, gmlver)
--
-- }{
CREATE OR REPLACE FUNCTION topology._AsGMLNode(int, geometry, text, int, int,
- text)
+ text, int)
RETURNS text
AS
$$
precision ALIAS FOR $4;
options ALIAS FOR $5;
idprefix ALIAS FOR $6;
+ gmlver ALIAS FOR $7;
gml text;
BEGIN
IF point IS NOT NULL THEN
gml = gml || '>'
|| '<' || nsprefix || 'pointProperty>'
- || ST_AsGML(3, point, precision, options, nsprefix_in)
+ || ST_AsGML(gmlver, point, precision, options, nsprefix_in)
|| '</' || nsprefix || 'pointProperty>'
|| '</' || nsprefix || 'Node>';
ELSE
END
$$
LANGUAGE 'plpgsql';
---} _AsGMLNode(id, point, nsprefix, precision, options, idprefix)
+--} _AsGMLNode(id, point, nsprefix, precision, options, idprefix, gmlVersion)
--{
--
-- INTERNAL FUNCTION
-- text _AsGMLEdge(edge_id, start_node, end_node, line, visitedTable,
--- nsprefix, precision, options, idprefix)
+-- nsprefix, precision, options, idprefix, gmlVersion)
--
-- }{
-CREATE OR REPLACE FUNCTION topology._AsGMLEdge(int, int, int, geometry, regclass, text, int, int, text)
+CREATE OR REPLACE FUNCTION topology._AsGMLEdge(int, int, int, geometry, regclass, text, int, int, text, int)
RETURNS text
AS
$$
precision ALIAS FOR $7;
options ALIAS FOR $8;
idprefix ALIAS FOR $9;
+ gmlver ALIAS FOR $10;
gml text;
BEGIN
IF visited IS NULL THEN
gml = gml || '>';
gml = gml || topology._AsGMLNode(start_node, NULL, nsprefix_in,
- precision, options, idprefix);
+ precision, options, idprefix, gmlver);
gml = gml || '</' || nsprefix || 'directedNode>';
END IF;
IF visited IS NULL THEN
gml = gml || '>';
gml = gml || topology._AsGMLNode(end_node, NULL, nsprefix_in,
- precision, options, idprefix);
+ precision, options, idprefix, gmlver);
gml = gml || '</' || nsprefix || 'directedNode>';
END IF;
IF line IS NOT NULL THEN
gml = gml || '<' || nsprefix || 'curveProperty>'
- || ST_AsGML(3, line, precision, options, nsprefix_in)
+ || ST_AsGML(gmlver, line, precision, options, nsprefix_in)
|| '</' || nsprefix || 'curveProperty>';
END IF;
END
$$
LANGUAGE 'plpgsql';
---} _AsGMLEdge(id, start_node, end_node, line, visitedTable, nsprefix, precision, options, idprefix)
+--} _AsGMLEdge(id, start_node, end_node, line, visitedTable, nsprefix, precision, options, idprefix, gmlver)
--{
--
-- API FUNCTION
--
--- text AsGML(TopoGeometry, nsprefix, precision, options, visitedTable, idprefix)
+-- text AsGML(TopoGeometry, nsprefix, precision, options, visitedTable, idprefix, gmlver)
--
-- }{
CREATE OR REPLACE FUNCTION topology.AsGML(topology.TopoGeometry,
- text, int, int, regclass, text)
+ text, int, int, regclass, text, int)
RETURNS text
AS
$$
visitedTable ALIAS FOR $5;
visited bool;
idprefix ALIAS FOR $6;
+ gmlver ALIAS FOR $7;
toponame text;
gml text;
sql text;
END IF;
END IF;
gml = gml || '>';
- gml = gml || topology._AsGMLNode(rec.element_id, rec.geom, nsprefix_in, precision, options, idprefix);
+ gml = gml || topology._AsGMLNode(rec.element_id, rec.geom, nsprefix_in, precision, options, idprefix, gmlver);
gml = gml || '</' || nsprefix || 'directedNode>';
END LOOP;
gml = gml || '</' || nsprefix || 'TopoPoint>';
rec2.end_node, rec2.geom,
visitedTable,
nsprefix_in, precision,
- options, idprefix);
+ options, idprefix, gmlver);
gml = gml || '</' || nsprefix || 'directedEdge>';
gml = gml || '>';
- gml = gml || topology._AsGMLEdge(rec2.edge_id,
- rec2.start_node,
+ gml = gml || topology._AsGMLEdge(rec2.edge_id, rec2.start_node,
rec2.end_node, rec2.geom,
- visitedTable,
- nsprefix_in,
- precision, options, idprefix);
+ visitedTable, nsprefix_in,
+ precision, options, idprefix, gmlver);
gml = gml || '</' || nsprefix || 'directedEdge>';
END LOOP;
END
$$
LANGUAGE 'plpgsql';
+--} AsGML(TopoGeometry, nsprefix, precision, options, visitedTable, idprefix, gmlver)
+
+--{
+--
+-- API FUNCTION
+--
+-- text AsGML(TopoGeometry, nsprefix, precision, options, visitedTable,
+-- idprefix)
+--
+-- }{
+CREATE OR REPLACE FUNCTION topology.AsGML(topology.TopoGeometry,
+ text, int, int, regclass, text)
+ RETURNS text
+AS
+$$
+ SELECT topology.AsGML($1, $2, $3, $4, $5, $6, 3);
+$$
+LANGUAGE 'sql';
--} AsGML(TopoGeometry, nsprefix, precision, options, visitedTable, idprefix)
--{
P2-visited|<TopoSurface><directedFace><Face><directedEdge orientation="-"><Edge id="E18"><directedNode orientation="-"><Node id="N10"/></directedNode><directedNode xlink:href="#N13" /><curveProperty><Curve srsName="EPSG:4326"><segments><LineStringSegment><posList>35 6 35 14</posList></LineStringSegment></segments></Curve></curveProperty></Edge></directedEdge><directedEdge orientation="-"><Edge id="E13"><directedNode orientation="-" xlink:href="#N9" /><directedNode xlink:href="#N10" /><curveProperty><Curve srsName="EPSG:4326"><segments><LineStringSegment><posList>21 6 35 6</posList></LineStringSegment></segments></Curve></curveProperty></Edge></directedEdge><directedEdge xlink:href="#E20" /><directedEdge xlink:href="#E19" /><directedEdge><Edge id="E7"><directedNode orientation="-" xlink:href="#N17" /><directedNode><Node id="N18"/></directedNode><curveProperty><Curve srsName="EPSG:4326"><segments><LineStringSegment><posList>21 22 35 22</posList></LineStringSegment></segments></Curve></curveProperty></Edge></directedEdge><directedEdge orientation="-"><Edge id="E17"><directedNode orientation="-" xlink:href="#N13" /><directedNode xlink:href="#N18" /><curveProperty><Curve srsName="EPSG:4326"><segments><LineStringSegment><posList>35 14 35 22</posList></LineStringSegment></segments></Curve></curveProperty></Edge></directedEdge></Face></directedFace></TopoSurface>
P1-visited|<TopoSurface><directedFace><Face><directedEdge orientation="-"><Edge id="E20"><directedNode orientation="-"><Node id="N9"/></directedNode><directedNode xlink:href="#N14" /><curveProperty><Curve srsName="EPSG:4326"><segments><LineStringSegment><posList>21 6 21 14</posList></LineStringSegment></segments></Curve></curveProperty></Edge></directedEdge><directedEdge orientation="-"><Edge id="E12"><directedNode orientation="-"><Node id="N8"/></directedNode><directedNode xlink:href="#N9" /><curveProperty><Curve srsName="EPSG:4326"><segments><LineStringSegment><posList>9 6 21 6</posList></LineStringSegment></segments></Curve></curveProperty></Edge></directedEdge><directedEdge><Edge id="E22"><directedNode orientation="-" xlink:href="#N8" /><directedNode xlink:href="#N15" /><curveProperty><Curve srsName="EPSG:4326"><segments><LineStringSegment><posList>9 6 9 14</posList></LineStringSegment></segments></Curve></curveProperty></Edge></directedEdge><directedEdge><Edge id="E21"><directedNode orientation="-" xlink:href="#N15" /><directedNode><Node id="N16"/></directedNode><curveProperty><Curve srsName="EPSG:4326"><segments><LineStringSegment><posList>9 14 9 22</posList></LineStringSegment></segments></Curve></curveProperty></Edge></directedEdge><directedEdge><Edge id="E6"><directedNode orientation="-" xlink:href="#N16" /><directedNode><Node id="N17"/></directedNode><curveProperty><Curve srsName="EPSG:4326"><segments><LineStringSegment><posList>9 22 21 22</posList></LineStringSegment></segments></Curve></curveProperty></Edge></directedEdge><directedEdge orientation="-"><Edge id="E19"><directedNode orientation="-" xlink:href="#N14" /><directedNode xlink:href="#N17" /><curveProperty><Curve srsName="EPSG:4326"><segments><LineStringSegment><posList>21 14 21 22</posList></LineStringSegment></segments></Curve></curveProperty></Edge></directedEdge></Face></directedFace></TopoSurface>
P3-visited-idprefix|<TopoSurface><directedFace><Face><directedEdge orientation="-"><Edge id="cd-E16"><directedNode orientation="-"><Node id="cd-N11"/></directedNode><directedNode><Node id="cd-N12"/></directedNode><curveProperty><Curve srsName="EPSG:4326"><segments><LineStringSegment><posList>47 6 47 14</posList></LineStringSegment></segments></Curve></curveProperty></Edge></directedEdge><directedEdge orientation="-"><Edge id="cd-E14"><directedNode orientation="-" xlink:href="#cd-N10" /><directedNode xlink:href="#cd-N11" /><curveProperty><Curve srsName="EPSG:4326"><segments><LineStringSegment><posList>35 6 47 6</posList></LineStringSegment></segments></Curve></curveProperty></Edge></directedEdge><directedEdge xlink:href="#cd-E18" /><directedEdge xlink:href="#cd-E17" /><directedEdge><Edge id="cd-E8"><directedNode orientation="-" xlink:href="#cd-N18" /><directedNode><Node id="cd-N19"/></directedNode><curveProperty><Curve srsName="EPSG:4326"><segments><LineStringSegment><posList>35 22 47 22</posList></LineStringSegment></segments></Curve></curveProperty></Edge></directedEdge><directedEdge orientation="-"><Edge id="cd-E15"><directedNode orientation="-" xlink:href="#cd-N12" /><directedNode xlink:href="#cd-N19" /><curveProperty><Curve srsName="EPSG:4326"><segments><LineStringSegment><posList>47 14 47 22</posList></LineStringSegment></segments></Curve></curveProperty></Edge></directedEdge></Face></directedFace></TopoSurface>
+R1-gml2|<TopoCurve><directedEdge><Edge id="E9"><directedNode orientation="-"><Node id="N15"/></directedNode><directedNode><Node id="N14"/></directedNode><curveProperty><LineString srsName="EPSG:4326"><coordinates>9,14 21,14</coordinates></LineString></curveProperty></Edge></directedEdge><directedEdge orientation="-"><Edge id="E10"><directedNode orientation="-"><Node id="N13"/></directedNode><directedNode><Node id="N14"/></directedNode><curveProperty><LineString srsName="EPSG:4326"><coordinates>35,14 21,14</coordinates></LineString></curveProperty></Edge></directedEdge></TopoCurve>
+R2-gml2|<TopoCurve><directedEdge><Edge id="E4"><directedNode orientation="-"><Node id="N5"/></directedNode><directedNode><Node id="N6"/></directedNode><curveProperty><LineString srsName="EPSG:4326"><coordinates>36,38 38,35 41,34 42,33 45,32 47,28 50,28 52,32 57,33</coordinates></LineString></curveProperty></Edge></directedEdge><directedEdge orientation="-"><Edge id="E5"><directedNode orientation="-"><Node id="N7"/></directedNode><directedNode><Node id="N6"/></directedNode><curveProperty><LineString srsName="EPSG:4326"><coordinates>41,40 45,40 47,42 62,41 61,38 59,39 57,36 57,33</coordinates></LineString></curveProperty></Edge></directedEdge></TopoCurve>
+R3-gml2|<TopoCurve><directedEdge><Edge id="E25"><directedNode orientation="-"><Node id="N21"/></directedNode><directedNode><Node id="N22"/></directedNode><curveProperty><LineString srsName="EPSG:4326"><coordinates>9,35 13,35</coordinates></LineString></curveProperty></Edge></directedEdge></TopoCurve>
+R4-gml2|<TopoCurve><directedEdge><Edge id="E3"><directedNode orientation="-"><Node id="N2"/></directedNode><directedNode><Node id="N3"/></directedNode><curveProperty><LineString srsName="EPSG:4326"><coordinates>25,30 25,35</coordinates></LineString></curveProperty></Edge></directedEdge></TopoCurve>
+S1-gml2|<TopoPoint><directedNode><Node id="N14"><pointProperty><Point srsName="EPSG:4326"><coordinates>21,14</coordinates></Point></pointProperty></Node></directedNode></TopoPoint>
+S2-gml2|<TopoPoint><directedNode><Node id="N13"><pointProperty><Point srsName="EPSG:4326"><coordinates>35,14</coordinates></Point></pointProperty></Node></directedNode></TopoPoint>
+S3-gml2|<TopoPoint><directedNode><Node id="N6"><pointProperty><Point srsName="EPSG:4326"><coordinates>57,33</coordinates></Point></pointProperty></Node></directedNode></TopoPoint>
+S4-gml2|<TopoPoint><directedNode><Node id="N4"><pointProperty><Point srsName="EPSG:4326"><coordinates>20,37</coordinates></Point></pointProperty></Node></directedNode></TopoPoint>
Topology 'city_data' dropped