Calcul du pourcentage de ciel visible?

14

Quelqu'un peut-il expliquer, aussi simplement que possible, comment calculer le pourcentage de ciel visible?

J'ai fait une enquête par satellite et j'ai calculé la hauteur des bâtiments et la distance entre eux.

Comment utiliser ces données pour calculer le pourcentage de ciel visible en fonction de ma position?

nmtoken
la source

Réponses:

12

Nous avons généralement des données concernant l'emplacement du sol , nous devons donc les utiliser. Le sol détermine une figure solide en 3D. Vous projetez cette figure radialement sur la sphère unitaire centrée sur le spectateur: cela cartographie le sol sur une région de la sphère. Calculez l'aire de la région restante : c'est l'angle solide sous-tendu par le ciel (en stéradians ). Divisez-le par la surface totale de la sphère (égale à 4 pi) et multipliez par 100 pour obtenir le pourcentage du ciel.

Si vous préférez une explication plus vivante, placez le spectateur au centre d'une petite bulle sphérique et demandez-lui de peindre sur le ciel. Divisez la quantité de peinture qu'elle utilise par la quantité nécessaire pour peindre la bulle entière et multipliez par 100.

En réalité, il y a des détails techniques pas si simples.

La projection sur la sphère est assez simple lorsque le sol est donné comme un réseau triangulé (un TIN), car il suffit d'écrire du code pour projeter un triangle sur une sphère. Lorsque le sol est donné sous la forme d'un modèle d'élévation quadrillé (DEM), vous pouvez concevoir chaque cellule de la grille comme un quadrilatère 3D. Vous pouvez diviser cela en deux triangles le long d'une diagonale et mapper chaque triangle sur la sphère. Dans les deux cas, vous vous retrouvez avec une collection de triangles projetés sur la sphère. En projetant la sphère sur une carte (par exemple, avec une projection stéréographique), l'agrégation de ces triangles dans une région polygonale peut être réduite à un problème standard de géométrie de calcul plane (en utilisant une méthode de balayage plan, par exemple). Le reste est facile (pour un SIG).

Cette image montre une petite ville de gratte-ciel simulés dans une projection gnomonique centrée sur un spectateur du centre-ville regardant droit vers le haut. Le SIG peut «fusionner» (former l'union de) les polygones représentant les côtés et les toits de ces bâtiments, puis calculer la superficie de l'espace (blanc) restant. Une projection gnomonique a été choisie car les lignes architecturales droites sont rendues sous forme de segments de ligne plutôt que de courbes.

Bâtiments simulés

Un SIG peut être mis en service pour effectuer ce calcul lorsque vous n'avez qu'un terrain et des bâtiments. Les bâtiments sont très probablement disponibles sous forme de collections de rectangles. Un sommet d'un rectangle a des coordonnées euclidiennes (x, y, z) par rapport à une visionneuse. Convertissez-les en coordonnées sphériques: la latitude et la longitude. Créez un polygone pour le rectangle converti. Effectuez cette opération pour tous les rectangles pour toutes les parties de tous les bâtiments, ce qui donne une "couche d'entités surfaciques". Ensuite, dans le SIG, (1) calculer l'union théorique des caractéristiques, (2) calculer la surface résultante, (3) la soustraire de la moitié de la surface de la terre (l'autre moitié est pour le sol), et (4) diviser par toute la surface de la terre (multiplier par 100 pour obtenir un pourcentage). L'effort de calcul est proportionnel à N * log (N) où N est le nombre de sommets. La précision dépend de la façon dont le SIG représente les rectangles (vous devrez peut-être diviser les côtés du rectangle en séquences de sommets plus rapprochés). En fonction de vos exigences de précision, vous pouvez envisager des approches basées sur Monte-Carlo (par exemple, le lancer de rayons préconisé dans une autre réponse) une fois que vous avez plus de plusieurs centaines de milliers de sommets - c'est-à-dire, une fois que le spectateur est complètement entouré par (et peut voir des parties de) des dizaines de milliers de bâtiments :-).

whuber
la source
j'ai fait un relevé satellite et j'ai calculé la hauteur des bâtiments et la distance entre eux comment utiliser ces données pour calculer le pourcentage de ciel visible en fonction de l'endroit où je me trouvais? et si possible pourriez-vous montrer un exemple, j'aurais dû écrire ceci en premier lieu désolé
@chris Vous pouvez modifier votre question d'origine. Indiquez simplement les aspects de la question que vous avez modifiés afin que les gens comprennent le contexte des réponses et des commentaires existants.
whuber
Vous voudrez peut-être rendre plus explicite le fait qu'une étape d'union soit requise après la projection pour éviter les doubles occluseurs qui se chevauchent?
Dan S.
@Dan Le mot "union" est juste là dans l'original à l'étape 1 :-).
whuber
@whuber Il en est ainsi; Je pense que mon commentaire est venu avant votre montage. Soit cela, soit c'est le résultat d'une grave pénurie de caféine hier.
Dan S.
5

