Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Daniele Marelli

Importare edifici da OpenStreetMap in Revit

Recommended Posts

Quello che proveremo a fare oggi è creare delle masse in Revit corrispondenti a edifici reali presi da una mappa, il tutto come sempre attraverso Dynamo e alcuni suoi pacchetti aggiuntivi. Lo script in questione è un po' lungo quindi eviterò di ricrearlo passo a passo in questa guida e mi limiterò a commentarne i punti salienti. All'interno dello script troverete comunque ulteriori commenti e una divisione in gruppi per facilitarne la lettura. 

 

Download: https://drive.google.com/open?id=1jLOqyhaB8mFNp3N_qgLL6GM8uenkeKsH

È necessario Dynamo 2.0 o versione superiore.

 

qRLslt2.png

 

OpenStreetMap

OpenStreetMap (OSM) è una mappa completamente gratuita e libera, creata dagli utenti, perfetta per il nostro obiettivo. Oltre alla loro posizione e forma in pianta, gli utenti possono attribuire agli edifici anche parametri come il nome, indirizzo, numero di piani, funzione e molti altri. Potete vederli andando sul sito https://www.openstreetmap.org/, premendo sul punto interrogativo a destra, cliccando in un qualsiasi punto e scegliendo a sinistra uno degli edifici nei dintorni. Purtroppo questi parametri non sono sempre disponibili per tutti gli edifici, ma siete liberi di aggiungerli voi stessi e contribuire alla mappa.

 

Pacchetti utilizzati

 

  • GIS2BIM (facoltativo) - Per il download diretto della mappa
  • Elk - Per l'analisi del file OSM
  • Clockwork - Per una veloce operazione su una lista
  • Springs - Per la creazione delle masse in Revit

 

Download della mappa

Ci sono due opzioni: il download manuale e quello automatico tramite il nodo GIS2BIM

 

Download manuale

Basta andare sul sito di https://www.openstreetmap.org/ e cliccare su esporta in alto a sinistra. Cliccate su Seleziona manualmente un'area differente per decidere voi che porzione di mappa scaricare. Cliccate esporta per scaricare la vostra mappa in formato .osm.

 

CiKkO9v.png

 

 

Download da GIS2BIM

Nonostante alla fine abbia deciso di non utilizzarlo (i nodi sono congelati, come potete vedere dalla linea tratteggiata che hanno intorno), ho voluto includere anche questo metodo nello script.

FxOMNDv.png

Vi basterà inserire l'indirizzo che volete e penserà a tutto Dynamo. Tutto molto bello, se non fosse che il parametro WidthMeters sembra non funzionare e di conseguenza non si può controllare la dimensione della mappa da scaricare. Maggiori informazioni sul suo utilizzo sono comunque contenute nelle note. 

 

Estrazione dei dati dal file .osm

Una mappa in formato .osm può contenere davvero tante informazioni, Elk ci permette di estrarre solo quelle che ci interessano. 

qHDoLfX.png

Il nodo OSM.OSMData ci permette di ottenere la geometria (Points) e le informazioni (Keys) degli elementi che ci interessano. Oltre alla mappa che abbiamo scaricato dovremo indicargli la categoria da analizzare, nel nostro caso "building", e la sottocategoria, "*" cioè tutte. Nello script è presente anche un esempio di utilizzo con la categoria "highway", per estrarre le strade. Sotto il nodo OSM.Features c'è una elenco di tutte le categorie disponibili

 

Creazione dei solidi

Semplicemente creiamo dei poligoni (Polygon.ByPoints) a partire dai punti ottenuti prima. Creiamo i solidi con Curve.ExtrudeAsSolid. Da qui in poi alcuni nodi avranno la funziona Anteprima spenta (tasto destro > anteprima) per avere una visualizzazione più chiara sullo sfondo.

 

Definizione dell'altezza degli edifici

Come accennavo prima, gli utenti di OSM possono assegnare dei parametri agli edifici. In questo caso sono due quelli che possono tornarci utili: levels e height. Levels è il numero di piani mentre height è l'altezza esatta. Sarebbe meglio utilizzare height per stabilire l'altezza del nostro edificio ma purtroppo è abbastanza raro da incontrare. Più comune è levels, che possiamo moltiplicare per 3 metri per avere un'altezza approssimativa dell'edificio. Ricordate comunque che se nessuno dei due parametri è presente potete aggiungerli dal sito di OSM, facendo un favore a voi stessi ed ai prossimi che useranno quella mappa.

2O7CkT0.png

La prima cosa da fare in questi casi è analizzare la struttura della lista. Abbiamo 25 liste corrispondenti ciascuna ad un edificio, nello stesso ordine della lista dei punti usata prima. Dentro ogni lista ci sono stringhe di testo con informazioni, alcune utili altre inutili. Iniziamo a sbarazzarci di tutto ciò che non contiene le parole "building:levels:" (che è ciò che ci interessa) creando una maschera di true e false con il nodo String.Contains e poi applicandola al nodo. Eliminiamo poi tutto il testo inutile che rimane con il nodo String.Split. Seguono delle operazioni di "pulizia" della lista, nelle note trovate alcune informazioni sui parametri.

 

Sottrazione dei vuoti

LFfYyFN.png

Un'ultima operazione da fare per ottenere una geometria più pulita in Dynamo è sottrarre i vuoti da alcuni edifici. Se osservate la lista a sinistra vedrete che è composta da sottoliste, alcune con uno, altre con due elementi. Il secondo solido presente in alcune sottoliste è un vuoto. Iniziamo selezionando tutti i vuoti e tutti i pieni. Useremo il nodo List.GetItemAtIndex, con l'utilizzo dei livelli. Per usare i livelli premete sulla freccetta da parte all'input List e cliccate su usa livelli. Lavoreremo sul livello 2 che è quello nel quale si trovano i solidi, gli oggetti veri e propri (Il livello 1 è quello della lista principale, che contiene le sottoliste). Tutti gli elementi con indice 0 sono volumi, quelli con indice 1 sono vuoti. Quando non viene trovato un vuoto in una sottolista viene inserito un elemento null. Non ci rimane che sottrarre i solidi e ricombinare la lista.

 

Creazione delle masse

Non ci sono molti commenti da fare. Il file che deve essere selezionato è un template .rft e non una famiglia di massa .rfa. Occhio al metodo di collegamento del nodo finale (tasto destro sul nodo > collegamento) che è impostato su "più lungo" (come si deduce anche dal simbolo II\ in basso a destra del nodo). Questo permette ci assegnare ad ogni geometria il proprio nome. Il collegamento è utile quando si lavora con più liste in input e si vuole stabilire come devono essere interpretate (più info nel DynamoPrimer).

 

 

Ho testato lo script solo su una mappa, abbastanza piccola, quindi non escludo possa dare problemi in alcuni casi particolari (es. edifici più complessi con più vuoti). Nel caso ci siano problemi o domande non esitate a commentare qua sotto e lavoreremo insieme ad una soluzione.


Edited by Daniele Marelli

Share this post


Link to post
Share on other sites

Daniele aprezzo come sempre i tuoi interventi e ti ringrazio per l'impegno e per la semplicità espositiva. Ho sottomano un progetto utile su cui testare il preocedimento, intanto mi sono iscritto a OpenStreetMap e metà del lavoro è fatto! (...non credo proprio:D)


Edited by ferruccio della schiava

EDIL EDUCATION LAB - FORMAZIONE BIM ORIENTED
www.dellaschiava.it

 

Share this post


Link to post
Share on other sites

Entra nel Club

Devi essere un utente del Club per poter lasciare un commento. Entra


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...
Aspetta! x