Reuse GML pos reader -- something looks not quite right here, but it does work

This commit is contained in:
Christopher Eykamp
2013-01-02 14:21:30 +01:00
parent 37fd98bb03
commit b15c751808
2 changed files with 19 additions and 42 deletions
+14 -38
View File
@@ -147,51 +147,27 @@ OpenLayers.Format.WCSCapabilities.v1_0_0 = OpenLayers.Class(
"label": function(node, coverageOfferingBrief) { "label": function(node, coverageOfferingBrief) {
coverageOfferingBrief.label = this.getChildValue(node); coverageOfferingBrief.label = this.getChildValue(node);
}, },
// "lonLatEnvelope": function(node, coverageOfferingBrief) {
// debugger
// var bbox = OpenLayers.Format.GML.v3.prototype.readers["gml"].pos.apply(this, [node, coverageOfferingBrief]);
// bbox.srs = node.getAttribute("srsName");
// coverageOfferingBrief.lonLatEnvelope[bbox.srs] = bbox;
// },
"lonLatEnvelope": function(node, coverageOfferingBrief) { "lonLatEnvelope": function(node, coverageOfferingBrief) {
// Look for <gml:pos>. Only write the data if everything parsed neatly.
// This works well for the data samples I have access to, but may need to be generalized to cover other possible use cases.
var nodeList = this.getElementsByTagNameNS(node, "http://www.opengis.net/gml", "pos"); var nodeList = this.getElementsByTagNameNS(node, "http://www.opengis.net/gml", "pos");
// We expect two nodes here, to create the corners of a bounding box // We expect two nodes here, to create the corners of a bounding box
if(nodeList.length == 2) { if(nodeList.length == 2) {
var min = {}, var min = {};
max = {}; var max = {};
var ok = true; OpenLayers.Format.GML.v3.prototype.readers["gml"].pos.apply(this, [nodeList[0], min]);
OpenLayers.Format.GML.v3.prototype.readers["gml"].pos.apply(this, [nodeList[1], max]);
// min coverageOfferingBrief.lonLatEnvelope = {};
var coordString = nodeList[0].firstChild.nodeValue; coverageOfferingBrief.lonLatEnvelope.srsName = node.getAttribute("srsName");
coverageOfferingBrief.lonLatEnvelope.min = min.points[0];
coordString = coordString.replace(this.regExes.trimSpace, ""); coverageOfferingBrief.lonLatEnvelope.max = max.points[0];
var coords = coordString.split(this.regExes.splitSpace);
if(coords.length == 2) {
min.lon = coords[0];
min.lat = coords[1];
} else {
ok = false;
}
// max
var coordString = nodeList[1].firstChild.nodeValue;
coordString = coordString.replace(this.regExes.trimSpace, "");
var coords = coordString.split(this.regExes.splitSpace);
if(coords.length == 2) {
max.lon = coords[0];
max.lat = coords[1];
} else {
ok = false;
}
if(ok) {
coverageOfferingBrief.lonLatEnvelope = {};
coverageOfferingBrief.lonLatEnvelope.srsName = node.getAttribute("srsName");
coverageOfferingBrief.lonLatEnvelope.min = min;
coverageOfferingBrief.lonLatEnvelope.max = max;
}
} }
}, },
}, OpenLayers.Format.WCSCapabilities.v1.prototype.readers["wcs"]) }, OpenLayers.Format.WCSCapabilities.v1.prototype.readers["wcs"])
+5 -4
View File
@@ -51,12 +51,13 @@
t.eq(responsibleParty.contactInfo.phone.voice, "6463320", "Service>responsibleParty>ContactInfo>Phone>Voice correctly parsed"); t.eq(responsibleParty.contactInfo.phone.voice, "6463320", "Service>responsibleParty>ContactInfo>Phone>Voice correctly parsed");
var metadata = res.contentMetadata[0]; var metadata = res.contentMetadata[0];
t.eq(metadata.name, "ro_dsm", "ContentMetadata>Name correctly parsed"); t.eq(metadata.name, "ro_dsm", "ContentMetadata>Name correctly parsed");
t.eq(metadata.label, "Rotterdam DSM", "ContentMetadata>Label correctly parsed"); t.eq(metadata.label, "Rotterdam DSM", "ContentMetadata>Label correctly parsed");
t.eq(metadata.lonLatEnvelope.min.lat, "51.515151", "ContentMetadata>lonLatEnvelope>Min>Lat correctly parsed"); t.eq(metadata.lonLatEnvelope.min.x, 51.515151, "ContentMetadata>lonLatEnvelope>Min>Lat correctly parsed");
t.eq(metadata.lonLatEnvelope.min.lon, "4.44444", "ContentMetadata>lonLatEnvelope>Min>Lon correctly parsed"); t.eq(metadata.lonLatEnvelope.min.y, 4.44444, "ContentMetadata>lonLatEnvelope>Min>Lon correctly parsed");
t.eq(metadata.lonLatEnvelope.max.lat, "52.525252", "ContentMetadata>lonLatEnvelope>Max>Lat correctly parsed"); t.eq(metadata.lonLatEnvelope.max.x, 52.525252, "ContentMetadata>lonLatEnvelope>Max>Lat correctly parsed");
t.eq(metadata.lonLatEnvelope.max.lon, "5.55555", "ContentMetadata>lonLatEnvelope>Max>Lon correctly parsed"); t.eq(metadata.lonLatEnvelope.max.y, 5.55555, "ContentMetadata>lonLatEnvelope>Max>Lon correctly parsed");
t.eq(metadata.lonLatEnvelope.srsName, "urn:ogc:def:crs:OGC:1.3:CRS84", "ContentMetadata>lonLatEnvelope>SrsName correctly parsed"); t.eq(metadata.lonLatEnvelope.srsName, "urn:ogc:def:crs:OGC:1.3:CRS84", "ContentMetadata>lonLatEnvelope>SrsName correctly parsed");
t.eq(res.contentMetadata.length, 4, "Correct number of metadata records found"); t.eq(res.contentMetadata.length, 4, "Correct number of metadata records found");