// Documentation : http://randochartreuse.free.fr/mobac2.x/documentation/#bsh // Version : 16/03/2021 // Nom de la carte affiché dans MOBAC name = "Norvège, Rando (GeoNorge)-Z(20)"; // Nom du serveur String MyServer = ".geonorge.no"; // MyKey au format "cle_identification" String MyKey = "3E4EA40BD07979D6E528904B79BD6427F1A6B402786BA51481EE776BFEA163E89BC1A8B3127B4ECB4C031A7120956B8367D62E59EEFBC3DE8D018F0853CD0DA1"; // MyUserAgent correspond à celui créé notamment avec la clé IGN // Par défaut, on trouve souvent MyUserAgent = "Mozilla/5.0 Gecko/20100101 Firefox/49.0"; String MyUserAgent = "Mozilla/5.0 Gecko/20100101 Firefox/49.0"; // MyReferer peut être demandé String MyReferer = ""; // MyFolder au format "dossier" ou "dossier1/dossier2/etc" String MyFolder = "BaatGatekeeper/gk/gk.cache_wmts"; // Paramètres communs String MyService = "WMTS"; // Service : le type de service (ici : “WMTS”) String MyVersion = "1.0.0"; // Version : la Version du service WMTS utilisée (1.0.0 actuellement) String MyRequest = "GetTile"; // Request : la requête adressée au serveur (GetCapabilities, GetTile ou GetFeatureInfo) // Paramètres spécifiques GetTile String MyLayer = "norgeskart_bakgrunn"; // Layer : la couche demandée (JPG ou PNG) String MyTileMatrixSet = "EPSG:3857"; // TileMatrixSet : Le nom de la pyramide d’images String MyFormat = "image/png"; // Format : le format de sortie du fichier image (exemple : “image/jpeg” ou “image/png”) String MyStyle = "default"; // Style : le nom d’un style de rendu de la couche à appliquer String MyTimeStamp = ""; // Timestamp : horodatage (exemple : "current") // Initialisation du Token String MyToken = ""; long MyVTimeStamp = 0; long MyTimmer = 240000; // Temps (ms) de pause avant recherche d’un nouveau Token. 4 min = 240000 ms // Paramètre spécifique à certains serveurs (Google, 4umaps, etc.). Parfois "jpeg" au lieu de "jpg" String TileExt =""; tileType = "png"; // Type d’image fourni par le serveur tileSize = 256; // Facultatif : Supprimer la ligne dans le doute minZoom = 2; // Facultatif : Zoom minimal souhaité (et/ou fourni par le serveur) maxZoom = 20; // Facultatif : Zoom maximal souhaité (et/ou fourni par le serveur) -> Maximum 22 pour Mobac String getTileUrl(int Zoom, int X, int Y) { if (Zoom < 7) { // gestion Zoom < 7, on prend une carte générique Google pour voir le monde entier return "https://mt0.google.com/vt?lyrs=m&hl=fr&z=" + Zoom + "&x=" + X + "&y=" + Y; }else{ MyZoom = "EPSG:3857:" + Zoom; Num_Server = (X % 3) + 1; // 1 2 3 // voir https://kart.geonorge.no/ // url1_de_test = "https://gatekeeper2.geonorge.no/BaatGatekeeper/gk/gk.cache_wmts?gkt=3E4EA40BD07979D6ACCA81E48C627029A04A4AEA64F4EE5F81EE776BFEA163E89BC1A8B3127B4ECB4C031A7120956B8367D62E59EEFBC3DE8D018F0853CD0DA1&Layer=norgeskart_bakgrunn&Style=default&Timestamp=&TileMatrixSet=EPSG:3857&SERVICE=WMTS&REQUEST=GetTile&Version=1.0.0&FORMAT=image/png&TileMatrix=EPSG:3857:12&TileCol=2170&TileRow=1190" // Gestion du Token VTimeStamp = System.currentTimeMillis(); if (VTimeStamp > (MyVTimeStamp + MyTimmer)) { MyVTimeStamp = VTimeStamp; MyToken = GetGarminToken(); } return "https://gatekeeper" + Num_Server + MyServer + "/" + MyFolder + "?gkt=" + MyToken + "&Layer=" + MyLayer + "&Style=" + MyStyle + "&Timestamp=" + MyTimeStamp + "&TileMatrixSet=" + MyTileMatrixSet + "&SERVICE=" + MyService + "&REQUEST=" + MyRequest + "&Version=" + MyVersion + "&FORMAT=" + MyFormat + "&TileMatrix=" + MyZoom + "&TileCol=" + X + "&TileRow=" + Y; } } void addHeaders(java.net.HttpURLConnection conn) { conn.addRequestProperty("Referer",MyReferer); conn.addRequestProperty("User-Agent",MyUserAgent); } // // Fonction Token Garmin // GetGarminToken() { String Result; int VResponseCode; URL url = new URL("https://www.norgeskart.no/ws/gkt.py"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("Origin","https://kartkatalog.geonorge.no"); connection.setRequestProperty("referer","https://kartkatalog.geonorge.no/"); VResponseCode = connection.getResponseCode(); javax.swing.JOptionPane.showMessageDialog(null, VResponseCode); InputStream out = connection.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(out, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { // Read line by line sb.append(line + "\n"); } String resString = sb.toString(); // Result is here out.close(); // Close the stream if (VResponseCode == 200) { Result = resString; Result = Result.substring(1, Result.length()-2); javax.swing.JOptionPane.showMessageDialog(null, Result); } connection.disconnect(); return Result; } // // FIN Token Garmin //