[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.htm>
More information about the MapServer-users
mailing list