Voici une réponse qui vient du monde de l'infographie plutôt que du SIG - par conséquent, c'est une description d'un algorithme plutôt que des instructions pour quel (s) outil (s) utiliser.

Définition: un rayon est une origine + une direction; c'est la ligne qui commence à l'origine et continue à l'infini dans cette direction.

Vous avez besoin des ingrédients de base suivants:

  • Possibilité de tester pour voir si un rayon donné touche le sol.

  • Possibilité de tester pour voir si un rayon donné frappe un bâtiment.

  • Toutes vos données (les bâtiments, les informations qui représentent le sol) dans un espace de coordonnées cartésiennes 3D.

Les formules exactes à mettre en œuvre pour les tests de rayons dépendent de la façon dont vous représentez «le sol» (une sphère parfaite? Un terrain?) Et «un bâtiment» (un rectangle extrudé? Un modèle 3D complet?). Pour une géométrie simple, ils sont faciles à trouver et à mettre en œuvre. (par exemple, recherchez "intersection de rayons").

Dans tous les cas, à partir de là, la réponse quant au% de visibilité du ciel à partir d'un point est triviale: lancez beaucoup de rayons avec des directions aléatoires à partir de votre point de requête. La proportion de ciel visible depuis votre point de test est égale au nombre de rayons qui n'ont pas touché un bâtiment ou le sol.

La réponse n'est pas exacte, mais vous pouvez la calculer au niveau de précision souhaité en ajoutant simplement plus de rayons.

Comme décrit ci-dessus, ce n'est pas nécessairement très rapide; mais il existe un grand nombre d'optimisations bien documentées que vous pouvez appliquer.

(Je m'attends à ce que, pour calculer la visibilité du ciel à travers un certain nombre de points et le même ensemble de données sur les bâtiments, cette approche fasse sauter les approches basées sur la reprojection hors de l'eau après l'ajout d'un indice spatial simple.)

Dan S.
la source
Le problème principal est que la précision n'augmente qu'avec la racine carrée du nombre de rayons. Si le pourcentage du ciel est de 50%, par exemple, vous avez besoin de 100 rayons pour obtenir une précision de 5% (ce qui signifie vraiment que vous avez environ 95% de confiance pour atteindre + -10%), 10 000 rayons pour obtenir 0,5%, 1 000 000 pour obtenir 0,05 %, (trois chiffres), etc.
whuber
@whuber, je suis d'accord, mais (1) pour la question telle que décrite, la précision au-delà d'un chiffre ou deux est une course de dupes, et (2) l'échantillonnage adaptatif tomberait dans le «vaste corps d'optimisations bien documentées» que j'ai agité à la main passé;). Cependant, qu'il s'agisse de la "meilleure" approche est certainement assez situationnel.
Dan S.
@ Dan OK, l'échantillonnage adaptatif est une bonne idée. Mais comment la mettre en pratique? Supposons que vous ayez un DEM et, disons, quelques dizaines de bâtiments à proximité. Comment l'algorithme fonctionnerait-il précisément? Il est difficile d'imaginer un algorithme efficace qui serait plus simple ou plus précis qu'un calcul direct de la couverture du ciel.
whuber
@whuber, je vais répondre en deux parties ... La première: l'échantillonnage adaptatif se résume à polariser les rayons là où ils sont plus susceptibles de fournir des informations, puis de tenir compte du biais lors de l'intégration. Une approche simple et efficace consisterait à effectuer un échantillonnage initial uniforme, puis à subdiviser et rééchantillonner récursivement des demi-espaces suffisamment non uniformes. Réponse finale = moyenne pondérée des échantillons (poids = zone de l'espace de recherche contenant l'échantillon).
Dan S.
Sur la précision: l'échantillonnage adaptatif signifie que la précision est plus difficile à raisonner. Vous obtenez la même précision de base que vous obtiendriez des échantillons uniformes initiaux, ainsi qu'une précision supplémentaire qui dépend fortement de la technique d'adaptation et de l'échelle des caractéristiques haute fréquence dans la géométrie de la scène. Cependant, je pense que dans une situation "réelle", vous pourriez converger assez rapidement vers une erreur% inférieure à celle des données source.
Dan S.
3

