Rendu Osmand pour la Randonnée (render.xml)

Bonjour,

Quelqu’un ici a déjà trifouillé le rendu topo d’osmand (Topo.render.xml) ?

J’essaye tant bien que mal mais c’est échec sur échec…
J’aimerais:

  • grossir les traits des highway path
  • avoir le même rendu de difficulté
    (sac_scale) que sur le rendu mapnik
  • avoir le même rendu de visibilité du sentier (trail_visibility) que sur le rendu mapnik
1 Like

J’ai réussi à

  • grossir les traits des path
  • copier le sac_scale du rendu mapnik sur le rendu Topo

Je bloque sur le trail_visibility… ça veut pas le prendre…

Topo de base dans OsmAnd

Topo avec grosseur des traits et sac_scale de mapnik sur le nouveau rendu personnalisé

J’ai aussi trouvé un rendu séparé de Topo mais qui fait appel à lui. Il ajoute une légère opacité des réserves naturelles qui manquait ! Osmand-Kartendarstellung von Naturschutzgebieten als Fläche möglich? / users: Germany / OpenStreetMap Forum

J’aimerais pouvoir l’intégrer au rendu Topo mais j’y arrive pas….

Salut, regarde ce que j’ai fait là

j’ai réécrit presque entièrement le style en le réorganisant et en commentant pas mal de chose :wink:

1 Like

Salut crici,

J’ai consulté et téléchargé depuis « terre et bitume » ton rendu offroad pour voir comment tu as fait! C’est un gros travail que tu as fait et qui doit faire des heureux !

Tu as bien allégé le code mais même en prenant le code du rendu « défault » d’osmand, je n’y arrive pas… je ne doit pas le coller correctement peut-être ou que je suis une bille :grimacing:

Je bloque sur ça et sur les réserves naturelles données dans le lien du forum OSMfr.

Je veux bien un coup de main si ça t’es possible

Voilà ce que j’ai fait, c’est à dire pas grand chose. :sweat_smile:

J’ai pas de simulateur d’androïd sur mon Linux alors je tâtonne et envoie fichier après fichier pour test sur mon ancien téléphone

Le lien vers le fichier (renommez le comme vous le voulez):

il est très difficile de modifier un des styles de base
ça tient à la façon dont sont décris les éléments, il y-a quelques infos dans les commentaires du style principal

le principal problème vient de l’utilisation de variables qui sont définies en début de style > si tu colles un morceau en provenance d’un autre style et que les variables ne correspondent pas > le style n’est pas utilisé par osmand

ensuite il faut gérer la segmentation du style par type (ligne/point/ texte etc)
une forêt peut être décrite à pas mal d’endroits dans le style
la variable couleur au début
l’ordre pour trait et/ou polygone
le texte associé éventuel
l’icone associée éventuelle

et enfin
épaisseur/couleur du trait
couleur du polygone

franchement moi qui ne suit pas développeur j’ai renoncé et j’ai réécrit tout ce dont j’avais besoin en regroupant au maximum ce qui peut l’être, maintenant au moins j’arrive à corriger mon style facilement :wink:
sachant qu’au pire grâce aux profils tu peux switcher de ton style à l’un des styles par défaut en un clic :wink:

j’ai buté sur de nombreuses choses dans le style par défaut, beaucoup viennent du fait tu ne peux gérer que des éléments qui sont dans la carte et pas l’infinité des tags osm dans la base, par exemple les réserves/parc naturel n’ont pas tous les tags osm > tu as donc des possibilités de tri/choix limitées, idem pour les network et pas mal d’autres choses.

sinon la théorie c’est de faire un « sous style »

tu ne décris que ce que tu veux modifier du style original
ou tu ajoutes un élément qui n’est pas traité dans le style original

le principe est décrit dans l’aide osmand
en gros ton sous style est exécuté en premier et tout ce qui y figure remplace le style principal et ça t’évites de devoir maintenir/écrire tout le reste.
c’est simple et pratique tant que tu ne veut pas modifier des éléments complexes car tu dois réussir à analyser la façon dont c’est traité dans le style par défaut pour le modifier dans ton « sous style », par exemple les networks sont incompréhensibles dans le style par défaut :frowning:

sur ce lien tu as le descriptif de tout les tags/objets osm importés dans les cartes obf d’osmand

c’est la bible à consulter avant de passer de nombreuses heures à tenter d’afficher une chose qui n’existe pas dans la carte :grimacing:

et si tu tiens absolument à un élément ou tag particulier (ou augmenter le level d’apparition d’un objet) tu devras générer toi-même tes propres cartes.

Merci pour les explications ! Effectivement se créer une un sous style de rendu serait plus simple.

Je vais voir en me servant du fichier ( lien donné plus haut pour les réserves naturelles).

