Bílý vrch
icon TrekBuddy
www.trekbuddy.net
Outdoor companion.
  • internal / bluetooth / simulator GPS
  • offline raster maps
  • smart GPX / raw NMEA logs
  • waypoints and simple navigation
  • custom views
  • MIDP and Symbian phones
  • Blackberry
  • Android
Visit wiki to see all features, guides and howtos. Project tracker - moved to github.
Trekbuddy github repository

Partners:    (Polish/Polski)(Polski) Compass mapy      (Polish/Polski)(Polski) Galileos mapy      (Polish/Polski)(Polski) CartoMedia      (Czech/Èesky)(Èesky) Eaglesoft trasy      (Polish/Polski)(Polski) ExpressMap     

 FAQFAQ   SearchSearch 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
Cartes d'ANDORRE
Goto page 1, 2  Next
 
Post new topic   Reply to topic    TrekBuddy Forum Index -> Français
View previous topic :: View next topic  
Author Message
guest



Joined: 08 Oct 2006
Posts: 5081

PostPosted: Tue Oct 16, 2018 4:38 pm    Post subject: Cartes d'ANDORRE Reply with quote

Bonjour,
Je renouvelle une demande faite il y a déjà quelques semaines :

Quelqu'un serait-il capable d'écrire (et publier) un fichjer XML ou BSH pour obtenir les cartes d'ANDORRE à partir du site suivant :
http://www.ideandorra.ad/geoportal/index.jsp?lang=ca

Merci
Back to top
View user's profile Send private message Visit poster's website
guest



Joined: 08 Oct 2006
Posts: 5081

PostPosted: Wed Oct 17, 2018 3:30 pm    Post subject: Reply with quote

Une version qui marche assez lentement chez moi, en XML :
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customWmsMapSource>
  <name>IDE Andorra Topo</name>

  <minZoom>1</minZoom>
  <maxZoom>20</maxZoom>
  <tileType>PNG</tileType>

  <version>1.1.1</version>
  <layers>fons</layers>
  <url>http://www.ideandorra.ad/Serveis/wms?</url>
  <coordinatesystem>EPSG:4326</coordinatesystem>
 
  <aditionalparameters><![CDATA[&EXCEPTIONS=application/vnd.ogc.se_inimage&TRANSPARENT=false&STYLES=&SRS=EPSG:4326]]></aditionalparameters>

  <backgroundColor>#000000</backgroundColor>

</customWmsMapSource>

pour la carte

et
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customWmsMapSource>
  <name>IDE Andorra Topo</name>

  <minZoom>1</minZoom>
  <maxZoom>20</maxZoom>
  <tileType>PNG</tileType>

  <version>1.1.1</version>
  <layers>wmsorto2012:orto2012</layers>
  <url>http://www.ideandorra.ad/Serveis/wms?</url>
  <coordinatesystem>EPSG:4326</coordinatesystem>
 
  <aditionalparameters><![CDATA[&EXCEPTIONS=application/vnd.ogc.se_inimage&TRANSPARENT=false&STYLES=&SRS=EPSG:4326]]></aditionalparameters>

  <backgroundColor>#000000</backgroundColor>

</customWmsMapSource>

pour l'orthophoto.

Sinon, l'IGN espagnol couvre Andorre (au contraire de l'ICC catalan) :
Code:
name = "IGN Espagne Topo";

tileType = "jpg";
tileSize = 256;
minZoom = 6;
maxZoom = 18;

String getTileUrl( int zoom, int x, int y ) {
return "http://www.ign.es/wmts/mapa-raster?layer=MTN&style=normal&tilematrixset=GoogleMapsCompatible&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fjpeg&TileMatrix=" + zoom + "&TileCol=" + x + "&TileRow=" + y ;
}
Back to top
View user's profile Send private message Visit poster's website
guest



Joined: 08 Oct 2006
Posts: 5081

PostPosted: Thu Oct 18, 2018 12:44 pm    Post subject: Reply with quote

Cartes d'Andorre

Merci pour la rapidité et l'efficacité de votre réponse
Back to top
View user's profile Send private message Visit poster's website
Nicolas PAOUR



Joined: 25 May 2014
Posts: 34
Location: France

PostPosted: Mon Aug 19, 2019 9:36 pm    Post subject: BSH Andore à jour Reply with quote

bsh à jour pour Andorre en WMS
Code:

// Nom de la carte affiché dans MOBAC
   name = "Andorre,1/25000-Z(18)-2019";
   
// Nom du serveur
   String MyServer = "www.ideandorra.ad";
   
// MyUserAgent correspond à celui créé notemment avec la clé IGN
// Par défaut, on trouve souvent MyUserAgent = "Mozilla/5.0 Gecko/20100101 Firefox/49.0";
   String MyUserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/70.0.3538.102 Safari/537.36";

// MyReferer peut être demandé
   String MyReferer = "";

// MyFolder au format "/blabla"
   String MyFolder = "/Serveis/wmscarto25kraster_1989/wms";

// Paramètres communs
   String MyService = "WMS";      // Service : le type de service (ici : “WMTS”)
   String MyVersion = "1.1.1";      // Version : la version du service utilisée (1.0.0)
   String MyRequest = "GetMap";   // Request : la requête adressée au serveur (GetCapabilities, GetTile ou GetFeatureInfo)

// Paramètres spécifiques GetMap
   String MyFormat = "image/png";                        // Format : le format de sortie - type-mime - du fichier image (“image/png”, “image/jpg”, …)
   String MyLayers = "wmscarto25kraster_1989:carto_25k_1989";   // Layers : la ou les ressources à utiliser pour calculer l’image. C’est le nom technique de la ressource qui est utilisé
   String MyStyles = "";                              // Styles : le style de rendu des couches
   String Mycrs = "";                                 // Crs : indique le système de coordonnées utilisé en WMS 1.3 (ex :900913, 3857)
   String Mysrs = "EPSG:3857";                           // Srs : indique le système de coordonnées utilisé en WMS version < 1.3
   String Mywidth = "256";                              // Width : largeur de l’image finale en pixels
   String Myheight = "256";                           // Height : hauteur de l’image finale en pixels
   String Mymap = "";                                 // Map : Spécifique au serveur "wms.pcn.minambiente.it". Si vide et inutile, peut générer l’erreur : Regular expression error. MS_DEFAULT_MAPFILE_PATTERN
   String Myexeptions = "INIMAGE";                        // Exeptions : Texte dans une image décrivant la nature de l’erreur

tileType = "png";   // Type d’image fourni par le serveur (png, jpg or gif)
tileSize = 256;      // Facultatif : Supprimer la ligne dans le doute
minZoom = 2;      // Facultatif : Zoom minimal souhaité (et/ou fourni par le serveur)
maxZoom = 18;      // Facultatif : Zoom maximal souhaité (et/ou fourni par le serveur) -> Maximum 22 pour Mobac

String getTileUrl(int Zoom, int X, int Y) {
// Autres paramètres spécifiques GetTile
//      TileMatrix = Zoom : Le nom de la matrice qui contient la tuile
//      TileCol = X : Le numéro de colonne du coin supérieur gauche de la tuile
//      TileRow = Y : Le numéro de ligne du coin supérieur gauche de la tuile
   if (Zoom < 11) {
      // gestion Zoom < 11, on prend une carte générique Google pour voir le monde entier
      return "http://mt0.google.com/vt/lyrs=m@176103410&hl=fr&s=Galileo&scale=1&z=" + Zoom + "&x=" + X + "&y=" + Y;
   }else{
      // url = "https://www.ideandorra.ad/Serveis/wmscarto25kraster_1989/wms?Layers=wmscarto25kraster_1989:carto_25k_1989&Service=WMS&Request=GetMap&version=1.1.1&Format=image/png&srs=EPSG:3857&width=256&height=256&bbox=184671.8603112793,5240522.658502199,185283.35653747557,5241134.154728392"
      return "https://" + MyServer + MyFolder + "?Layers=" + MyLayers + "&Service=" + MyService + "&Request=" + MyRequest + "&version=" + MyVersion + "&Format=" + MyFormat + "&srs=" + Mysrs + "&width=" + Mywidth + "&height=" + Myheight + "&bbox=" + mercatorTileEdges(X,Y,Zoom);
   }
}

void addHeaders(java.net.HttpURLConnection conn) {
   conn.addRequestProperty("Referer",MyReferer);
   conn.addRequestProperty("User-Agent",MyUserAgent);   
}

//
// Fonction projecion de Mercator
//
   static import java.lang.Math.*;

   numTiles(Z){
      return abs(pow(2,Z));
   }
   mercatorToLat(mercatorY){
      return(toDegrees(atan(sinh(mercatorY))));
   }
   latEdges1(Y,Z){
      n = numTiles(Z);
      unit = 1 / n;
      relY1 = Y * unit;
      lat1 = mercatorToLat(PI * (1 - 2 * relY1));
      return lat1;
   }
   latEdges2(Y,Z){
      n = numTiles(Z);
      unit = 1 / n;
      relY1 = Y * unit;
      relY2 = relY1 + unit;
      lat2 = mercatorToLat(PI * (1 - 2 * relY2));
      return lat2;
   }
   lonEdges1(X,Z){
      n = numTiles(Z);
      unit = 360 / n;
      lon1 = -180 + X * unit;
      return lon1;
   }
   lonEdges2(X,Z){
      n = numTiles(Z);
      unit = 360 / n;
      lon1 = -180 + X * unit;
      lon2 = lon1 + unit;
      return lon2;
   }
   tileEdges(X,Y,Z){
      return (latEdges2(Y,Z)+","+
            lonEdges1(X,Z)+","+
            latEdges1(Y,Z)+","+
            lonEdges2(X,Z));
   }
   lon2mercator(l){
      return (l * 20037508.34 / 180);
   }
   lat2mercator(l){
      r = toRadians(l);
      lat = log((1+sin(r)) / (1-sin(r)));
      return (lat * 20037508.34 / 2 / PI);
   }
   mercatorTileEdges(X,Y,Z){
      return (lon2mercator(lonEdges1(X,Z))+","+
            lat2mercator(latEdges2(Y,Z))+","+
            lon2mercator(lonEdges2(X,Z))+","+
            lat2mercator(latEdges1(Y,Z)));
   }
//
// FIN Mercator
//

_________________
Nicolas (de Chartreuse)
Back to top
View user's profile Send private message Visit poster's website
LaurentG



Joined: 13 Oct 2016
Posts: 56

PostPosted: Tue Aug 20, 2019 7:12 am    Post subject: Reply with quote

Bonjour Nicolas,

il ne s'agit pas de la même carte ! Celle que tu proposes est beaucoup moins précise et détaillée que celle du Geoportal Andoran : https://www.ideandorra.ad/geoportal/index.jsp

Cela dit, le XML proposé ne fonctionne pas (plus ?) chez moi....
Back to top
View user's profile Send private message
Nicolas PAOUR



Joined: 25 May 2014
Posts: 34
Location: France

PostPosted: Wed Aug 21, 2019 6:52 am    Post subject: Reply with quote

