[mapserver-users] MapCache and the GoogleCRS84Quad TileMatrixSet

thomas bonfort thomas.bonfort at gmail.com
Wed Apr 10 12:59:14 PDT 2013


On 10 April 2013 21:35, Armin Burger <armin.burger at gmx.net> wrote:

> Thomas
>
> thanks for the clarifications.
>
> I tried to define a grid that could fit those OGS specs with the following
> parameters:
>
>  <grid name="OGCWGS84">
>       <metadata>
>          <title>OGCCRS84Quad</title> <WellKnownScaleSet>urn:ogc:**
> def:wkss:OGC:1.0:OGCCRS84Quad<**/WellKnownScaleSet>
>       </metadata>
>       <extent>-180 -180 180 180</extent>
>       <srs>EPSG:4326</srs>
>       <units>dd</units>
>       <size>256 256</size>
>       <resolutions>1.40625000000000 0.703125000000000 0.351562500000000
> 0.175781250000000 8.78906250000000e-2 4.394531
> 25000000e-2 2.19726562500000e-2 1.09863281250000e-2 5.49316406250000e-3
> 2.74658203125000e-3 1.37329101562500e-3 6.8664
> 5507812500e-4 3.43322753906250e-4 1.71661376953125e-4 8.58306884765625e-5
> 4.29153442382812e-5 2.14576721191406e-5 1.07
> 288360595703e-5 5.36441802978516e-6</**resolutions>
>    </grid>
>
> For me the capability output looks correct, and the tile level 0 is the
> whole world in 1 single tile, with upper and lower quarter left blank. I
> guess that's what the specs want it to be and so it should be possible to
> satisfy this strange definition if required.
>

If that grid definition is the correct one for the GoogleCRS84Quad then
fine. However I feel this definition is still very strange, as clients have
to know that they should not request tiles with row 0 and 3 for level 2,
 rows 0,1,6 and 7 for level 3, rows 0,1,2,3,12,13,14,15 for level 4, etc...
(i.e. these tiles are all fully over 90 degrees north or under -90 degrees
south.


>
>
> I guess that the MapCache definition of the "GoogleCRS84Quad" corresponds
> to what the European INSPIRE initiative defines as "InspireCRS84Quad" in
> the document
>
> http://inspire.jrc.ec.europa.**eu/documents/Network_Services/**
> TechnicalGuidance_**ViewServices_v3.1.pdf<http://inspire.jrc.ec.europa.eu/documents/Network_Services/TechnicalGuidance_ViewServices_v3.1.pdf>
>
> It states:
> "The level 0 of InspireCRS84Quad is the level 1 of GoogleCRS84Quad. This
> level has been discarded because Level 0 of GoogleCRS84Quad allows
> representing the whole world in a single 256x256 pixels where the first 64
> and last 64 lines of the tile are left blank. To avoid this situation the
> level 0 of InspireCRS84Quad is composed of two tiles representing exactly
> the whole world."
>

Yes, that is the exact definition of what mapcache is using for the "WGS84"
grid. However I think the inspire phrase "The level 0 of InspireCRS84Quad
is the level 1 of GoogleCRS84Quad" is not exact, as level 1 in
GoogleCRS84Quad is 2x2 tiles whereas InspireCRS84Quad's level 0 is 2x1
tiles.


>
> They do not add the full XML description, however.
>
> Best regards
> Armin
>
>
>
> On 04/10/2013 05:50 PM, thomas bonfort wrote:
>
>> Armin,
>> I don't have much to add to what you have already found out. I
>> personally consider the GoogleCRS84Quad grid as defined by the spec to
>> be broken, and have not implemented its support as it would require some
>> specific hacks in the code (as the extent for level 0 needs to be
>> hardcoded for this specific grid, instead of it being derived from grid
>> properties as is the case with all other grid definitions).
>>
>> I suppose that support for this could be added if you really need it
>> badly. The impact is not negligible as all places where an extent is
>> derived from a tile coordinate and vice-versa would need to be updated
>> to support this illogical quirk.
>>
>> FWIW, I believe I had brought this up as a change request to the wmts
>> working group, but this was ignored as I am not a member.
>>
>> best regards,
>>
>> thomas
>>
>>
>> On 9 April 2013 20:57, Armin Burger <armin.burger at gmx.net
>> <mailto:armin.burger at gmx.net>> wrote:
>>
>>     Dear all
>>
>>     I have a question regarding the GoogleCRS84Quad TileMatrixSet
>>     defined in MapCache. MapCache specifies this in the docs with the
>>     first level [0] as pixel resolution 0.70312500 deg, and an extent of
>>        <extent>-180 -90 180 90</extent>
>>
>>     and returns the GoogleCRS84Quad TileMatrixSet in the Capabilities
>>     response like
>>
>>     <TileMatrixSet>
>>        <Identifier>WGS84</Identifier>
>>        <Title>GoogleCRS84Quad</Title>
>>        <SupportedCRS>urn:ogc:def:crs:**__EPSG:6.3:4326</SupportedCRS>
>>        <BoundingBox crs="urn:ogc:def:crs:EPSG:6.3:**__4326">
>>
>>          <LowerCorner>-180.000000 -90.000000</LowerCorner>
>>          <UpperCorner>180.000000 90.000000</UpperCorner>
>>        </BoundingBox>
>>
>>     <WellKnownScaleSet>urn:ogc:__**def:wkss:OGC:1.0:__**
>> GoogleCRS84Quad</__**WellKnownScaleSet>
>>        <TileMatrix>
>>          <Identifier>0</Identifier>
>>
>>     <ScaleDenominator>279541132.__**01435887813568115234</__**
>> ScaleDenominator>
>>
>>          <TopLeftCorner>90.000000 -180.000000</TopLeftCorner>
>>          <TileWidth>256</TileWidth>
>>          <TileHeight>256</TileHeight>
>>          <MatrixWidth>2</MatrixWidth>
>>          <MatrixHeight>1</MatrixHeight>
>>        </TileMatrix>
>>        .....
>>     </TileMatrixSet>
>>
>>     This looks clear and logical, but the OGC specs at
>>     http://portal.opengeospatial._**_org/files/?artifact_id=35326
>>
>>     <http://portal.opengeospatial.**org/files/?artifact_id=35326<http://portal.opengeospatial.org/files/?artifact_id=35326>
>> >
>>     define this TileMatrixSet differently as
>>
>>     "E.3 GoogleCRS84Quad (urn:ogc:def:wkss:OGC:1.0:__**GoogleCRS84Quad)
>>
>>     This well-known scale set has been defined to allow quadtree
>>     pyramids in CRS84. Level 0 allows representing the whole world in a
>>     single 256x256 pixels (where the first 64 and last 64 lines of the
>>     tile are left blank). The next level represents the whole world in 2x2
>>     tiles of 256x256 pixels and so on in powers of 2. Scale denominator
>>     is only accurate near the equator."
>>
>>     The level 0 in the OGC specs uses a resolution of 1.40625000.
>>
>>     The tile 0/0/0 in MapCache is not a single tile as in the OGC specs
>>     but the first out of 2 tiles for this level, correctly defined with
>>     MatrixWidth 2 and MatrixHeight 1 (level 1 has 4x2 tiles). For me the
>>     OGC specs are not logical, because the TopLeft corner would
>>     correspond to 180 -180 degrees which makes no sense for me, but
>>     somehow they are regarded as the default specs...
>>
>>     So the XML definition of the OGC specs should probably result in
>>     something like
>>
>>        <TileMatrix>
>>          <Identifier>0</Identifier>
>>          <ScaleDenominator>559082264.__**0287178</ScaleDenominator>
>>
>>          <TopLeftCorner>180.000000 -180.000000</TopLeftCorner>
>>          <TileWidth>256</TileWidth>
>>          <TileHeight>256</TileHeight>
>>          <MatrixWidth>1</MatrixWidth>
>>          <MatrixHeight>1</MatrixHeight>
>>        </TileMatrix>
>>
>>     Unfortunately the OGC doc does not provide this matrix set's full
>>     definition in XML to check this.
>>
>>
>>     So I'm wondering which is the correct definition? And any idea how
>>     to deal with this discrepancy?
>>
>>     Thanks
>>     Armin
>>
>>
>>
>>
>>
>>
>>     ______________________________**___________________
>>     mapserver-users mailing list
>>     mapserver-users at lists.osgeo.__**org
>>     <mailto:mapserver-users at lists.**osgeo.org<mapserver-users at lists.osgeo.org>
>> >
>>     http://lists.osgeo.org/__**mailman/listinfo/mapserver-__**users<http://lists.osgeo.org/__mailman/listinfo/mapserver-__users>
>>     <http://lists.osgeo.org/**mailman/listinfo/mapserver-**users<http://lists.osgeo.org/mailman/listinfo/mapserver-users>
>> >
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20130410/267bebff/attachment-0001.html>


More information about the mapserver-users mailing list