Rendu Topo classique:

Sous style de rendu réserve naturelle que l’ont peut désactiver dans « détail »:

Pour la rando c’est important de voir où est la réserve car souvent on ne peut pas faire de bivouac à l’intérieur.

Bonjour,

J’ai réussi à créer un rendu annexé au rendu Topo d’Osmand.

Lien en fin de page.

Son fonctionnement est qu’il va piocher la plupart des attributs du rendu Topo mais avec quelques subtilités que j’ai rajouté.

TOPO RTVL (Réserve naturelle, gros traits, visibilité, Louis) oui vous aurez un petit peu de moi avec vous ! :laughing:

Ce fichier va s’ajouter à la liste de rendu, OsmAnd, UniRS, Touring view, LightRS, Winter and Ski, Nautical, Offroad, Désert, Snowmobile, Mapnik, Topo.

Lien: Dropbox - TOPO RL.render.xml - Simplify your life

Si il ne vous plaît pas, utiliser votre rendu préféré habituel, ça n’a aucune incidence sur les autres rendu.

Si vous êtes intéressé que par la réserve naturelle c’est ici en Allemand:
https://forum.openstreetmap.org/viewtop … 45#p831545

Je l’ai testé sur iPhone X et 11 Pro et ça fonctionne.

2 Likes

Bonjour,

Il semblerait que le rendu ne fonctionne pas sur androïd (plantage!). J’ignore pourquoi car sur de multiples modèles d’iPhone ça fonctionne très bien.

Quelqu’un pourrait me dire ce qui pourrait poser problème dans le fichier en lien ci-dessus s’il vous plaît ?

Idem ici sur le Huawei P30, fermeture directe.

Voici le log :

Version  OsmAnd~ 3.9.10
24.08.2021 10:45:13
Apk Version : 3.9.10 400
Exception occured in thread Thread[main,5,main] : 
java.lang.IllegalStateException: Rendering constant or attribute 'motorwayRoadColor' was not specified.
	at net.osmand.render.RenderingRulesStorage$RenderingRulesHandler.parseAttributes(RenderingRulesStorage.java:403)
	at net.osmand.render.RenderingRulesStorage$RenderingRulesHandler.parse(RenderingRulesStorage.java:239)
	at net.osmand.render.RenderingRulesStorage.parseRulesFromXmlInputStream(RenderingRulesStorage.java:105)
	at net.osmand.plus.render.RendererRegistry.loadRenderer(RendererRegistry.java:166)
	at net.osmand.plus.render.RendererRegistry.getRenderer(RendererRegistry.java:97)
	at net.osmand.plus.dialogs.SelectMapStyleBottomSheetDialogFragment.onRightBottomButtonClick(SelectMapStyleBottomSheetDialogFragment.java:138)
	at net.osmand.plus.base.MenuBottomSheetDialogFragment$4.onClick(MenuBottomSheetDialogFragment.java:392)
	at android.view.View.performClick(View.java:7281)
	at android.view.View.performClickInternal(View.java:7255)
	at android.view.View.access$3600(View.java:828)
	at android.view.View$PerformClick.run(View.java:27925)
	at android.os.Handler.handleCallback(Handler.java:900)
	at android.os.Handler.dispatchMessage(Handler.java:103)
	at android.os.Looper.loop(Looper.java:219)
	at android.app.ActivityThread.main(ActivityThread.java:8393)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

Apparemment ça viendrait du ‹ motorwayRoadColor › non spécifié.

Merci !

Nouveau lien avec allègement du code. Ça te dérange de réessayer ?

Il fonctionne toujours sur iPhone

Lien inactif

Je viens de tenter avec ton nouveau fichier, plantage idem l’erreur est légèrement différente :


Version  OsmAnd~ 3.9.10
24.08.2021 11:28:45
Apk Version : 3.9.10 400
Exception occured in thread Thread[main,5,main] : 
java.lang.IllegalStateException: Rendering constant or attribute 'trackMinZoom' was not specified.
	at net.osmand.render.RenderingRulesStorage$RenderingRulesHandler.parseAttributes(RenderingRulesStorage.java:403)
	at net.osmand.render.RenderingRulesStorage$RenderingRulesHandler.parse(RenderingRulesStorage.java:239)
	at net.osmand.render.RenderingRulesStorage.parseRulesFromXmlInputStream(RenderingRulesStorage.java:105)
	at net.osmand.plus.render.RendererRegistry.loadRenderer(RendererRegistry.java:166)
	at net.osmand.plus.render.RendererRegistry.getRenderer(RendererRegistry.java:97)
	at net.osmand.plus.dialogs.SelectMapStyleBottomSheetDialogFragment.onRightBottomButtonClick(SelectMapStyleBottomSheetDialogFragment.java:138)
	at net.osmand.plus.base.MenuBottomSheetDialogFragment$4.onClick(MenuBottomSheetDialogFragment.java:392)
	at android.view.View.performClick(View.java:7281)
	at android.view.View.performClickInternal(View.java:7255)
	at android.view.View.access$3600(View.java:828)
	at android.view.View$PerformClick.run(View.java:27925)
	at android.os.Handler.handleCallback(Handler.java:900)
	at android.os.Handler.dispatchMessage(Handler.java:103)
	at android.os.Looper.loop(Looper.java:219)
	at android.app.ActivityThread.main(ActivityThread.java:8393)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