Bonjour
Quote:
Cela dit, le XML proposé ne fonctionne pas (plus

Jai vu mais je narrive pas a faire tourner un wms (ou wmrs) aver la layer "fons" !
Mais si elle est plus precise je vais me repencher sur le problème. ..

_________________
Nicolas (de Chartreuse)
Back to top
View user's profile Send private message Visit poster's website
Nicolas PAOUR



Joined: 25 May 2014
Posts: 34
Location: France

PostPosted: Fri Oct 11, 2019 2:38 pm    Post subject: Reply with quote

Bonjour,
Voici les 2 BSH (version 1.3.0) équivalents aux XML précédents (version 1.1.1) qui ne fonctionnent plus et avec la même résolution que https://www.ideandorra.ad/geoportal/index.jsp
Cartes topo
Code:

// Nom de la carte affiché dans MOBAC
   name = "Andorre, topo-Z(22)-2019";
   
// Nom du serveur
   String MyServer = "www.ideandorra.ad";
   
// MyUserAgent correspond à celui créé notemment avec la clé IGN
// Par défaut, on trouve souvent MyUserAgent = "Mozilla/5.0 Gecko/20100101 Firefox/49.0";
   String MyUserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/70.0.3538.102 Safari/537.36";

// MyReferer peut être demandé
   String MyReferer = "";

// MyFolder au format "/blabla"
   String MyFolder = "/Serveis/wms";

// Paramètres communs
   String MyService = "WMS";      // Service : le type de service (ici : “WMTS”)
   String MyVersion = "1.3.0";      // Version : la version du service utilisée (1.0.0)
   String MyRequest = "GetMap";   // Request : la requête adressée au serveur (GetCapabilities, GetTile ou GetFeatureInfo)

// Paramètres spécifiques GetMap
   String MyFormat = "image/png";                        // Format : le format de sortie - type-mime - du fichier image (“image/png”, “image/jpg”, …)
   String MyLayers = "fons";   // Layers : la ou les ressources à utiliser pour calculer l’image. C’est le nom technique de la ressource qui est utilisé
   String MyStyles = "";                              // Styles : le style de rendu des couches
   String Mycrs = "EPSG:3857";                           // Crs : indique le système de coordonnées utilisé en WMS 1.3 (ex :900913, 3857)
   String Mysrs = "";                                 // Srs : indique le système de coordonnées utilisé en WMS version < 1.3
   String Mywidth = "256";                              // Width : largeur de l’image finale en pixels
   String Myheight = "256";                           // Height : hauteur de l’image finale en pixels
   String Mymap = "";                                 // Map : Spécifique au serveur "wms.pcn.minambiente.it". Si vide et inutile, peut générer l’erreur : Regular expression error. MS_DEFAULT_MAPFILE_PATTERN
   String Myexeptions = "INIMAGE";                        // Exeptions : Texte dans une image décrivant la nature de l’erreur

tileType = "png";   // Type d’image fourni par le serveur (png, jpg or gif)
tileSize = 256;      // Facultatif : Supprimer la ligne dans le doute
minZoom = 2;      // Facultatif : Zoom minimal souhaité (et/ou fourni par le serveur)
maxZoom = 22;      // Facultatif : Zoom maximal souhaité (et/ou fourni par le serveur) -> Maximum 22 pour Mobac

String getTileUrl(int Zoom, int X, int Y) {
// Autres paramètres spécifiques GetTile
//      TileMatrix = Zoom : Le nom de la matrice qui contient la tuile
//      TileCol = X : Le numéro de colonne du coin supérieur gauche de la tuile
//      TileRow = Y : Le numéro de ligne du coin supérieur gauche de la tuile
   if (Zoom < 11) {
      // gestion Zoom < 11, on prend une carte générique Google pour voir le monde entier
      return "http://mt0.google.com/vt/lyrs=m@176103410&hl=fr&s=Galileo&scale=1&z=" + Zoom + "&x=" + X + "&y=" + Y;
   }else{
      // url = "https://www.ideandorra.ad/Serveis/wms?Layers=fons&Service=WMS&Request=GetMap&version=1.3.0&Format=image/png&crs=EPSG:3857&width=256&height=256&bbox=184671.8603112793,5240522.658502199,185283.35653747557,5241134.154728392"
      return "https://" + MyServer + MyFolder + "?Layers=" + MyLayers + "&Service=" + MyService + "&Request=" + MyRequest + "&version=" + MyVersion + "&Format=" + MyFormat + "&crs=" + Mycrs + "&width=" + Mywidth + "&height=" + Myheight + "&bbox=" + mercatorTileEdges(X,Y,Zoom);
   }
}

void addHeaders(java.net.HttpURLConnection conn) {
   conn.addRequestProperty("Referer",MyReferer);
   conn.addRequestProperty("User-Agent",MyUserAgent);   
}

//
// Fonction projecion de Mercator
//
   static import java.lang.Math.*;

   numTiles(Z){
      return abs(pow(2,Z));
   }
   mercatorToLat(mercatorY){
      return(toDegrees(atan(sinh(mercatorY))));
   }
   latEdges1(Y,Z){
      n = numTiles(Z);
      unit = 1 / n;
      relY1 = Y * unit;
      lat1 = mercatorToLat(PI * (1 - 2 * relY1));
      return lat1;
   }
   latEdges2(Y,Z){
      n = numTiles(Z);
      unit = 1 / n;
      relY1 = Y * unit;
      relY2 = relY1 + unit;
      lat2 = mercatorToLat(PI * (1 - 2 * relY2));
      return lat2;
   }
   lonEdges1(X,Z){
      n = numTiles(Z);
      unit = 360 / n;
      lon1 = -180 + X * unit;
      return lon1;
   }
   lonEdges2(X,Z){
      n = numTiles(Z);
      unit = 360 / n;
      lon1 = -180 + X * unit;
      lon2 = lon1 + unit;
      return lon2;
   }
   tileEdges(X,Y,Z){
      return (latEdges2(Y,Z)+","+
            lonEdges1(X,Z)+","+
            latEdges1(Y,Z)+","+
            lonEdges2(X,Z));
   }
   lon2mercator(l){
      return (l * 20037508.34 / 180);
   }
   lat2mercator(l){
      r = toRadians(l);
      lat = log((1+sin(r)) / (1-sin(r)));
      return (lat * 20037508.34 / 2 / PI);
   }
   mercatorTileEdges(X,Y,Z){
      return (lon2mercator(lonEdges1(X,Z))+","+
            lat2mercator(latEdges2(Y,Z))+","+
            lon2mercator(lonEdges2(X,Z))+","+
            lat2mercator(latEdges1(Y,Z)));
   }
//
// FIN Mercator
//

et en photo
Code:

// Nom de la carte affiché dans MOBAC
   name = "Andorre, photo-Z(22)-2019";
   
// Nom du serveur
   String MyServer = "www.ideandorra.ad";
   
// MyUserAgent correspond à celui créé notemment avec la clé IGN
// Par défaut, on trouve souvent MyUserAgent = "Mozilla/5.0 Gecko/20100101 Firefox/49.0";
   String MyUserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/70.0.3538.102 Safari/537.36";

// MyReferer peut être demandé
   String MyReferer = "";

// MyFolder au format "/blabla"
   String MyFolder = "/Serveis/wms";

// Paramètres communs
   String MyService = "WMS";      // Service : le type de service (ici : “WMTS”)
   String MyVersion = "1.3.0";      // Version : la version du service utilisée (1.0.0)
   String MyRequest = "GetMap";   // Request : la requête adressée au serveur (GetCapabilities, GetTile ou GetFeatureInfo)

// Paramètres spécifiques GetMap
   String MyFormat = "image/png";                        // Format : le format de sortie - type-mime - du fichier image (“image/png”, “image/jpg”, …)
   String MyLayers = "wmsorto2012:orto2012";               // Layers : la ou les ressources à utiliser pour calculer l’image. C’est le nom technique de la ressource qui est utilisé
   String MyStyles = "";                              // Styles : le style de rendu des couches
   String Mycrs = "EPSG:3857";                           // Crs : indique le système de coordonnées utilisé en WMS 1.3 (ex :900913, 3857)
   String Mysrs = "";                                 // Srs : indique le système de coordonnées utilisé en WMS version < 1.3
   String Mywidth = "256";                              // Width : largeur de l’image finale en pixels
   String Myheight = "256";                           // Height : hauteur de l’image finale en pixels
   String Mymap = "";                                 // Map : Spécifique au serveur "wms.pcn.minambiente.it". Si vide et inutile, peut générer l’erreur : Regular expression error. MS_DEFAULT_MAPFILE_PATTERN
   String Myexeptions = "INIMAGE";                        // Exeptions : Texte dans une image décrivant la nature de l’erreur

tileType = "png";   // Type d’image fourni par le serveur (png, jpg or gif)
tileSize = 256;      // Facultatif : Supprimer la ligne dans le doute
minZoom = 2;      // Facultatif : Zoom minimal souhaité (et/ou fourni par le serveur)
maxZoom = 22;      // Facultatif : Zoom maximal souhaité (et/ou fourni par le serveur) -> Maximum 22 pour Mobac

String getTileUrl(int Zoom, int X, int Y) {
// Autres paramètres spécifiques GetTile
//      TileMatrix = Zoom : Le nom de la matrice qui contient la tuile
//      TileCol = X : Le numéro de colonne du coin supérieur gauche de la tuile
//      TileRow = Y : Le numéro de ligne du coin supérieur gauche de la tuile
   if (Zoom < 11) {
      // gestion Zoom < 11, on prend une carte générique Google pour voir le monde entier
      return "http://mt0.google.com/vt/lyrs=m@176103410&hl=fr&s=Galileo&scale=1&z=" + Zoom + "&x=" + X + "&y=" + Y;
   }else{
      // url = "https://www.ideandorra.ad/Serveis/wms?Layers=wmsorto2012:orto2012&Service=WMS&Request=GetMap&version=1.3.0&Format=image/png&crs=EPSG:3857&width=256&height=256&bbox=184671.8603112793,5240522.658502199,185283.35653747557,5241134.154728392"
      return "https://" + MyServer + MyFolder + "?Layers=" + MyLayers + "&Service=" + MyService + "&Request=" + MyRequest + "&version=" + MyVersion + "&Format=" + MyFormat + "&crs=" + Mycrs + "&width=" + Mywidth + "&height=" + Myheight + "&bbox=" + mercatorTileEdges(X,Y,Zoom);
   }
}

void addHeaders(java.net.HttpURLConnection conn) {
   conn.addRequestProperty("Referer",MyReferer);
   conn.addRequestProperty("User-Agent",MyUserAgent);   
}

//
// Fonction projecion de Mercator
//
   static import java.lang.Math.*;

   numTiles(Z){
      return abs(pow(2,Z));
   }
   mercatorToLat(mercatorY){
      return(toDegrees(atan(sinh(mercatorY))));
   }
   latEdges1(Y,Z){
      n = numTiles(Z);
      unit = 1 / n;
      relY1 = Y * unit;
      lat1 = mercatorToLat(PI * (1 - 2 * relY1));
      return lat1;
   }
   latEdges2(Y,Z){
      n = numTiles(Z);
      unit = 1 / n;
      relY1 = Y * unit;
      relY2 = relY1 + unit;
      lat2 = mercatorToLat(PI * (1 - 2 * relY2));
      return lat2;
   }
   lonEdges1(X,Z){
      n = numTiles(Z);
      unit = 360 / n;
      lon1 = -180 + X * unit;
      return lon1;
   }
   lonEdges2(X,Z){
      n = numTiles(Z);
      unit = 360 / n;
      lon1 = -180 + X * unit;
      lon2 = lon1 + unit;
      return lon2;
   }
   tileEdges(X,Y,Z){
      return (latEdges2(Y,Z)+","+
            lonEdges1(X,Z)+","+
            latEdges1(Y,Z)+","+
            lonEdges2(X,Z));
   }
   lon2mercator(l){
      return (l * 20037508.34 / 180);
   }
   lat2mercator(l){
      r = toRadians(l);
      lat = log((1+sin(r)) / (1-sin(r)));
      return (lat * 20037508.34 / 2 / PI);
   }
   mercatorTileEdges(X,Y,Z){
      return (lon2mercator(lonEdges1(X,Z))+","+
            lat2mercator(latEdges2(Y,Z))+","+
            lon2mercator(lonEdges2(X,Z))+","+
            lat2mercator(latEdges1(Y,Z)));
   }
//
// FIN Mercator
//


Elles sont effectivement un peu longues à la détente

_________________
Nicolas (de Chartreuse)
Back to top
View user's profile Send private message Visit poster's website
guest



Joined: 08 Oct 2006
Posts: 5081

PostPosted: Mon Oct 14, 2019 11:58 am    Post subject: Reply with quote

Merci! Sinon les XML remarchent (leeentement mais ça marche) si on les passe en https dans l'entête du serveur.
Back to top
View user's profile Send private message Visit poster's website
ttl



Joined: 03 Oct 2016
Posts: 10

PostPosted: Thu Dec 19, 2019 4:58 pm    Post subject: Reply with quote

Bonjour Nicolas,
Pourrais-tu me dire à quoi correspondent les chiffres :20037508.34 dans le calcul fonction projection de Mercator?
Par avance, merci pour ta réponse.
Cordialement.
Back to top
View user's profile Send private message
Nicolas PAOUR



Joined: 25 May 2014
Posts: 34
Location: France

PostPosted: Thu Dec 19, 2019 8:27 pm    Post subject: Reply with quote

Bonsoir,
C'est un demi-périmètre de la Terre à l'équateur en mètre
2 x 20037508.34 = 40075016,68 (soit 40075 km de périmètre)
Mais je ne fais qu'utiliser cette fonction (2eme exemple pour sources WMS qui utilise BBOX=<mercatorTileEdges(X,Y,Zoom))
https://mobac.sourceforge.io/wiki/index.php/BeanShellMapSources

_________________
Nicolas (de Chartreuse)
Back to top
View user's profile Send private message Visit poster's website
ttl



Joined: 03 Oct 2016
Posts: 10

PostPosted: Sun Dec 22, 2019 8:46 pm    Post subject: Reply with quote

Bonsoir Nicolas,
Merci pour l'information, malheureusement je n'arrive pas a trouver l'erreur dans mon BSH. Je me suis largement inspiré de ton fichier pour créer un BSH pour la Catalogne, et je me retrouve avec celle-ci dans MOBAC sous Ibiza en pleine Méditerranée. De plus, suivant l'échelle, certaines dalles n'apparaissent pas. Je pensais à une erreur de référencement, mais ne trouve pas sur le net les explications relatives au calcul de x,y,z. Je te joins le code au cas où tu aurais une idée.

CODE:

// Nom de la carte affiché dans MOBAC
name = "Catalogne topo25 WMS";

// Nom du serveur
String MyServer = "mapcache.icc.cat";

// Key au format "/blabla"
String MyKey = "";

// MyUserAgent correspond à celui créé notemment avec la clé IGN
// Par défaut, on trouve souvent MyUserAgent = "Mozilla/5.0 Gecko/20100101 Firefox/49.0";
String MyUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36";

// MyReferer peut être demandé
String MyReferer = "";

// MyFolder au format "/blabla"
String MyFolder = "/map/bases/service";

// Paramètres communs
String MyService = "WMS"; // Service : le type de service (ici : “WMS”)
String MyVersion = "1.1.1"; // Version : la version du service utilisée (1.1.1)
String MyRequest = "GetMap"; // Request : la requête adressée au serveur (GetCapabilities, GetTile ou GetFeatureInfo)

// Paramètres spécifiques GetMap
String MyFormat = "image/jpeg"; // Format : le format de sortie - type-mime - du fichier image (“image/png”, “image/jpeg”, …)
String MyLayers = "topo"; // Layers : la ou les ressources à utiliser pour calculer l’image. C’est le nom technique de la ressource qui est utilisé
String MyStyles = ""; // Styles : le style de rendu des couches
String Mycrs = ""; // Crs : indique le système de coordonnées utilisé en WMS 1.3 (ex :900913, 3857)
String Mysrs = "EPSG:25831"; // Srs : indique le système de coordonnées utilisé en WMS version < 1.3
String Mywidth = "256"; // Width : largeur de l’image finale en pixels
String Myheight = "256"; // Height : hauteur de l’image finale en pixels
String Myexeptions = "application/vnd.ogc.se_xml"; // Exeptions : Texte dans une image décrivant la nature de l’erreur

// Paramètre spécifique à certains serveurs (Google, 4umaps, etc.). Parfois "jpeg" au lieu de "jpg"
String TileExt ="jpg";

tileType = "jpg"; // Type d’image fourni par le serveur (png, jpg or gif)
tileSize = 256; // Facultatif : Supprimer la ligne dans le doute
minZoom = 2; // Facultatif : Zoom minimal souhaité (et/ou fourni par le serveur)
maxZoom = 15; // Facultatif : Zoom maximal souhaité (et/ou fourni par le serveur) -> Maximum 22 pour Mobac

String getTileUrl(int Zoom, int X, int Y) {
// Autres paramètres spécifiques GetTile
// TileMatrix = Zoom : Le nom de la matrice qui contient la tuile
// TileCol = X : Le numéro de colonne du coin supérieur gauche de la tuile
// TileRow = Y : Le numéro de ligne du coin supérieur gauche de la tuile
if (Zoom < 7) {
// gestion Zoom < 7, on prend une carte générique Google pour voir le monde entier
return "http://mt0.google.com/vt/lyrs=m@176103410&hl=fr&s=Galileo&scale=1&z=" + Zoom + "&x=" + X + "&y=" + Y;
}else{
// "http://mapcache.icc.cat/map/bases/service?LAYERS=topo&FORMAT=image/jpeg&EXCEPTIONS=application/vnd.ogc.se_xml&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=EPSG:25831&BBOX=514192,4698120,514256,4698184&WIDTH=256&HEIGHT=256"
return "http://" + MyServer + MyFolder + "?EXCEPTIONS=" + Myexeptions + "&Layers=" + MyLayers + "&Styles=" + MyStyles + "&Service=" + MyService + "&Request=" + MyRequest + "&version=" + MyVersion + "&Format=" + MyFormat + "&srs=" + Mysrs + "&width=" + Mywidth + "&height=" + Myheight + "&bbox=" + mercatorTileEdges(X,Y,Zoom);
}
}

void addHeaders(java.net.HttpURLConnection conn) {
conn.addRequestProperty("Referer",MyReferer);
conn.addRequestProperty("User-Agent",MyUserAgent);
}

//
// Fonction projecion de Mercator
//
static import java.lang.Math.*;

numTiles(Z){
return abs(pow(2,Z));
}
mercatorToLat(mercatorY){
return(toDegrees(atan(sinh(mercatorY))));
}
latEdges1(Y,Z){
n = numTiles(Z);
unit = 1 / n;
relY1 = Y * unit;
lat1 = mercatorToLat(PI * (1 - 2 * relY1));
return lat1;
}
latEdges2(Y,Z){
n = numTiles(Z);
unit = 1 / n;
relY1 = Y * unit;
relY2 = relY1 + unit;
lat2 = mercatorToLat(PI * (1 - 2 * relY2));
return lat2;
}
lonEdges1(X,Z){
n = numTiles(Z);
unit = 360 / n;
lon1 = -180 + X * unit;
return lon1;
}
lonEdges2(X,Z){
n = numTiles(Z);
unit = 360 / n;
lon1 = -180 + X * unit;
lon2 = lon1 + unit;
return lon2;
}
tileEdges(X,Y,Z){
return (latEdges2(Y,Z)+","+
lonEdges1(X,Z)+","+
latEdges1(Y,Z)+","+
lonEdges2(X,Z));
}
lon2mercator(l){
return (l * 20037508.34 / 180);
}
lat2mercator(l){
r = toRadians(l);
lat = log((1+sin(r)) / (1-sin(r)));
return (lat * 20037508.34 / 2 / PI);
}
mercatorTileEdges(X,Y,Z){
return (lon2mercator(lonEdges1(X,Z))+","+
lat2mercator(latEdges2(Y,Z))+","+
lon2mercator(lonEdges2(X,Z))+","+
lat2mercator(latEdges1(Y,Z)));
}
//
// FIN Mercator
//
Back to top
View user's profile Send private message
Nicolas PAOUR



Joined: 25 May 2014
Posts: 34
Location: France

PostPosted: Mon Dec 23, 2019 3:19 pm    Post subject: Reply with quote

Bonjour,
Remplace simplement cette ligne
String Mysrs = "EPSG:25831"
par
String Mysrs = "EPSG:3857"
et vide ton cache (tilestore\db-Catalogne topo25 WMS) pour les tests
Tu peux aussi aller jusqu'au zoom 19.
BSH (Espagne-Catalogne-2019.bsh) corrigé ici :
http://randochartreuse.free.fr/mobac2.x/mapsources/Espagne/

_________________
Nicolas (de Chartreuse)
Back to top
View user's profile Send private message Visit poster's website
ttl



Joined: 03 Oct 2016
Posts: 10

PostPosted: Mon Dec 23, 2019 5:22 pm    Post subject: Reply with quote

Bonsoir Nicolas,
Merci pour ta réponse et ta réactivité. Je ne suis pas chez moi actuellement, je teste ça dès que possible et te tiens au courant.
Encore merci et joyeux Noël.
Back to top
View user's profile Send private message
ttl



Joined: 03 Oct 2016
Posts: 10

PostPosted: Wed Jan 08, 2020 3:59 pm    Post subject: Reply with quote

Bonjour Nicolas et meilleurs vœux,
Ça fonctionne nickel. Par contre je ne comprends pas pourquoi sur le site d'origine il utilisent EPSG 25831. Bon, l'essentiel est que je puisse récupérer la carte.
Encore un grand merci pour ton aide et plein de belles randos pour cette nouvelle année.
Patrick.
Back to top
View user's profile Send private message
Nicolas PAOUR



Joined: 25 May 2014
Posts: 34
Location: France

PostPosted: Wed Jan 08, 2020 4:55 pm    Post subject: Reply with quote

Car Mobac a besoin de travailler en "EPSG:3857" pour la plupart des cartes.
Mais je ne suis spécialiste sur la question. Si quelqu'un veut nous faire un cours Smile

_________________
Nicolas (de Chartreuse)
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    TrekBuddy Forum Index -> Français All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group