IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SIG : Système d'information Géographique Discussion :

WMTS et coordonnées des tuiles


Sujet :

SIG : Système d'information Géographique

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut WMTS et coordonnées des tuiles
    Bonjour,

    Je rencontre des difficultés pour déterminer les coordonnées des tuiles WMTS (TileRow et TileCol) en fonction des paramètres du GetCapabilities.

    Je parviens bien à convertir un couple longitude/latitude (EPSG:4326) vers les coordonnées TileRow/TileCol pour le GéoPortail, OpenStreetMap, et bien d'autres.
    En revanche ma méthode ne marche pas pour certains services comme le serveur Norvégien KartVerket (http://opencache.statkart.no/gatekee...etcapabilities).

    Voilà comment je calcule les coordonnées TileRow/TileCol depuis un couple longitude/latitude. Celà fonctionne pour l'IGN mais pas pour le serveur Norvégien...
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    // Résolution en mètres par pixel (m/px) en fonction de l'échelle WMTS
    function get_resolution($scale)
    {
    	return 2.0 * M_PI * 6378137.0 / (pow(2, $scale) * 256.0);
    }
     
    // Latitude en degrés vers numéro de ligne WMTS
    function lat_to_tile($scale, $lat)
    {
    	$sin_lat = sin(deg2rad($lat));
    	$y_mercator = 0.5 * 6378137.0 * log((1.0 + $sin_lat)/(1.0 - $sin_lat));
    	return (20037508.0 - $y_mercator) / (get_resolution($scale) * 256.0);
    }
     
    // Longitude en degrés vers numéro de colonne WMTS
    function long_to_tile($scale, $long)
    {
    	$x_mercator = 6378137.0 * deg2rad($long);
    	return ($x_mercator + 20037508.0) / (get_resolution($scale) * 256.0);
    }
     
    $scale = 12;
    $row = round(lat_to_tile($scale, 45.0));
    $col = round(long_to_tile($scale, 2.0));

    Je pense que ça vient du système de projection utilisé et/ou des paramètres du TileMatrixSet (TopLeftCorner ? ScaleDenominator ?).

    Voilà un exemple de TileMatrix pour le serveur Norvégien, issu de son GetCapabilities :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        <TileMatrix>
          <ows:Identifier>EPSG:4326:15</ows:Identifier> <!-- Zoom 15 -->
          <ScaleDenominator>8530.918335399136</ScaleDenominator> <!-- Dois-je le prendre en compte ? -->
          <TopLeftCorner>90.0 -180.0</TopLeftCorner> <!-- Valeurs et système de projection différents d'IGN, à savoir "-20037508 20037508" -->
          <TileWidth>256</TileWidth>
          <TileHeight>256</TileHeight>
          <MatrixWidth>65536</MatrixWidth>
          <MatrixHeight>32768</MatrixHeight>
        </TileMatrix>

    Note : je parviens à afficher le flux WMTS du serveur Norvégien dans QGIS et je peux accéder à des tuiles via leurs URLs, comme par exemple : http://opencache.statkart.no/gatekee...0&TILECOL=4513
    Le problème est simplement que je ne sais pas calculer le TileRow/TileCol depuis des coordonnées longitude/latitude.

    J'ai pris en main Proj4 et tester de nombreuses manip mais je bloque

    Merci infiniment pour votre aide

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    J'ai trouvé une solution à mon problème : MapProxy !
    Superbe logiciel

    Exemple de fichier de config MapProxy, pour faire une re-projection d'un WMTS en EPSG:3006 vers un WMTS local en EPSG:3857 (Web Mercator) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    services:
      demo:
      tms:
        use_grid_names: false
        origin: 'nw'
    layers:
      - name: sweden
        title: sweden
        sources: [cache_sweden]
        tile_sources: [cache_sweden]
    caches:
      cache_sweden:
        sources: [cache_sweden_original]
        grids: [GLOBAL_WEBMERCATOR]
        cache:
          type: file
      cache_sweden_original:
        sources: [source_sweden]
        grids: [grid_sweden]
        cache:
          type: file
    sources:
      source_sweden:
        type: tile
        grid: grid_sweden   
        url: 'http://kso.etjanster.lantmateriet.se/karta/topowebb/v1/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=topowebb&STYLE=default&TILEMATRIXSET=3006&TILEMATRIX=%(z)s&TILEROW=%(y)s&TILECOL=%(x)s&FORMAT=image/png'
    grids:
      grid_sweden:
        srs: 'EPSG:3006'
        bbox: [-1200000, 4305696, 2994304, 8500000]
        origin: nw
        res: [
          #  res            level     scale @90.7 DPI
          4096.0000000000, #  0    14628571.42857143
          2048.0000000000, #  1     7314285.71428571
          1024.0000000000, #  2     3657142.85714286
           512.0000000000, #  3     1828571.42857143
           256.0000000000, #  4      914285.71428571
           128.0000000000, #  5      457142.85714286
            64.0000000000, #  6      228571.42857143
            32.0000000000, #  7      114285.71428571
            16.0000000000, #  8       57142.85714286
             8.0000000000, #  9       28571.42857143
             4.0000000000, #  10     14285.714285715
             2.0000000000, #  11     7142.8571428575
             1.0000000000, #  12    3571.42857142875
             0.5000000000  #  13   1785.714285714375
        ]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. résolution des tuiles WMTS
    Par rawalpundi dans le forum IGN API Géoportail
    Réponses: 12
    Dernier message: 06/11/2014, 09h55
  2. Réponses: 3
    Dernier message: 26/12/2007, 19h43
  3. Système de coordonné des figures
    Par cata2 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 03/09/2007, 22h36
  4. Coordonnées des points d'un cercle
    Par guidevelop dans le forum C
    Réponses: 2
    Dernier message: 23/11/2006, 09h28
  5. Extraire les coordonnées des triangles d'un X
    Par Rafy dans le forum DirectX
    Réponses: 4
    Dernier message: 08/06/2006, 17h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo