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?