2009-03-12 15 views
5

Attualmente sto lavorando su un obiettivo dati visualizzazione project.My è produrre linee di contorno, in altre parole isolinee, da data.Data su griglia può essere temperatura, dati meteorologici o qualsiasi tipo di altri parametri ambientali ma solo condizione è che deve essere regolarmente distanziati. Ho cercato su internet, ma non sono riuscito a trovare un buon algoritmo, uno pseudo-codice o un codice sorgente per la creazione di curve di livello dalle griglie. Qualcuno conosce una libreria, un codice sorgente o un algoritmo per la produzione di curve di livello dai dati grigliati? sarà un bene se il vostro suggerimento ha una buona prestazione fase di esecuzione, non voglio aspettare i miei utenti così tanto :)generatrici di contorno dai dati regolarmente distanziati

Edit: Grazie per la risposta, ma isolinee hanno alcuni vincoli come non dovrebbero interseca quindi basta la generazione di curve di Bezier non raggiunge il mio obiettivo.

+0

Vedere la mia risposta a http://stackoverflow.com/questions/3180401/net-open-source-contour-plotting/13296170 – ProfNimrod

risposta

1

c'è qualche ragionevolmente buono contouring disponibile in GNUplot - se siete in grado di utilizzare il codice GPL che può aiutare.

4

Vai a questa domanda: How to approximate a vector contour from an elevation raster?

E 'un duplicato vicino, ma utilizza una terminologia molto diversa. Scoprirai che la cartografia e la grafica per computer risolvono molti degli stessi problemi, ma usano termini diversi per loro.

+0

Questo è un duplicato. "dati grigliati" <=> "dati raster", "dati" <=> "elevazione", ecc. –

0

Come il collegamento da Paul Tomblin suggerisce, le curve di Bezier (che sono un sottoinsieme di B-spline) sono una soluzione matura per il vostro problema. Se le prestazioni di runtime sono un problema, le curve di Bezier hanno il vantaggio di essere costruibili tramite l'algoritmo di de Casteljau, piuttosto che disegnarle in base alle equazioni parametriche. Nella remota possibilità che tu stia lavorando con DirectX, ha una funzione di libreria per il de Casteljau, ma non dovrebbe essere difficile metterne uno tu stesso usando le 1001 pagine web che lo descrivono.

0

Se i dati sono posti a intervalli regolari, questo può essere fatto abbastanza facilmente (supponendo che ho capito il problema in modo corretto). Per prima cosa devi determinare a che intervallo vuoi i tuoi contorni. Quindi crea la griglia che utilizzerai per memorizzare le informazioni del contorno (sto assumendo solo un semplice on/off o elevazione a questo tipo di dati di livello di livello), che dovrebbe essere un intervallo più piccolo dei dati di origine.

Ora il trucco qui è quello di compensare le 2 griglie di un intervallo di 1/2 (non verrà effettivamente visualizzato in codice come questo, ma è il concetto che sto trattando qui) e confrontare le 4 coordinate che circondano il punto corrente nella griglia di dati contorno che state calcolando. Se uno qualsiasi dei 4 punti si trova in un intervallo di intervallo diverso, allora quel "pixel" nella griglia del contorno dovrebbe essere impostato su true (o il valore dell'intervallo di contorno che viene attraversato).

Con questo metodo, ci sarà un problema quando l'intervallo è troppo fine che causerà diversi contorni di sovrapporre una sull'altra.

Problemi correlati