Wir haben normalerweise Daten darüber, wo sich der Boden befindet, also müssen wir diese verwenden. Der Boden bestimmt eine feste Figur in 3D. Sie projizieren diese Figur radial auf die Einheitskugel, die auf den Betrachter zentriert ist. Dadurch wird der Boden auf eine Region in der Kugel abgebildet. Berechnen Sie die Fläche der verbleibenden Region: Dies ist der Raumwinkel, der vom Himmel begrenzt wird (in Steradians ). Teilen Sie es durch die Gesamtfläche der Kugel (gleich 4 pi) und multiplizieren Sie es mit 100, um den Himmelsprozentsatz zu erhalten.
Wenn Sie eine anschaulichere Erklärung bevorzugen, stellen Sie den Betrachter in die Mitte einer kleinen Kugelblase und bitten Sie ihn, über den Himmel zu malen. Teilen Sie die Menge an Farbe, die sie verbraucht, durch die Menge, die zum Malen der gesamten Blase erforderlich ist, und multiplizieren Sie sie mit 100.
In Wirklichkeit gibt es einige nicht so einfache technische Details.
Die Projektion auf die Kugel ist ziemlich einfach, wenn der Boden als trianguliertes Netzwerk (TIN) angegeben wird, da Sie nur Code schreiben müssen, um ein Dreieck auf eine Kugel zu projizieren. Wenn der Boden als Rasterhöhenmodell (DEM) angegeben wird, können Sie sich jede Rasterzelle als 3D-Viereck vorstellen. Sie können das in zwei Dreiecke entlang einer Diagonale aufteilen und jedes Dreieck auf die Kugel abbilden. In beiden Fällen verbleibt eine Sammlung von projizierten Dreiecken auf der Kugel. Durch Projizieren der Kugel auf eine Karte (z. B. mit einer stereografischen Projektion) kann die Aggregation dieser Dreiecke in einen polygonalen Bereich auf ein Standardproblem der Ebenenberechnungsgeometrie reduziert werden (z. B. unter Verwendung eines Ebenen-Sweep-Verfahrens). Der Rest ist einfach (für ein GIS).
Dieses Bild zeigt eine kleine Stadt von simulierten Wolkenkratzern in einer gnomonischen Projektion, die auf einen Betrachter im Stadtzentrum zentriert ist, der gerade nach oben schaut. Das GIS kann die Polygone, die die Seiten und Dächer dieser Gebäude darstellen, "zusammenführen" (die Vereinigung bilden) und dann die Fläche des verbleibenden (weißen) Raums berechnen. Eine gnomonische Projektion wurde gewählt, da die geraden architektonischen Linien eher als Liniensegmente als als Kurven gerendert werden.
Ein GIS kann in Betrieb genommen werden, um diese Berechnung durchzuführen, wenn Sie nur ein Grundstück und Gebäude haben. Die Gebäude sind höchstwahrscheinlich als Rechtecksammlungen erhältlich. Ein Eckpunkt eines Rechtecks hat euklidische Koordinaten (x, y, z) relativ zu einem Betrachter. Konvertieren Sie diese in sphärische Koordinaten: das heißt Breite und Länge. Erstellen Sie ein Polygon für das konvertierte Rechteck. Führen Sie dies für alle Rechtecke für alle Teile aller Gebäude aus, was zu einem "Polygon-Feature-Layer" führt. Dann wird im GIS (1) die satztheoretische Vereinigung der Merkmale berechnet, (2) die resultierende Fläche berechnet, (3) diese von der Hälfte der Erdoberfläche subtrahiert (die andere Hälfte ist für den Boden). und (4) durch die gesamte Fläche der Erde dividieren (mit 100 multiplizieren, um einen Prozentsatz zu erhalten). Der Rechenaufwand ist proportional zu N * log (N), wobei N die Anzahl der Eckpunkte ist. Die Genauigkeit hängt davon ab, wie gut das GIS die Rechtecke darstellt (möglicherweise müssen Sie die Rechteckseiten in Sequenzen mit engeren Scheitelpunkten aufteilen). Abhängig von Ihren Genauigkeitsanforderungen können Sie Monte-Carlo-basierte Ansätze in Betracht ziehen (zB die in einer anderen Antwort empfohlene Strahlverfolgung), wenn Sie mehr als mehrere hunderttausend Scheitelpunkte haben - das heißt, wenn der Betrachter vollständig von Zehntausenden von Gebäuden umgeben ist (und Teile davon sehen kann) :-).