Bien que les APIs minimum, standard et avancée gèrent l'accès au cache du Géoportail, il peut être nécessaire d'y accéder par des moyens autres.
Ce chapitre ne couvre pas la gestion de l'accès via la GéoDRM au service WMS-C du Géoportail.
Le cache du Géoportail est une pyramide d'images par territoire couvert dont les résolutions ont été données plus avant. Chaque niveau de la pyramide contient des tuiles de 256 par 256 pixels. L'origine de chaque niveau est le (0, 0) de la projection GEOPORTALxxx pour les petites et grandes échelles (xxx étant le code du territoire couvert par le cache, Cf. API et territoires) ou MILLER pour les très petites échelles.
Une requête WMS-C n'est qu'une requête WMS pour laquelle l'emprise des données demandées DOIT être exactement celle d'une tuile quelconque dans la pyramide. De plus, la requête doit avoir un paramètre TILED=true.
Il faut d'abord convertir les coordonnées dans le système de projection cible (GEOPORTALxxx pour les petites à grandes échelles, MILLER au très petites échelles). Il est possible d'utiliser le logiciel cs2cs de la bibliothèque PROJ.4 ou l'API Géoportail qui repose sur le portage en Javascript de PROJ.4, PROJ4JS. Le code source de ces bibliothèques fournit les algorithmes utilisés pour ces projections et, par conséquent, réutilisable dans d'autres langages de programmation.
Les coordonnées initiales sont, par exemple : 2°28'44.1", 48°48'20.3" en degrés sexagésimaux, soit 2.478917, 48.805639 en degrés décimaux.
Les coordonnées en IGNF:GEOPORTALFXX sont (189952.67, 5433018.88) :
$ cs2cs -f "%.2f" +init=epsg:4326 +to +init=IGNF:GEOPORTALFXX 2.478917 48.805639 189952.67 5433018.88 -0.00
Les coordonnées en IGNF:MILLER sont (275951.78, 5910061.78) :
$ cs2cs -f "%.2f" +init=epsg:4326 +to +init=IGNF:MILLER 2.478917 48.805639 275951.78 5910061.78 0.00
Si l'installation de PROJ.4 n'est pas possible, il est possible d'utiliser la formule simplifiée suivante pour la projection GEOPORTALxxx (lon étant la longitude en radians, lat étant la latitude en radians) :
X= Kx * lon Y= Ky * lat
Sachant que chaque territoire a des paramètres propres à la projection GEOPORTALxxx, on obtient les valeurs de Kx, Ky :
| Code territoire | Kx | Ky |
|---|---|---|
| ANF | 6160807.2519099 | 6378137.0000000 |
| ASP | 5026040.5439769 | 6378137.0000000 |
| CRZ | 4430626.2549842 | 6378137.0000000 |
| FXX | 4390419.7883516 | 6378137.0000000 |
| GUF | 6362600.1788320 | 6378137.0000000 |
| KER | 4142268.6266325 | 6378137.0000000 |
| MYT | 6238759.4037015 | 6378137.0000000 |
| NCL | 5913705.6486150 | 6378137.0000000 |
| PYF | 6160807.2519099 | 6378137.0000000 |
| REU | 5954503.8607176 | 6378137.0000000 |
| SPM | 4349878.9742539 | 6378137.0000000 |
| WLF | 6188679.0727028 | 6378137.0000000 |
Dans le cas de la projection MILLER, la formule est la suivante (lon étant la longitude en radians, lat étant la latitude en radians) :
X= 6378137.0000000 * lon Y= 6378137.0000000 * log(tan(pi/4 + lat * .4)) * 1.25
Le cas spécial de la projection TERA50STEREO peut se ramener aux formules suivantes (lon étant la longitude en radians, lat étant la latitude en radians) :
X'= 1.9140939076700438*tan( 0.5*(pi/2 - lat) )/( ( (1.0+0.08199188997902919*sin(lat)) / (1.0-0.08199188997902919*sin(lat)) )^0.040995944989514595 ) X= (X' * sin(lon-2.443460952792061))*6378388.0 + 300000.0 Y= (X' * cos(lon-2.443460952792061))*6378388.0 - 2299363.482
Pour trouver la dalle recouvrant ce point à l'échelle 1/2000ième (1 pixel vaut 0.50 m x 0.50 m), il suffit de trouver le coin inférieur gauche de cette dalle sachant qu'une dalle fait 256 pixels par 256 pixels :
L'emprise de la tuile cherchée en résolution 0.50 mètres est donc :
(189952, 5432960), (190080, 5433088)
Le même raisonnement s'applique à la résolution Monde (échelle 1/156 543 000) :
soit au final :
(0, 0), (10018752, 10018752)
Elles sont définies là.
http://wxs.ign.fr/geoportail/wmsc?LAYERS=ORTHOIMAGERY.ORTHOPHOTOS& EXCEPTIONS=text/xml&FORMAT=image/jpeg& SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=& SRS=IGNF:GEOPORTALFXX&BBOX=189952,5432960,190080,5433088& WIDTH=256&HEIGHT=256&TILED=true&
http://wxs.ign.fr/geoportail/wmsc?LAYERS=GEOGRAPHICALGRIDSYSTEMS.MAPS& EXCEPTIONS=text/xml&FORMAT=image/jpeg& SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=& SRS=IGNF:MILLER&BBOX=0,0,10018752,10018752& WIDTH=256&HEIGHT=256&TILED=true&