Come trovare gli edifici (poligoni) che un utente può vedere da una determinata posizione (punto) e orientamento (angolo)?


10

Vorrei recuperare l'insieme di edifici che posso vedere da una determinata posizione (punto -lat, lng) e orientamento (intervallo di angoli) + certamente con una data profondità (ad esempio 100 metri). Idealmente vorrei come output qualcosa di simile: dall'angolo 1 all'angolo2 l'utente può vedere l'edificio 1, dall'angolo 2 all'angolo3 vediamo l'edificio 2.

Dati = poligoni che rappresentano gli edifici di una città in shapefile.

input: una posizione e un orientamento (intervallo di angolo) per rappresentare la percezione visiva di una persona.

output :
Versione 1 - un elenco di {BuildingID}
Versione 2 (migliore) - elenco di {BuildingID, insieme di segmenti visibili per ogni edificio (facciata di edifici)}
Versione 3 (output ideale) - un elenco di {buildingID, intervalli angolari }. (ad esempio, dall'angolo 1 all'angolo2 l'utente può vedere l'edificio 1, dall'angolo 2 all'angolo3 vediamo l'edificio 2, ecc.)

Casella degli strumenti che posso usare: PostGis, QGis, ruby, R

inizio della soluzione per l'output v1:
- creazione di un triangolo che rappresenta l'ambito visivo semplificato dell'utente per un dato punto e orientamento (intervallo interno di angolo) e con un certo raggio / profondità (ad es. 100 metri)
- calcolo dell'intersezione con gli edifici (ad es. ST_INTERSECTION ) e ambito visivo. ma un edificio può nasconderne un altro, quindi l'intersezione pura tra campo visivo e edifici potrebbe non aggiungere edifici visibili. questo problema deve essere affrontato.

aggiornamento: potenziale soluzione 2 - creazione di un triangolo che rappresenta l'ambito visivo semplificato dell'utente per un determinato punto e orientamento (intervallo interno di angolo) e con un certo raggio / profondità (ad es. 100 metri) - creazione di n raggi (LINEA) con angoli diversi riempiendo gli ambiti.
- trasformazione di tutti gli edifici (POLIGONI) in SEGMENTI / LINEE
- per ogni raggio che trova il SEGMENTO più vicino e il relativo buildingID. (ST_DISTANCE, ST_DWithin)
in questa fase, quindi dovremmo avere un elenco di raggi e il relativo ID edificio.
- quindi potremmo aggregare questo elenco {intervalli di angoli, ID edificio correlato}.

Qualche idea su un modo più efficiente di fare?

Risposte:


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.