Boutique Cinema 4D
Affichage des résultats 1 à 13 sur 13

Discussion: .dem pour topographie carte

  1. #1
    Dépendant
    Date d'inscription
    septembre 2011
    C4D version
    R20 Studio
    Messages
    388

    .dem pour topographie carte

    hello à tous,
    je cherche à réaliser ce tuto : http://cgi.tutsplus.com/tutorials/mapping-dem-data-in-cinema-4d--cms-23158
    mais je ne trouve pas de fichier .DEM
    je suis aller sur ce site : http://www.data.gouv.fr/fr/datasets/bd-alti-75m/

    où j'ai télécharger le .asc .....mais dedans je n'ai que du .md5

    où puis je trouver des .dem tel que dans le tuto

    merci à vous

  2. #2
    Dépendant
    Date d'inscription
    septembre 2011
    C4D version
    R20 Studio
    Messages
    388
    personne pour me répondre!!!

  3. #3
    Dépendant Avatar de ld
    Date d'inscription
    février 2003
    C4D version
    Autre
    OS
    Windows 8.1 bientôt 10
    Messages
    333
    http://data.geocomm.com/dem/

    cette adresse vient directement d'une discussion sur le forum
    C4D R18 Studio Tout dépend de l'endroit où on se place par rapport à l'idée qu'on s'en fait!

  4. #4
    Dépendant
    Date d'inscription
    septembre 2011
    C4D version
    R20 Studio
    Messages
    388
    merci à toi mais c'est aussi celle du tuto que j'ai regardé et dont je parle ...sauf qu'on ne trouve que des données US et pas française

  5. #5
    Pilier Avatar de oli_d
    Date d'inscription
    avril 2004
    C4D version
    Autre
    OS
    MacOS X
    Messages
    707
    Salut,

    Cinema4D est capable de lire le format dem qui est utilisé par les américains. En Europe on utilise plutôt le format ascii (.asc) que malheureusement Cinema4d ne lit pas. Je te donne ci-dessous un script qui te permettra de lire ce type de fichier. Tu trouveras ces fichier dans ton téléchargement IGN (ton lien : http://www.data.gouv.fr/fr/datasets/bd-alti-75m/) dans le dossier BDALTIV2_MNT_75M_ASC_LAMB93_IGN69_FRANCE.

    Attention le script passe automatiquement ton document en mètre et la limite de la vue en énorme (options de document ctrl+D) et je n'ai pas mis d'annulation. Le script ne gère pas la position des tuiles les unes par rapport aux autres, mais si tu en a besoin je peux t'expliquer ou voir compléter le script...

    Mode d'emploi : exécuter le script et choisir un fichier .asc

    code à coller dans le gestionnaire de scripts après avoir fait fichier/nouveau dans le menu du gestionnaire de scripts
    Code PHP:
    # -*- coding: utf-8 -*-

    import c4d,re
    import os
    .path

    #pour savoir si on est sur windows pour le codage des chemins de fichiers
    WIN =  c4d.GeGetCurrentOS()==c4d.OPERATINGSYSTEM_WIN
            

    def polygonise
    (obj,nb_rows,nb_cols):  
        
    id_poly 0
        id_pt 
    0
        
    for r in xrange(nb_rows):
            for 
    c in xrange(nb_cols):
                if 
    < (nb_cols-1) and < (nb_rows-1):
                    try :
                        
    obj.SetPolygon(id_poly,c4d.CPolygon(id_pt,id_pt+nb_cols,id_pt+1+nb_cols,id_pt+1))
                    
    except : print id_poly,'->', (id_pt,id_pt+nb_cols,id_pt+1+nb_cols,id_pt+1)
                    
    id_poly+=1
                id_pt
    +=1


    def main
    ():
        
    doc c4d.documents.GetActiveDocument()
        
    #DOCUMENT EN METRE - Limite de la vue -> énorme
        
    data doc[c4d.DOCUMENT_DOCUNIT]
        
    data.SetUnitScale(1,c4d.DOCUMENT_UNIT_M)
        
    doc[c4d.DOCUMENT_DOCUNIT]=data
        doc
    [c4d.DOCUMENT_CLIPPING_PRESET] = c4d.DOCUMENT_CLIPPING_PRESET_HUGE
        fn 
    c4d.storage.LoadDialog()

        if 
    not fn : return
        if 
    not os.path.splitext(fn)[1] == '.txt' and not os.path.splitext(fn)[1] == '.asc' 
            
    c4d.gui.MessageDialog("Ce n'est pas un fichier de terrain (.txt ou .asc)")
            return

        
    #pour windows on encode en cp1252
        
    if WIN fn fn.decode('utf-8').encode('cp1252')
        
        
    name os.path.basename(fn).split('.')[0]

        
    nb 0
        header 
    = {}
        
    #lecture de l'entête pour savoir si on a 5 ou 6 lignes ( il y a des fichiers qui n'ont pas la ligne nodata)
        
    with open(fn,'r') as file:
            
            while 
    1:
                
    file.readline()
                if 
    re.match(r'^[0-9]',s) or  re.match(r'^-',s) : break
                
    split s.split()
                if(
    len(split))>2: break #rajouté car avec QGis on dirait que les lignes commencent de toute façon par un un espace
                
    k,split
                header
    [k.lower()] = #QGIS met le NODATA_value en partie en majuscule !!!
                
    nb +=1
        
        cellsize 
    float(header['cellsize'])
        
    ncols int(header['ncols'])
        
    nrows int(header['nrows'])
        
    xcorner =  float(header['xllcorner'])
        
    ycorner =  float(header['yllcorner'])
        
        
    nodata 0.
        
    if nb == nodata float(header['nodata_value'])

        
    #lecture des altitudes
        
    with open(fn,'r') as file:
            
    #on saute l'entête
            
    for i in xrange(nb): file.readline()

            
    nb_pts ncols*nrows
            nb_poly 
    = (ncols-1)*(nrows-1)
            
    poly c4d.PolygonObject(nb_pts,nb_poly)
            
    poly.SetName(name)
            
    origine c4d.Vector(xcorner,0,ycorner+nrows*cellsize)
            
            
    pos c4d.Vector(0)
            
    i=0
            
    for r in xrange(nrows):
                for 
    val in file.readline().split():
                    
    float(val)
                    if 
    == nodatay=0.0
                    pos
    .y
                    poly
    .SetPoint(i,pos)
                    
    pos.+=cellsize
                    i
    +=1
                pos
    .x=0
                pos
    .z-=cellsize
            

        polygonise
    (poly,nrows,ncols)
        
        
    poly.Message(c4d.MSG_UPDATE)
        
    doc.InsertObject(poly)
        
    c4d.CallCommand(12148# Zoom sur la scene
        
    c4d.EventAdd()
           
        
        

    if 
    __name__=='__main__':
        
    main() 

  6. #6
    Touriste
    Date d'inscription
    juin 2014
    C4D version
    R20 Studio
    OS
    OSX + Win 10
    Messages
    7

    Je déterre ce vieux post !

    Salut à tous,
    j'ai besoins d"intégrer un fichier de topographie ASC à une créa.
    J'ai essayé le script de Oli_d mais cela ne fonctionne pas. Il me passe bien la doc en m avec la limite de vue en énorme mais je n'ai pas d'objet ds le gestionnaire ni rien à l'écran.

    Je suis sous mac, est-ce que cela peut poser un problème ? j'ai vu ds les commentaires du scripts qu'il y avait pas mal d'infos par rapport a l'OS.

    Une âme charitable ?

    Merci à tous.

  7. #7
    Pilier Avatar de oli_d
    Date d'inscription
    avril 2004
    C4D version
    Autre
    OS
    MacOS X
    Messages
    707
    Salut,

    C'est un peu difficile de répondre comme ça, il faudrait que tu me transmettes la console (menu script/console, sous r20 ligne python sur la gauche de la console) le message d'erreur. Sinon ce qui m'aiderait, c'est soit le fichier complet si il n'est pas trop lourd et confidentiel, soit juste l'entête et les premières altitudes qui ressemble à ça (tu peux ouvrir le fichier sur n'importe quel éditeur de texte):
    Code:
    ncols 226
    nrows 341
    xllcorner 2498990.5
    yllcorner 1113441
    cellsize 0.5
    421.60501098632813 421.59600830078125 421.59100341796875...
    Je ne pense pas que ça vienne du mac. je suis également sur mac ...

  8. #8
    Pilier Avatar de oli_d
    Date d'inscription
    avril 2004
    C4D version
    Autre
    OS
    MacOS X
    Messages
    707
    ... sinon après réflexion cela doit venir d'un entête à 7 lignes où on a deux valeur pour les cellules en x et en y.

    Dis-moi juste si dans l'entête il y a deux lignes dx et dy ...

  9. #9
    Touriste
    Date d'inscription
    juin 2014
    C4D version
    R20 Studio
    OS
    OSX + Win 10
    Messages
    7
    Merci Oli_d,

    voici le message d'erreur que j'ai ds la console :
    Traceback (most recent call last):
    File "/Users/geoffrey/Library/Preferences/MAXON/Cinema 4D R20_7DE41E5A/library/scripts/Fichier .ASC.py", line 101, in <module>
    main()
    File "/Users/geoffrey/Library/Preferences/MAXON/Cinema 4D R20_7DE41E5A/library/scripts/Fichier .ASC.py", line 59, in main
    xcorner = float(header['xllcorner'])
    KeyError: 'xllcorner'
    Et sinon, je peux t'envoyer le .asc sans problème, c'est un de test :

    https://www.dropbox.com/s/6k7xviym7i...IGN69.asc?dl=0

  10. #10
    Pilier Avatar de oli_d
    Date d'inscription
    avril 2004
    C4D version
    Autre
    OS
    MacOS X
    Messages
    707
    alors en fait dans l'entête de ton fichier asc les lignes qui s'appellent normalement xllcorner et yllcorner s'appellent xllcenter et yllcenter.

    Donc soit tu changes les deux noms dans le code ou alors dans l'entête de ton fichier asc ...

    C'est pour le calage géographique, dans tous les fichiers que je connais c'est normalement les coordonnées du coin en haut à gauche, dans ton cas je pense que cela doit être le centre du modèle numérique
    Dernière modification par oli_d ; 02/04/2019 à 16h35.

  11. #11
    Touriste
    Date d'inscription
    juin 2014
    C4D version
    R20 Studio
    OS
    OSX + Win 10
    Messages
    7
    Merci Oli_d.
    Désolé pour ces aller/retour assez lent, j'ai bcp de travail en ce moment.
    J'ai fait la modification ds le script, mais lorsque j'importe le fichier ASC, il est tt plat.
    Je te joins une capture d'écran.

    Une idée du problème ?

    Merci.

    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		asc.jpg 
Affichages :	3 
Taille :		70,7 Ko 
ID : 			22439

  12. #12
    Pilier Avatar de oli_d
    Date d'inscription
    avril 2004
    C4D version
    Autre
    OS
    MacOS X
    Messages
    707
    En fait dans ton modèle de terrain tu as une majorité de points "non renseignés". Si tu ouvres ton fichier avec un éditeur de texte c'est tous les points -99999. Mon script met ces points à 0, tu peux le changer à la ligne if y == nodata: y=0.0 en changeant le 0.0.

    Dans ton modèle seul le petit triangle au premier plan contient des altitudes (négatives d’ailleurs) avec très peu de différences entre elles. Essaie de changer l'échelle en y de l'objet en mettant 10 ou 100 et tu verras mieux ces différences. Mais cette tuile contient vraiment très peu d'informations ...

  13. #13
    Touriste
    Date d'inscription
    juin 2014
    C4D version
    R20 Studio
    OS
    OSX + Win 10
    Messages
    7
    Ok, encore merci Oli-d.
    Je vais essayer plutot avec un autre ASC.

    ++

Discussions similaires

  1. [Question] Carte graphique pour Mac
    Par Saverio dans le forum Hardware
    Réponses: 99
    Dernier message: 04/07/2016, 00h32
  2. Recherche pour carte de voeux ...
    Par louloudu6919 dans le forum Nouveaux membres
    Réponses: 9
    Dernier message: 08/01/2010, 22h16
  3. carte graphique recommandée par PNY pour C4D
    Par kdt dans le forum Nouveaux membres
    Réponses: 4
    Dernier message: 22/01/2006, 02h10
  4. carte graphique pour Mac G4 1Go
    Par whitewolf dans le forum Général Cinema 4D
    Réponses: 12
    Dernier message: 07/10/2004, 14h30
  5. modelisation pour une carte au tresor
    Par genghiskhan dans le forum Modélisation
    Réponses: 4
    Dernier message: 29/03/2004, 16h05

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  
Mediaworks - Logiciels 3D | Design Internet - Creation site internet