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

IGN API Géoportail Discussion :

[iOS] Problème récupération de tuiles


Sujet :

IGN API Géoportail

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur iOS
    Inscrit en
    Août 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur iOS

    Informations forums :
    Inscription : Août 2012
    Messages : 10
    Points : 3
    Points
    3
    Par défaut [iOS] Problème récupération de tuiles
    Bonjour à tous!

    Je suis actuellement en train de tester les possibilités offertes par l'API d'IGN dans le cadre de l'affichage de plans cadastraux pour une application iOS mais je rencontre un problème :
    - Je me suis inscrit sur le site de l'IGN pour obtenir une clé de développement (en sélectionnant bien le user agent iOS);
    - J'ai ensuite crée une application de test dans laquelle je cherche à récupérer les images tuilées correspondant à une adresse donnée, j'ai donc pour cela l'url suivante : http://gpp3-wxs.ign.fr/CLE/geoportai...ILECOL=132877&
    - Cette URL me retourne bien une image tuilée (256px x 256px) néanmoins l'affichage que je souhaite est bien plus grand (2048px x 2048px serait l'idéal).

    Ma question est donc la suivante, comment récupérer les tuiles adjacentes à celle obtenue ? Me faudra-t-il multiplier le nombre de requêtes pour obtenir une image de 2048px x 2048px (soit 64 appels pour obtenir une image complète) ? Si multiplication il y a, comment déterminer les coordonnées pour récupération des autres tuiles?

    Je vous remercie par avance pour les solutions que vous pourrez me proposer

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    (futur) ingénieur cartographe
    Inscrit en
    Juillet 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : (futur) ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    Le service wmts ne renvoie que des images au format 256x256.
    Les images sont stockées sous forme de matrice, et donc référencées par leur numéro de ligne et de colonne dans cette matrice (paramètres TILECOL et TILEROW dans la requête). Pour obtenir les images adjacentes, il suffit de modifier ces paramètres.
    Par exemple pour obtenir la tuile adjacente située juste à l'est de celle que tu as postée, il suffit de mettre TILECOL=132878
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://gpp3-wxs.ign.fr/CLE/geoportail/wmts?LAYER=CADASTRALPARCELS.PARCELS&EXCEPTIONS=text/xml&FORMAT=image/png&SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile&STYLE=normal&TILEMATRIXSET=PM&TILEMATRIX=18&TILEROW=90241&TILECOL=132878&

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur iOS
    Inscrit en
    Août 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur iOS

    Informations forums :
    Inscription : Août 2012
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup pour cette réponse (et encore plus la rapidité), je vais tester ta solution de ce pas

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    (futur) ingénieur cartographe
    Inscrit en
    Juillet 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : (futur) ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    La documentation de l'IGN sur le wmts permet de bien comprendre le principe (oubliée dans mon premier post )
    http://api.ign.fr/tech-docs-js/fr/developpeur/wmts.html
    Ca te sera utile si tu veux récupérer les dalles à un endroit précis

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur iOS
    Inscrit en
    Août 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur iOS

    Informations forums :
    Inscription : Août 2012
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Merci à toi _yami, j'ai réussi à faire exactement ce que je voulais

  6. #6
    Candidat au Club
    Homme Profil pro
    Développeur iOS
    Inscrit en
    Août 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur iOS

    Informations forums :
    Inscription : Août 2012
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    En revanche, ayant souhaité avancer en fonction de l'url que tu m'as donné, je me retrouve bloqué sur le GetCapabilities car j'ai beau tester plusieurs url différentes, aucune ne me retourne les données de tilematrixset (et du coup récupérer le topleftcorner correspondant à un tilematrix pour effectuer l'ensemble des calculs).

    Quelqu'un aurait-il une petite idée?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    (futur) ingénieur cartographe
    Inscrit en
    Juillet 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : (futur) ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    Si je comprends bien tu veux juste récupérer les données TopLeftCorner associée au TileMatrixSet que tu utilises (en l'occurence le PM).
    Cette information est dans le GetCapabilities, structuré de cette façon:
    • Tu as d'abord une decription générale du service (détails du provider, requêtes possibles..)
      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
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      <?xml version="1.0" encoding="UTF-8" ?>
      <Capabilities version="1.0.0" xmlns="http://www.opengis.net/wmts/1.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" xsi:schemaLocation="http://www.opengis.net/wmts/1.0 http://schemas.opengis.net/wmts/1.0/wmtsGetCapabilities_response.xsd">
      	<ows:ServiceIdentification>
      		<ows:Title>Service de visualisation WMTS</ows:Title>
      		<ows:Abstract>Ce service permet la visulation de couches de données raster IGN au travers d&apos;un flux WMS ou WMTS</ows:Abstract>
      		<ows:Keywords>
      			<ows:Keyword>WMTS</ows:Keyword>
      			<ows:Keyword>ROK4-0.11.1</ows:Keyword>
      		</ows:Keywords>
      		<ows:ServiceType>OGC WMTS</ows:ServiceType>
      		<ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
      		<ows:Fees>http://professionnels.ign.fr/DISPLAY/000/531/420/5314202/CGU_Licences_Services_2012.pdf</ows:Fees>
      		<ows:AccessConstraints>need a key</ows:AccessConstraints>
      	</ows:ServiceIdentification>
      	<ows:ServiceProvider>
      		<ows:ProviderName>IGN</ows:ProviderName>
      		<ows:ProviderSite xlink:href="" />
      		<ows:ServiceContact>
      			<ows:IndividualName/>
      			<ows:PositionName/>
      			<ows:ContactInfo>
      				<ows:Phone>
      					<ows:Voice/>
      					<ows:Facsimile/>
      				</ows:Phone>
      				<ows:Address>
      					<ows:DeliveryPoint/>
      					<ows:City/>
      					<ows:AdministrativeArea/>
      					<ows:PostalCode/>
      					<ows:Country/>
      					<ows:ElectronicMailAddress/>
      				</ows:Address>
      			</ows:ContactInfo>
      		</ows:ServiceContact>
      	</ows:ServiceProvider>
      	<ows:OperationsMetadata>
      		<ows:Operation name="GetCapabilities">
      			<ows:DCP>
      				<ows:HTTP>
      					<ows:Get xlink:href="http://gpp3-wxs.ign.fr/wmts?">
      						<ows:Constraint name="GetEncoding">
      							<ows:AllowedValues>
      								<ows:Value>KVP</ows:Value>
      							</ows:AllowedValues>
      						</ows:Constraint>
      					</ows:Get>
      				</ows:HTTP>
      			</ows:DCP>
      		</ows:Operation>
      		<ows:Operation name="GetTile">
      			<ows:DCP>
      				<ows:HTTP>
      					<ows:Get xlink:href="http://gpp3-wxs.ign.fr/wmts?">
      						<ows:Constraint name="GetEncoding">
      							<ows:AllowedValues>
      								<ows:Value>KVP</ows:Value>
      							</ows:AllowedValues>
      						</ows:Constraint>
      					</ows:Get>
      				</ows:HTTP>
      			</ows:DCP>
      		</ows:Operation>
      	</ows:OperationsMetadata>
    • Ensuite tu as une description des couches disponibles, avec les dimensions des TileMatrix associées.
      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
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      <Layer>
      			<ows:Title>Limites administratives</ows:Title>
      			<ows:Abstract>Représentation des limites administratives (régions, départements, cantons, communes)</ows:Abstract>
      			<ows:Keywords>
      				<ows:Keyword>Unités administratives</ows:Keyword>
      			</ows:Keywords>
      			<ows:WGS84BoundingBox>
      				<ows:LowerCorner>-26.711 20.9918</ows:LowerCorner>
      				<ows:UpperCorner>54.9094 72.679</ows:UpperCorner>
      			</ows:WGS84BoundingBox>
      			<ows:Identifier>ADMINISTRATIVEUNITS.BOUNDARIES</ows:Identifier>
      			<Style isDefault="true">
      				<ows:Title>Données Brutes</ows:Title>
      				<ows:Abstract>Données brutes sans changement de palette</ows:Abstract>
      				<ows:Identifier>normal</ows:Identifier>
      			</Style>
      			<Format>image/png</Format>
      			<TileMatrixSetLink>
      				<TileMatrixSet>PM</TileMatrixSet>
      				<TileMatrixSetLimits>
      					<TileMatrixLimits>
      						<TileMatrix>10</TileMatrix>
      						<MinTileRow>338</MinTileRow>
      						<MaxTileRow>382</MaxTileRow>
      						<MinTileCol>497</MinTileCol>
      						<MaxTileCol>541</MaxTileCol>
      					</TileMatrixLimits>
      					<TileMatrixLimits>
      						<TileMatrix>11</TileMatrix>
      						<MinTileRow>681</MinTileRow>
      						<MaxTileRow>765</MaxTileRow>
      						<MinTileCol>994</MinTileCol>
      						<MaxTileCol>1078</MaxTileCol>
      					</TileMatrixLimits>
      					<TileMatrixLimits>
      						<TileMatrix>12</TileMatrix>
      						<MinTileRow>1366</MinTileRow>
      						<MaxTileRow>1530</MaxTileRow>
      						<MinTileCol>1989</MinTileCol>
      						<MaxTileCol>2157</MaxTileCol>
      					</TileMatrixLimits>
      					<TileMatrixLimits>
      						<TileMatrix>13</TileMatrix>
      						<MinTileRow>2725</MinTileRow>
      						<MaxTileRow>3061</MaxTileRow>
      						<MinTileCol>3978</MinTileCol>
      						<MaxTileCol>4314</MaxTileCol>
      					</TileMatrixLimits>
      					<TileMatrixLimits>
      						<TileMatrix>14</TileMatrix>
      						<MinTileRow>5467</MinTileRow>
      						<MaxTileRow>6123</MaxTileRow>
      						<MinTileCol>7957</MinTileCol>
      						<MaxTileCol>8629</MaxTileCol>
      					</TileMatrixLimits>
      					<TileMatrixLimits>
      						<TileMatrix>6</TileMatrix>
      						<MinTileRow>12</MinTileRow>
      						<MaxTileRow>28</MaxTileRow>
      						<MinTileCol>27</MinTileCol>
      						<MaxTileCol>43</MaxTileCol>
      					</TileMatrixLimits>
      					<TileMatrixLimits>
      						<TileMatrix>7</TileMatrix>
      						<MinTileRow>24</MinTileRow>
      						<MaxTileRow>56</MaxTileRow>
      						<MinTileCol>54</MinTileCol>
      						<MaxTileCol>84</MaxTileCol>
      					</TileMatrixLimits>
      					<TileMatrixLimits>
      						<TileMatrix>8</TileMatrix>
      						<MinTileRow>50</MinTileRow>
      						<MaxTileRow>112</MaxTileRow>
      						<MinTileCol>109</MinTileCol>
      						<MaxTileCol>169</MaxTileCol>
      					</TileMatrixLimits>
      					<TileMatrixLimits>
      						<TileMatrix>9</TileMatrix>
      						<MinTileRow>101</MinTileRow>
      						<MaxTileRow>225</MaxTileRow>
      						<MinTileCol>218</MinTileCol>
      						<MaxTileCol>336</MaxTileCol>
      					</TileMatrixLimits>
      				</TileMatrixSetLimits>
      			</TileMatrixSetLink>
      		</Layer>
    • Enfin, et c'est la partie qui t'intéresse, une description détaillée des différents TileMatrixSet, indépendamment des couches avec entre autres l'attribut TopLeftCorner
      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
      <TileMatrixSet>
      			<ows:Identifier>PM</ows:Identifier>
      			<ows:SupportedCRS>epsg:3857</ows:SupportedCRS>
      			<TileMatrix>
      				<ows:Identifier>0</ows:Identifier>
      				<ScaleDenominator>559082264.0287178958533332</ScaleDenominator>
      				<TopLeftCorner>-20037508 20037508</TopLeftCorner>
      				<TileWidth>256</TileWidth>
      				<TileHeight>256</TileHeight>
      				<MatrixWidth>1</MatrixWidth>
      				<MatrixHeight>1</MatrixHeight>
      			</TileMatrix>
      			<TileMatrix>
      				<ows:Identifier>1</ows:Identifier>
      				<ScaleDenominator>279541132.0143588959472254</ScaleDenominator>
      				<TopLeftCorner>-20037508 20037508</TopLeftCorner>
      				<TileWidth>256</TileWidth>
      				<TileHeight>256</TileHeight>
      				<MatrixWidth>2</MatrixWidth>
      				<MatrixHeight>2</MatrixHeight>
      			</TileMatrix>
      			<TileMatrix>
      				<ows:Identifier>10</ows:Identifier>
      				<ScaleDenominator>545978.7734655447186469</ScaleDenominator>
      				<TopLeftCorner>-20037508 20037508</TopLeftCorner>
      				<TileWidth>256</TileWidth>
      				<TileHeight>256</TileHeight>
      				<MatrixWidth>1024</MatrixWidth>
      				<MatrixHeight>1024</MatrixHeight>
      			</TileMatrix>
      			<TileMatrix>
      				<ows:Identifier>11</ows:Identifier>
      				<ScaleDenominator>272989.3867327723085907</ScaleDenominator>
      				<TopLeftCorner>-20037508 20037508</TopLeftCorner>
      				<TileWidth>256</TileWidth>
      				<TileHeight>256</TileHeight>
      				<MatrixWidth>2048</MatrixWidth>
      				<MatrixHeight>2048</MatrixHeight>

    J'espere que ça répond à ta question

  8. #8
    Candidat au Club
    Homme Profil pro
    Développeur iOS
    Inscrit en
    Août 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur iOS

    Informations forums :
    Inscription : Août 2012
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    C'est exactement ce que je cherche à récupérer, mais pour cela j'ai utilisé différentes urls dont celle là : http://gpp3-wxs.ign.fr/CLE/geoportai...etCapabilities ou même celle là http://wxs.ign.fr/geoportail/wms?SER...tCapabilities& mais le XML en sortie est totalement différent de celui que tu m'as copié collé. Je pense donc utiliser une mauvaise url (pas à jour, manque de paramètres, ...) et je n'arrive pas à trouver celle qui est correcte pour obtenir ce que je recherche.

    Si tu pouvais me donner l'url que tu as utilisé pour obtenir ces infos, je pense que je pourrais terminer tout ce que je cherche à faire.

    Merci beaucoup en tous cas pour ta disponibilité et ta rapidité de réponse

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    (futur) ingénieur cartographe
    Inscrit en
    Juillet 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : (futur) ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    les deux adresses que tu indiques sont les GetCapabilities de deux autres services, wms et wfs, qui fonctionnent de façon complètement différente: la réponse est générée à la volée sur le serveur en fonction de la requête, alors qu'avec le wmts tu accèdes simplement à des images précalculées, ce qui explique la grosse différence des Getcapabilities.
    L'url que tu cherches est: http://gpp3-wxs.ign.fr/CLEF/wmts?SER...etCapabilities

  10. #10
    Candidat au Club
    Homme Profil pro
    Développeur iOS
    Inscrit en
    Août 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur iOS

    Informations forums :
    Inscription : Août 2012
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Ok je vois la différence, effectivement avec les deux url que j'ai copié je pouvais chercher longtemps.

    Je crois que maintenant j'ai vraiment tout ce qu'il me faut.

    Encore merci beaucoup!

Discussions similaires

  1. [RegEx] problème récupération texte
    Par Kerod dans le forum Langage
    Réponses: 2
    Dernier message: 25/01/2006, 16h10
  2. Problème récupération formulaire
    Par kalimer0 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/12/2005, 14h47
  3. [MySQL] Problème récupération de données avec un SELECT DISTINCT
    Par 12_darte_12 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/07/2005, 14h48
  4. problème récupération valeur d'un "div"
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/06/2005, 10h04
  5. [Débutant] Problème récupération de données
    Par flogreg dans le forum Servlets/JSP
    Réponses: 26
    Dernier message: 20/08/2004, 17h29

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