Le facteur de vision du ciel (SVF) est défini par la partie du ciel visible (Ω) au-dessus d'un certain point d'observation, vue à partir d'une représentation bidimensionnelle (voir figure a). L'algorithme calcule l'angle d'élévation verticale de l'horizon γi dans n directions (huit sont présentées ici) au rayon spécifié R (b).

Définition du facteur de vue du ciel Le facteur de vue du ciel a été proposé pour surmonter les inconvénients des techniques de visualisation existantes, par exemple les problèmes d'éclairage directionnel dans l'ombrage analytique des collines.

La mesure la plus pratique pour exprimer la partie du ciel visible est l'angle solide Ω. Il s'agit d'une mesure de la taille d'un objet qui apparaît à un observateur. L'angle solide d'un objet est proportionnel à la zone A de la projection de l'objet sur la sphère d'unité centrée au point d'observation.

La SVF se situe entre 0 et 1. Des valeurs proches de 1 signifient que presque tout l'hémisphère est visible, ce qui est le cas dans les entités exposées (plans et pics), tandis que des valeurs proches de 0 sont présentes dans les puits profonds et les parties inférieures des vallées profondes de où presque aucun ciel n'est visible. SVF est une grandeur physique (si nous ne manipulons pas les données d'élévation par exagération verticale).

Comme l'a souligné @mic_cord, un article a été publié sur la visualisation des données avec SVF dans Remote Sens. 2011, 3 (2), 398-415; doi: 10,3390 / rs3020398.

Un outil gratuit pour calculer SVF (et plus) est disponible sur http://iaps.zrc-sazu.si/en/rvt#v

KrOstir
la source
+1 Les illustrations et les références ajoutent clarté et autorité à cela, votre premier post ici. Bienvenue sur notre site!
whuber
2

Ecotect (désormais un outil AutoDesk ) vous permet de le faire. Plus généralement, cela est fréquemment examiné dans le domaine de l'éclairage naturel et un outil de ce domaine pourrait être plus facile à utiliser que le SIG. (Bien que j'aie entendu parler d'un plugin SIG qui puisse faire cela et calculer l'exposition solaire, mais je n'ai jamais réussi à le trouver).

djq
la source
Analyste solaire d'ESRI? (Cela fonctionne en créant une grille du ciel projeté puis en résumant la grille.)
whuber
1
Je pensais que cela ne convenait qu'à la végétation et ne considérais pas l'ombrage des bâtiments, etc. esri.com/software/arcgis/extensions/spatialanalyst/solar.html Le fichier d'aide mentionne qu'il considère la topographie, mais pas les bâtiments par exemple: l' aide. arcgis.com/en/arcgisdesktop/10.0/help/index.html#/…
djq
les bâtiments (du moins ceux sans surplomb) peuvent facilement être «brûlés» dans des grilles. Ce n'est probablement pas un moyen efficace de s'y prendre car vous avez besoin d'une petite taille de cellule (et Solar Analyst a ses propres limites ...). Je pensais juste que tu y avais pensé.
whuber
@whuber Je pensais davantage à l'exposition solaire des murs (par exemple quelle zone est orientée plein sud). J'ai supposé que le calcul ne considère que la zone des cellules de la grille, et non le «mur» (les pixels, plutôt que les voxels, pourraient être une autre façon de le décrire).
djq
2

Dans GRASS GIS version 7 (en fait pas stable), il y a la commande r.skyview (basée sur la commande r.horizon , également disponible dans GRASS stable v.6).

Il lit une image raster représentant un modèle de terrain, avec une valeur de pixel correspondant aux hauteurs des caractéristiques du terrain (par exemple, les hauteurs des bâtiments) et calcule, pour chaque pixel, le "facteur de vision du ciel".

Vous devez d'abord convertir vos données (format inconnu) en un jeu de données raster.

Voir:

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

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

mic_cord
la source