Calcolo della percentuale di cielo visibile?


14

Qualcuno può spiegare, nel modo più semplice possibile, come calcolare la percentuale di cielo visibile?

Ho fatto un sondaggio satellitare e ho individuato l'altezza degli edifici e la distanza tra loro.

Come posso usare quei dati per calcolare la percentuale di cielo visibile in base a dove mi trovavo?

Risposte:


12

Di solito abbiamo dati su dove si trova il terreno , quindi dobbiamo usarli. Il terreno determina una figura solida in 3D. Proietti questa figura radialmente sulla sfera unitaria centrata sullo spettatore: questa mappa il terreno su una regione nella sfera. Calcola l'area della regione rimanente : questo è l'angolo solido sotteso dal cielo (in steradiani ). Dividilo per l'area totale della sfera (pari a 4 pi) e moltiplica per 100 per ottenere la percentuale di cielo.

Se preferisci una spiegazione più vivida, metti lo spettatore al centro di una piccola bolla sferica e chiedile di dipingere sul cielo. Dividi la quantità di vernice che usa per la quantità necessaria per dipingere l'intera bolla e moltiplica per 100.

In realtà ci sono alcuni dettagli tecnici non così semplici.

La proiezione sulla sfera è abbastanza semplice quando il terreno è dato come una rete triangolata (un TIN), perché devi solo scrivere codice per proiettare un triangolo su una sfera. Quando il terreno viene dato come modello di elevazione su griglia (un DEM), è possibile concepire ciascuna cella della griglia come un quadrilatero 3D. Potresti spezzarlo in due triangoli lungo una diagonale e mappare ogni triangolo sulla sfera. In entrambi i casi ti rimane una raccolta di triangoli proiettati sulla sfera. Proiettando la sfera su una mappa (ad esempio, con una proiezione stereografica), l'aggregazione di questi triangoli in una regione poligonale può essere ridotta a un problema standard della geometria computazionale piana (ad esempio utilizzando un metodo di scansione piana). Il resto è facile (per un GIS).

