Pages: 1
- Sujet précédent - GRASS GIS aide installation v.triangle génération de TIN conditionnés - Sujet suivant
#1 Mon 30 January 2017 19:03
- AntoineB
- Participant occasionnel
- Date d'inscription: 28 Apr 2008
- Messages: 20
GRASS GIS aide installation v.triangle génération de TIN conditionnés
Bonjour à tous,
Je cherche à générer une surface 3D TIN en tenant compte de ligne de ruptures imposées. A priori sous GRASS l'Add-On v.triangle fait ça très bien. Seul problème cette Add-On n'est pas directement gérée par GRASS elle n'est pas dans la liste des Add-On supportées. D'après les instruction de la page il faut compiler le code Triangle puis ajouter ce code comme une extension sous GRASS?
The module is a shell script that implements the main <Triangle> options and use it as "filter" to produce 2D TIN from the vector points/lines data. To use script you must to compile <Triangle> first and add it to system $PATH.
J'avoue que je ne sais pas comment m'y prendre. j'ai essayé d'utiliser un compilateur C (je suis sous Windows 10) MinGW mais à l'évidence je ne comprend pas comment faire. Si quelqu'un avait ici quelques conseil sur les étapes à réaliser pour utiliser ce fameux package je l'en serais grandement reconnaissant.
Hors ligne
#2 Tue 31 January 2017 10:22
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1149
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
Salut,
Ouvrez un terminal MinGW, placez dans le repertoire ou vous avez extrait
le code source et tapez la commande suivante :
Code:
cc -O -o triangle triangle.c -lm
Cela va générer dans le répertoire un fichier triangle.exe qui est le programme compilé.
Le code source des programmes est très souvent accompagné d'un fichier
README, qui contient les informations nécessaires à leur compilations.
Dernière modification par tumasgiu (Tue 31 January 2017 10:24)
Hors ligne
#3 Tue 31 January 2017 11:48
- AntoineB
- Participant occasionnel
- Date d'inscription: 28 Apr 2008
- Messages: 20
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
Merci pour ta réponse,
J'ai lu le readme et parcouru le Makefile. Pour ce dernier la commande :
Code:
make
me renvoie l'erreur :
gcc -O -DLINUX -I/usr/X11R6/include -L/usr/X11R6/lib -o ./showme ./showme.c -lX11
./showme.c:104:22: fatal error: X11/Xlib.h: No such file or directory
J'ai chercher un peu pour obtenir la librairie X11 sous windows, j'ai essayé Xming mais je ne la trouve pas dans ses dossiers. j'ai l'impression que ce n'est que pour la visualisation, donc pas sur que ce soit indispensable pour faire tourner le code.
Sinon sous MinGW je peux compiler triangle.c et triangle.h qui génère le fichier .exe et le .o mais après... les instructions de triangle.h qui est censé générer le fichier appelable par une autre application ne me sont pas très clair. Que faire une fois qu'on a compiler ces fichiers là, comment les appeler sous GRASS?
Sinon je peux encore essayer le réaliser mon maillage avec l’exécutable en mettant en forme mon fichier de point et de lignes, à voir selon la complexité du fichier à générer.
Hors ligne
#4 Tue 31 January 2017 14:04
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1149
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
Oui, il s'agit de deux programmes distincts, triangle et showme, cf le README :
Triangle generates exact Delaunay triangulations, constrained Delaunay
triangulations, conforming Delaunay triangulations, Voronoi diagrams, and
high-quality triangular meshes. The latter can be generated with no small
or large angles, and are thus suitable for finite element analysis.
Show Me graphically displays the contents of the geometric files used by
Triangle. Show Me can also write images in PostScript form.
Donc, si vous ne voulez pas faire de visu, ou la réaliser avec un autre programme,
pas vraiment besoin de compiler showme.
Le programme triangle que vous avez compilé, peut soit être utilisé directement
en ligne de commande, soit être utilisé via v.triangle, qui ne fait qu'appeler le programme
avec les bons arguments.
Je n'utilise pas GRASS, mais vu votre premier message :
To use script you must to compile <Triangle> first and add it to system $PATH.
Je pense que vous devriez placer triangle.exe, dans un répertoire inclu dans
votre variable d'environnement PATH. Vous pouvez aussi décider d'en créer
un nouveau puis de l'inclure dans PATH.
La variable d'environnement PATH liste tout les répertoires que les applications
peuvent scanner pour chercher un programme particulier et l'exécuter.
Une fois ceci fait, vous devriez pouvoir utiliser v.triangle.
Pour éditer votre variable PATH, rdv dans Propriétés Système->Avancé->Variable d'environnement.
Attention, les chemins vers les répertoires doivent être absolus et séparés par des ;
Dernière modification par tumasgiu (Tue 31 January 2017 18:14)
Hors ligne
#5 Tue 31 January 2017 14:11
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1149
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
Pour information,
le fichier triangle.h est ce qu'on appelle un fichier d'entête qui permet
d'interfacer le code de triangle.c avec d'autres programmes C.
Tandis que le fichier triangle.o est un fichier objet, qui est un espèce de code intermédiaire entre
le code source et l'exécutable (code machine), et n'est pour la plupart du temps
pas destiné à être utilisé par un autre programme que le compilateur.
Hors ligne
#6 Tue 31 January 2017 15:32
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1149
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
A noter que si vous utilisez un processeur x86 ( ce qui est probablement le cas ) ,
il est possible que l'arithmétique flottante exacte ne fonctionne
pas suivant les processeurs, vous aurez alors probablement des
erreurs d'arrondi :
Some processors, including Intel x86 family and possibly Motorola 68xxx
family chips, are IEEE conformant but have extended length internal
floating-point registers that may defeat Triangle's exact arithmetic
routines by failing to cause enough roundoff error! Typically, there is a
way to set these internal registers so that they are rounded off to IEEE
single or double precision format. I believe (but I'm not certain) that
Triangle has the right incantations for x86 chips, if you have gcc running
under Linux (define the LINUX compiler symbol) or Microsoft C (define the
CPU86 compiler symbol).
Si cela est important pour vous, vous devriez compiler le programme
avec le symbole CPU86 en utilisant le compilateur microsoft, pour
essayer de prévenir ce genre de problème.
( vous ne pouvez pas utiliser gcc avec MinGW, car cela n'est
pas implémenté )
Code:
cl /DNO_TIMER /DCPU86 /Ox /Tc triangle.c
Hors ligne
#7 Tue 31 January 2017 18:11
- AntoineB
- Participant occasionnel
- Date d'inscription: 28 Apr 2008
- Messages: 20
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
Je pense que j'avance mais ce n'est pas encore ça.
En fait l'add-on v.triangle est issu de ce script shell (sh) ce que je n'avais pas compris à la base.
ce script appelle l’exécutable triangle qui est issu de la compilation en C des fichiers sources, comme me l'a indiqué Tumasgiu.
il faut ensuite définir la variable d'environnement système triangle qui pointe vers le fichier exécutable triangle.exe
Pour Windows Paramètres > Paramètres système avancés > Variables d'environnement > Nouvelle variable...
Ensuite c'est là que ça se gâte de mon côté il faut appeler le script shell dans GRASS...
Pour GRASS 7+ les scripts shell ne semblent plus être supportés de base il faut faire la manip décrite ici
chez moi cela entraine le plantage de GRASS 7 au démarrage
Je me suis tourné vers GRASS 6.4 mais je n'ai pas plus de succès à appeler le shell v.triangle malgré mes lectures attentives de ces deux pages : GRASS_and_Shell et Shell_scripting
j'ai essayé de placer le shell v.triangle dans GRASS GIS 6.4.4\bin ou GRASS GIS 6.4.4\scripts soit il ne reconnait pas la commande soit j'ai l'erreur suivante
Traceback (most recent call last):
File "C:\Program Files (x86)\GRASS GIS
6.4.4\etc\wxpython\gui_core\prompt.py", line 840, in
OnItemSelected
self.cmdDesc = gtask.parse_interface(GetRealCmd(cmd))
File "C:\Program Files (x86)\GRASS GIS
6.4.4\etc\python\grass\script\task.py", line 474, in
parse_interface
tree = etree.fromstring(get_interface_description(name))
File "C:\Program Files (x86)\GRASS GIS
6.4.4\etc\python\grass\script\task.py", line 452, in
get_interface_description
"\n\nDetails: %(det)s") % { 'cmd' : cmd, 'det' :
decode(cmderr) }
grass.script.core
.
ScriptError
Si quelqu'un à des idées à partir de là, je l'en remercie.
Hors ligne
#8 Tue 31 January 2017 18:24
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1149
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
Vous êtes certain qu'il ne faut pas ajouter le répertoire ou se trouve triangle.exe
dans la variable PATH ?
ou bien copier triangle.exe dans un emplacement du genre C:\Windows.
Dernière modification par tumasgiu (Tue 31 January 2017 18:58)
Hors ligne
#9 Tue 31 January 2017 19:33
- AntoineB
- Participant occasionnel
- Date d'inscription: 28 Apr 2008
- Messages: 20
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
Vous êtes certain qu'il ne faut pas ajouter le répertoire ou se trouve triangle.exe
dans la variable PATH ?
ou bien copier triangle.exe dans un emplacement du genre C:\Windows.
J'ai ajouté une variable d'environnement à mon fichier PATH systeme qui point vers le chemin exact du répertoire\triangle.exe
Après je ne suis pas sur que ce soit la seule manip à effectuer pour faire le lien entre les deux. Mais à la lecture du script shell v.triangle il y a normalement un message d'erreur si celui ne trouve pas l'executable, après difficile de savoir où est vraiment l'erreur puisque je n'arrive pas pour le moment à lancer ce script shell dans GRASS et donc impossible de savoir si il peut trouver ou non l’exécutable sur la seule base de la variable environnement que j'ai définie.
Merci pour vos retours en tout cas.
Hors ligne
#10 Tue 31 January 2017 21:17
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1149
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
Avec grass 6.4 / OSGEO4W livrée dans une install de QGIS 2.14 sous WinXP 32bit,
j'ai réussi à faire fonctionner v.triangle en faisant les choses suivantes :
-Compiler triangle.exe et le placer dans C:\Windows\System32
-Copier v.triangle dans %OSGEO4W_ROOT%\apps\grass\grass64\scripts
-Créer un fichier bat qui s'appelle v.triangle.bat dans %OSGEO4W_ROOT%\apps\grass\grass64\bin
et qui contient :
Code:
@"%GRASS_SH%" -c '"%GISBASE%/scripts/v.triangle" %*'
Puis appel de v.triangle via le terminal grass.
EDIT :
Je viens de remarquer qu'une version python de v.triangle pour GRASS 7.x est dispo également :
https://github.com/amuriy/GRASS-scripts … riangle.py
Dernière modification par tumasgiu (Tue 31 January 2017 21:29)
Hors ligne
#11 Wed 01 February 2017 09:32
- AntoineB
- Participant occasionnel
- Date d'inscription: 28 Apr 2008
- Messages: 20
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
j'ai réussi à faire fonctionner v.triangle en faisant les choses suivantes :
-Compiler triangle.exe et le placer dans C:\Windows\System32
-Copier v.triangle dans %OSGEO4W_ROOT%\apps\grass\grass64\scripts
-Créer un fichier bat qui s'appelle v.triangle.bat dans %OSGEO4W_ROOT%\apps\grass\grass64\bin
Merci cela semble prometteur, j'ai réalisé exactement ces étapes. Désormais j'ai bien la fenêtre v.triangle qui s'ouvre dans GRASS. Par contre si je lance le calcul, il n'arrive pas à trouver l’exécutable... je ne comprend pas il s’appelle bien triangle.exe dans C:\Windows\System32 . Es ce que vous avez définie une variable d'environnement en plus ? du coup j'ai essayé avec et sans ma variable d'environnement sans succès.
Code:
v.triangle -c points=Lez_cHaB_pts_retenu_XS@troncon4 lines=LIN_pts_bas_topo@troncon4 tin=tin2 which: triangle: unknown command ERROR: <Triangle> (http://www.cs.cmu.edu/~quake/triangle.html) required, please install it first.
Hors ligne
#12 Wed 01 February 2017 09:40
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1149
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
A tout hasard, placez triangle.exe dans C:\Windows.
Tentez un
Code:
echo %PATH%
dans le terminal pour savoir quels sont les répertoires ou vous pouvez le placer.
Dernière modification par tumasgiu (Wed 01 February 2017 09:48)
Hors ligne
#13 Wed 01 February 2017 11:31
- AntoineB
- Participant occasionnel
- Date d'inscription: 28 Apr 2008
- Messages: 20
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
Ok, merci ça marche, j'avais mal configuré ma variable PATH et c'est bon une fois le bon dossier ajouter; v.triangle appelle bien l’exécutable.
Après j'ai des erreurs dans l’exécution de la commande dans GRASS que je vais investiguer.
Code:
Sorry, <type> is not a valid parameter Sorry, <pattern> is not a valid parameter
Merci beaucoup, je vais aussi regarder du coté du script python pour faire tourner avec GRASS 7 ce qui serait plus simple mais bon pas indispensable.
Hors ligne
#14 Wed 01 February 2017 11:43
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1149
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
Ces erreurs sont dues au fait que vous utilisez la version de v.triangle pour grass 7.
Celle ci devrait faire l'affaire : https://raw.githubusercontent.com/amuri … v.triangle
Dernière modification par tumasgiu (Wed 01 February 2017 11:44)
Hors ligne
#15 Wed 01 February 2017 14:27
- AntoineB
- Participant occasionnel
- Date d'inscription: 28 Apr 2008
- Messages: 20
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
Sous GRASS 6.4
Ces erreurs sont dues au fait que vous utilisez la version de v.triangle pour grass 7
Ok oui ça a du sens. je n'ai plus cette erreur avec la version pour GRASS 6 que vous avez pointée , par contre j'ai une nouvelle erreur lors de l’exécution :-/
line 399: v.centroids: command not found
ce qui est bizarre c'est que je peux bien appeler v.centroids dans la console GRASS et l’exécuter
Sous GRASS 7.2
Il fallait que j'essaie, j'ai donc mis la version python de v.triangle dans \grass\grass-7.2.0\scripts sous la forme v.triangle.py
J'ai créer dans \grass\grass-7.2.0\bin un fichier v.triangle.bat
Code:
@"%GRASS_PYTHON%" "%GISBASE%/scripts/v.triangle.py" %*
si j'essaie d'appeler la commande v.triangle dans la console GRASS, j’obtient l'erreur suivante :
Details: C:\PROGRA~1\QGIS2~1.18\bin\python.exe: can't open
file 'v.triangle': [Errno 2] No such file or directory
donc j'en déduis que soit il manque quelque chose soit ce n'est pas la bonne procédure, en précisant que cette version de GRASS est installée avec le stand-alone de QGIS 2.18.3.
Dernière modification par AntoineB (Wed 01 February 2017 15:13)
Hors ligne
#16 Wed 01 February 2017 16:24
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1149
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
Pour Grass 6.4 :
Dans le script v.triangle, remplacez la ligne 399 par
Code:
cmd.exe /c "v.centroids in=V_TRIANGLE_TIN_CLEAN out=$GIS_OPT_TIN --o --q"
l'explication ( incertaine, je creuserais çà ) :
v.centroids est un script bash, qui possède donc son homologue, bin/v.centroids.bat, pour pouvoir
être appelé depuis windows.
Quand v.triangle essaie d'appeler v.centroids, le shell ne doit probablement pas posséder les informations
suffisantes pour trouver v.centroids.bat. Je pense qu'utiliser cmd pour l'exécuter permet sans doute de
récupérer les informations depuis le processus parent (i.e. l'instance de cmd qui a exécuté
GRASS).
Bon, c'est un hack rapide, je pense qu'on peut faire mieux que çà, mais en attendant, je pense
que çà peut vous dépanner.
Pour Grass 7.2
Le script python a besoin du script bash v7, il faut sans doute l'ajouter dans scripts ( pas testé ).
Dernière modification par tumasgiu (Wed 01 February 2017 22:17)
Hors ligne
#17 Thu 02 February 2017 10:12
- AntoineB
- Participant occasionnel
- Date d'inscription: 28 Apr 2008
- Messages: 20
Re: GRASS GIS aide installation v.triangle génération de TIN conditionnés
pour GRASS 6
Ok merci j'avais pas vu votre proposition, je vais tester car oui j'ai bien v.centroids.bat déjà en place dans /bin
EDIT : c'est la solution ! ça marche donc sous GRASS 6, merci pour l'aide.
pour GRASS 7
Il faut bien ajouter v.triangle (sous ce format) dans le fichier script avec v.triangle.py. J'arrive désormais à avoir et lancer la commande dans la console GRASS mais j'ai une erreur à l’exécution
Traceback (most recent call last):
File "C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.2.0/script
s/v.triangle.py", line 352, in <module>
main()
File "C:\PROGRA~1\QGIS2~1.18\apps\grass\grass-7.2.0/script
s/v.triangle.py", line 276, in main
vert_num = sum(1 for line in open(tmp_lines_cut))
UnboundLocalError: local variable 'tmp_lines_cut' referenced
before assignment
EDIT : j'ai regardé dans le code python la variable tmp_lines_cut semble pourtant bien définie en amont mais mes compétences s'arrête là, peut être une question pour l'auteur du code?
Dernière modification par AntoineB (Thu 02 February 2017 10:33)
Hors ligne
Pages: 1
- Sujet précédent - GRASS GIS aide installation v.triangle génération de TIN conditionnés - Sujet suivant