Merci beaucoup de prendre le temps pour faire ça.

J’ai rajouté le minzoom

Lien inactif

Pas de soucis si ça peut te faire débuguer ton rendu, parce que le sujet m’intéresse aussi. J’ai toujours la même erreur :

Version  OsmAnd~ 3.9.10
24.08.2021 11:55:27
Apk Version : 3.9.10 400
Exception occured in thread Thread[main,5,main] : 
java.lang.IllegalStateException: Rendering constant or attribute 'trackMinZoom' was not specified.
	at net.osmand.render.RenderingRulesStorage$RenderingRulesHandler.parseAttributes(RenderingRulesStorage.java:403)
	at net.osmand.render.RenderingRulesStorage$RenderingRulesHandler.parse(RenderingRulesStorage.java:239)
	at net.osmand.render.RenderingRulesStorage.parseRulesFromXmlInputStream(RenderingRulesStorage.java:105)
	at net.osmand.plus.render.RendererRegistry.loadRenderer(RendererRegistry.java:166)
	at net.osmand.plus.render.RendererRegistry.getRenderer(RendererRegistry.java:97)
	at net.osmand.plus.dialogs.SelectMapStyleBottomSheetDialogFragment.onRightBottomButtonClick(SelectMapStyleBottomSheetDialogFragment.java:138)
	at net.osmand.plus.base.MenuBottomSheetDialogFragment$4.onClick(MenuBottomSheetDialogFragment.java:392)
	at android.view.View.performClick(View.java:7281)
	at android.view.View.performClickInternal(View.java:7255)
	at android.view.View.access$3600(View.java:828)
	at android.view.View$PerformClick.run(View.java:27925)
	at android.os.Handler.handleCallback(Handler.java:900)
	at android.os.Handler.dispatchMessage(Handler.java:103)
	at android.os.Looper.loop(Looper.java:219)
	at android.app.ActivityThread.main(ActivityThread.java:8393)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

J’espère que c’est la bonne

Lien inactif

Malheureusement une autre erreur survient :

24.08.2021 1:46:34
Apk Version : 3.9.10 400
Exception occured in thread Thread[main,5,main] : 
java.lang.IllegalStateException: Rendering constant or attribute 'highwaySurfaceIntegrityColor' was not specified.
	at net.osmand.render.RenderingRulesStorage$RenderingRulesHandler.parseAttributes(RenderingRulesStorage.java:403)
	at net.osmand.render.RenderingRulesStorage$RenderingRulesHandler.parse(RenderingRulesStorage.java:239)
	at net.osmand.render.RenderingRulesStorage.parseRulesFromXmlInputStream(RenderingRulesStorage.java:105)
	at net.osmand.plus.render.RendererRegistry.loadRenderer(RendererRegistry.java:166)
	at net.osmand.plus.render.RendererRegistry.getRenderer(RendererRegistry.java:97)
	at net.osmand.plus.dialogs.SelectMapStyleBottomSheetDialogFragment.onRightBottomButtonClick(SelectMapStyleBottomSheetDialogFragment.java:138)
	at net.osmand.plus.base.MenuBottomSheetDialogFragment$4.onClick(MenuBottomSheetDialogFragment.java:392)
	at android.view.View.performClick(View.java:7281)
	at android.view.View.performClickInternal(View.java:7255)
	at android.view.View.access$3600(View.java:828)
	at android.view.View$PerformClick.run(View.java:27925)
	at android.os.Handler.handleCallback(Handler.java:900)
	at android.os.Handler.dispatchMessage(Handler.java:103)
	at android.os.Looper.loop(Looper.java:219)
	at android.app.ActivityThread.main(ActivityThread.java:8393)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

Je sais pas si tu as un android, mais en fait je récupère le log en me l’envoyant juste après le crash de l’appli au lancement il te propose.

J’ai pas androïd, je suis que sur iOS (iPhone x et 11pro).

J’aurais bien aimé avoir un téléphone androïd pour tester ça, ça aurait été plus simple…

Tu peux utiliser Android dans une machine virtuelle sur ordi … mais il faut prendre le temps de l’installer.