2

I'm connecting to a WMS server and found that the longitudes LatLonBoundingBox specified for some of the values are slightly outside of the +/-180 range (such as 180.05). Are these values considered valid (I couldn't find anything in the schema that seemed to enforcer a range)?

If they are valid, should they be treated as rounding errors (maybe the values were auto generated) and clamped to +/-180, or should they be normalized in the +/-180 range, so 180.05 might become -179.95?

Also note that in this particular case, the parent layer's bounds are listed as -90/90 and -180/180.

Thanks.

alphabetasoup
  • 8,718
  • 4
  • 38
  • 78
Jeff Storey
  • 1,067
  • 1
  • 11
  • 17

1 Answers1

1

You need to distinguish between LatLonBoundingBox and BoundingBox,

The bounds of a BoundingBox are limited by the SRS definition, there's no need to restrict yourself to degrees.

The LatLonBoundingBox is intended as a guide for searches, there is no requirement for the LatLonBoundingBox to be a bounding box that accurately encompasses the data.

As you say the schema (well DTD) only defines the attributes for the LatLonBoundingBox and a hint to what the values should be like:

<!-- The LatLonBoundingBox attributes indicate the edges of the enclosing
rectangle in latitude/longitude decimal degrees (as in SRS EPSG:4326 [WGS1984 lat/lon]). -->

<!ELEMENT LatLonBoundingBox EMPTY>
<!ATTLIST LatLonBoundingBox 
      minx CDATA #REQUIRED
      miny CDATA #REQUIRED
      maxx CDATA #REQUIRED
      maxy CDATA #REQUIRED> 

We know that EPSG:4326 has defined bounds of -180 -90 +180 +90, so values of 180.05 aren't correct, but a parser wouldn't find an error.

With WMS 1.3.0 we get XML schema that more strictly constrain the values (the actual element names have changed but they serve the same purpose):

<element name="EX_GeographicBoundingBox">
<annotation>
<documentation>The EX_GeographicBoundingBox attributes indicate the limits of the enclosing rectangle in longitude and latitude decimal degrees.
</documentation>
</annotation>
<complexType>
<sequence>
<element name="westBoundLongitude" type="wms:longitudeType"/>
<element name="eastBoundLongitude" type="wms:longitudeType"/>
<element name="southBoundLatitude" type="wms:latitudeType"/>
<element name="northBoundLatitude" type="wms:latitudeType"/>
</sequence>
</complexType>
</element>



<simpleType name="longitudeType">
    <restriction base="double">
        <minInclusive value="-180"/>
        <maxInclusive value="180"/>
    </restriction>
</simpleType>
<simpleType name="latitudeType">
    <restriction base="double">
        <minInclusive value="-90"/>
        <maxInclusive value="90"/>
    </restriction>
</simpleType>
nmtoken
  • 13,355
  • 5
  • 38
  • 87