Questa immagine mostra una piccola città di grattacieli simulati in una proiezione gnomonica centrata su uno spettatore del centro che guarda dritto in alto. Il GIS può "unire" (formare l'unione di) i poligoni che rappresentano i lati e i tetti di questi edifici e quindi calcolare l'area dello spazio (bianco) rimanente. È stata scelta una proiezione gnomonica perché le linee architettoniche rette sono rese come segmenti di linea piuttosto che curve.

Edifici simulati

Un GIS può essere messo in servizio per fare questo calcolo quando hai solo un terreno e degli edifici. Gli edifici sono probabilmente disponibili come raccolte di rettangoli. Un vertice di un rettangolo ha coordinate euclidee (x, y, z) relative a un visualizzatore. Converti quelli in coordinate sferiche: cioè latitudine e longitudine. Crea un poligono per il rettangolo convertito. Fallo per tutti i rettangoli per tutte le parti di tutti gli edifici, risultando in un "layer poligonale". Quindi, nel GIS, (1) calcolare l'unione set-teorica delle caratteristiche, (2) calcolare l'area risultante, (3) sottrarla da metà della superficie della terra (l'altra metà è per il suolo), e (4) dividere per l'intera area della terra (moltiplicando per 100 per ottenere una percentuale). Lo sforzo computazionale è proporzionale a N * log (N) dove N è il numero di vertici. La precisione dipende da quanto bene il GIS rappresenta i rettangoli (potrebbe essere necessario suddividere i lati del rettangolo in sequenze di vertici più ravvicinati). A seconda dei requisiti di precisione, potresti prendere in considerazione approcci basati su Monte-Carlo (ad esempio, il ray tracing ha richiesto un'altra risposta) una volta che hai più di diverse centinaia di migliaia di vertici, ovvero quando lo spettatore è completamente circondato da (e può vedere parti di) decine di migliaia di edifici :-).


ho fatto un sondaggio satellitare e ho calcolato l'altezza degli edifici e la distanza tra loro come posso usare quei dati per calcolare la percentuale di cielo visibile in base a dove mi trovavo? e se possibile potresti mostrare un esempio, avrei dovuto scriverlo in primo luogo scusa

@chris Va bene modificare la domanda originale. Indica semplicemente quali aspetti della domanda hai modificato in modo che le persone comprendano il contesto di eventuali risposte e commenti esistenti.
whuber

Potresti voler rendere più esplicito il fatto che è necessario un passo sindacale dopo la proiezione per prevenire il doppio conteggio degli occludatori sovrapposti?
Dan S.

@Dan La parola "unione" è proprio lì nell'originale al passaggio 1 :-).
whuber

@whuber Così è; Penso che il mio commento sia arrivato prima della tua modifica. O quello o è il risultato di una grave carenza di caffeina ieri.
Dan S.

5

Ecco una risposta che viene dal mondo della computer grafica piuttosto che dal GIS - quindi, è una descrizione di un algoritmo piuttosto che istruzioni per quale / i strumento / i usare.

Definizione: un raggio è un'origine + una direzione; è la linea che inizia all'origine e continua all'infinito lungo quella direzione.

Sono necessari i seguenti ingredienti di base:

  • Possibilità di testare per vedere se un determinato raggio colpisce il suolo.

  • Possibilità di testare per vedere se un determinato raggio colpisce un edificio.

  • Tutti i tuoi dati (edifici, informazioni che rappresentano il terreno) in uno spazio di coordinate cartesiane 3D.

Le formule esatte da implementare per i test dei raggi dipendono da come rappresenti "il terreno" (una sfera perfetta? Terreno?) E "un edificio" (un rettangolo estruso? Un modello 3D completo?). Per una geometria semplice, sono facili da trovare e facili da implementare. (ad esempio, cercare "intersezione cubo di raggio").

In ogni caso, da lì la risposta sulla percentuale di visibilità del cielo da un punto è banale: spara molti raggi con direzioni casuali dal tuo punto di ricerca. La proporzione di cielo visibile dal punto di prova è uguale al numero di raggi che non hanno colpito un edificio o il terreno.

La risposta non è esatta, ma puoi calcolarla a qualsiasi livello di precisione desiderato semplicemente aggiungendo più raggi.

Come descritto sopra, non è necessariamente molto veloce; ma c'è un'enorme quantità di ottimizzazioni ben documentate che puoi applicare.

(Mi aspetto che, per calcolare la visibilità del cielo attraverso un certo numero di punti e lo stesso set di dati degli edifici, questo approccio spazzerebbe via dall'acqua gli approcci basati sulla riproiezione dopo l'aggiunta di un semplice indice spaziale.)


Il problema principale è che l'accuratezza aumenta solo con la radice quadrata del numero di raggi. Se la percentuale di cielo è del 50%, ad esempio, hai bisogno di 100 raggi per ottenere una precisione del 5% (il che significa che sei sicuro di circa il 95% di entrare entro + -10%), 10.000 raggi per ottenere lo 0,5%, 1.000.000 per ottenere 0,05 %, (tre cifre), ecc.
whuber

@whuber Sono d'accordo, ma (1) per la domanda come descritta, l'accuratezza oltre una cifra o due è una commissione da pazzi, e (2) il campionamento adattivo cadrà nel "grande corpus di ottimizzazioni ben documentate". passato ;). Comunque sia, l'approccio "migliore" è certamente abbastanza situazionale.
Dan S.

@ OK, il campionamento adattivo è una buona idea. Ma come lo si fa nella pratica? Supponiamo di avere un DEM e, diciamo, alcune dozzine di edifici nelle vicinanze. Come funzionerebbe l'algoritmo, precisamente? È difficile immaginare un algoritmo efficace che sarebbe più semplice o più accurato di un calcolo diretto della copertura del cielo.
whuber

@whuber risponderò in un paio di parti ... Il primo: il campionamento adattivo si riduce ai raggi di polarizzazione in cui sono più propensi a fornire informazioni e quindi a tenere conto del bias durante l'integrazione. Un approccio semplice, efficace, sarebbe quello di eseguire un campionamento iniziale uniforme, quindi suddividere e ricampionare ricorsivamente semispazi sufficientemente non uniformi. Risposta finale = media ponderata dei campioni (peso = area dello spazio di ricerca contenente il campione).
Dan S.

Precisione: il campionamento adattivo significa che la precisione è più difficile da ragionare. Ottieni la stessa precisione di base dei campioni uniformi iniziali, oltre a un'accuratezza aggiuntiva che dipende fortemente dalla tecnica di adattamento e dalla scala delle caratteristiche ad alta frequenza nella geometria della scena. Tuttavia, credo che in una situazione del "mondo reale" si sarebbe in grado di convergere abbastanza rapidamente in un errore% inferiore a quello dei dati di origine.
Dan S.

3

Il fattore di visione del cielo (SVF) è definito dalla parte del cielo visibile (Ω) sopra un certo punto di osservazione visto da una rappresentazione bidimensionale (vedi figura a). L'algoritmo calcola l'angolo di elevazione verticale dell'orizzonte γi in n (otto sono presentate qui) in direzione del raggio specificato R (b).

Definizione del fattore di visualizzazione del cielo Il fattore di visione del cielo è stato proposto per ovviare agli svantaggi delle tecniche di visualizzazione esistenti, ad esempio i problemi di illuminazione direzionale nell'ombreggiamento analitico della collina.

La misura più conveniente per esprimere la parte del cielo visibile è l'angolo solido Ω. Questa è una misura della grandezza di un oggetto che appare a un osservatore. L'angolo solido di un oggetto è proporzionale all'area A della proiezione dell'oggetto sulla sfera dell'unità centrata nel punto di osservazione.

Gli intervalli SVF compresi tra 0 e 1. I valori vicini a 1 indicano che è visibile quasi l'intero emisfero, come nel caso delle caratteristiche esposte (piani e picchi), mentre i valori vicini a 0 sono presenti nei pozzi profondi e nelle parti inferiori delle valli profonde da dove quasi nessun cielo è visibile. SVF è una quantità fisica (se non manipoliamo i dati di elevazione per esagerazione verticale).

Come sottolineato da @mic_cord, c'è un articolo pubblicato sulla visualizzazione dei dati con SVF in Remote Sens. 2011, 3 (2), 398-415; doi: 10,3390 / rs3020398.

Uno strumento gratuito per il calcolo di SVF (e altro) è disponibile all'indirizzo http://iaps.zrc-sazu.si/en/rvt#v


+1 Le illustrazioni e i riferimenti aggiungono chiarezza e autorità a questo, il tuo primo post qui. Benvenuti nel nostro sito!
whuber

2

Ecotect (ora uno strumento AutoDesk ) ti consente di farlo. Più in generale, questo viene frequentemente esaminato nell'area dell'illuminazione diurna e uno strumento in questo campo potrebbe essere più facile da usare, rispetto al GIS. (Anche se ho sentito parlare di un plugin GIS che può fare questo e calcolare l'esposizione solare, ma non sono mai riuscito a trovarlo).


Analista solare dell'ESRI? (Funziona creando una griglia del cielo proiettato e quindi riassumendola.)
whuber

1
Ho pensato che fosse adatto solo per la vegetazione e non ho considerato l'ombra degli edifici, ecc. Esri.com/software/arcgis/extensions/spatialanalyst/solar.html Il file di aiuto menziona che considera la topografia, ma non gli edifici per esempio: aiuto. arcgis.com/en/arcgisdesktop/10.0/help/index.html#/…
djq

gli edifici (almeno quelli senza sporgenze) possono essere facilmente "bruciati" in griglie. Questo probabilmente non è un modo efficace per farlo perché hai bisogno di una piccola cella (e Solar Analyst ha i suoi limiti ...). Ho pensato che avresti potuto pensarci.
whuber

@whuber Stavo pensando di più all'esposizione solare delle pareti (ad esempio quale area è esposta a sud). Ho ipotizzato che il calcolo considerasse solo l'area della cella della griglia e non il "muro" (i pixel, anziché i voxel potrebbero essere un altro modo per descriverlo).
DJ

2

In GRASS GIS versione 7 (attualmente non stabile) c'è il comando r.skyview (basato sul comando r.horizon , disponibile anche in stabile GRASS v.6).

Legge un'immagine raster che rappresenta un modello di terreno, con un valore di pixel corrispondente alle altezze delle caratteristiche del terreno (ad es. Altezze di costruzione) e calcola, per ciascun pixel, il "fattore skyview".

Devi prima convertire i tuoi dati (formato sconosciuto) in un set di dati raster.

Vedere:

http://grass.osgeo.org/grass70/manuals/addons/r.skyview.html

http://www.mdpi.com/2072-4292/3/2/398

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.