Comments (6)
si potrebbe aggiungere una riga che il punto con la posizione originale (come facciamo quando cerchiamo solo l'indirizzo) ovviamente verrebbe una riga "a cazzo", ma almeno parte dal punto giusto!
from v4w_website.
Nell'shp dei civici ogni civico è una linea che collega la porta di strada alla casa, quindi secondo me la soluzione "più giusta" sarebbe trovare dallo shp file dei civici l'intersezione con la strada, aggiungere là un nodo fittizio e calcolare il percorso, oppure addirittura aggiungere direttamente l'edge del civico. Per fare ciò bisognerebbe dividere l'edge della strada in due aggiungendo un nodo in mezzo, ma dalla documentazione di networkx non capisco come fare questo passaggio
from v4w_website.
Concordo con @Lychfindel . Anche nel fatto che dalla documentazione di networkx non si capisce come fare la divisione di un arco.
Una soluzione piu semplice che potrebbe temporaneamente essere adottata sarebbe:
1 - ritornare da civico2coord entrambe le cose, la coordinata del civico E il nodo piu vicino
2 - creare un nuovo nodo G.add_node(coord_civico)
e creare un arco da quel nodo al nodo piu vicino G.add_edge(coord_civico, nodo_piu_vicino, weight=D )
dove D=dist2D(coord_civico, nodo_piu_vicino)
sarebbe una semplice distanza euclidea. O forse D puo anche essere 0 se non vogliamo influenzare i calcoli. Non sarebbe perfetto come l'shp ma probabilmente avrebbe una "diagonale", ma potrebbe funzionare e risparmiarci casini.
Il problema e pero, che dopo la ricerca bisogna rimuovere l'edge (altrimenti ne abbiamo milioni dopo un po') e qua bisogna stare attenti, non so bene quando farlo nel codice. Forse salvare una variabile con i archi_temporanei
e ogni volta lanciare [G.remove_edge(arco_tmp) for arco_tmp in archi_temporanei]
from v4w_website.
Io proporrei questa scaletta:
- proviamo ad aggiungere tutti i nodi dei civici e vediamo se facendo ciò la ricerca del percorso ottimo viene rallentata di tanto
Nel caso venga rallentato: - creare una copia del grafo su cui lavorare da ora in poi per la sessione di ricerca
- ritornare il civico, l'arco del civico e l'arco orginario su cui si collegherebbe l'arco del civico
- creare un nuovo nodo nel punto di intersezione e un nuovo arco dal civico al punto di intersezione
- creare due nuovi archi che colleghino i nodi dell'arco originario con il nuovo nodo creato al punto 4 (sovrascrivendo le informazioni di forma dall'arco originario)
- eliminare l'arco originario
- effettuare la ricerca sul grafo temporaneo
Ovviamente bisogna capire dal punto di vista computazionale cosa comporta tutto ciò
from v4w_website.
Risultati del test sul grafo con tutti i nodi che mandano agli indirizzi:
santa marghe
san basegio
ci ho messo 0.9164201159996992 a calcolare la posizione degli indirizzi
ci ho messo 0.006171320999783347 a calcolare la strada
ci ho messo 0.9068670179999572 a trovare il nodo di partenza con il grafo pesante
ci ho messo 0.04267677200004982 a calcolare la strada con il grafo pesante
sant'elena
ple roma
ci ho messo 0.7665785069998492 a calcolare la posizione degli indirizzi
ci ho messo 0.08762148699997852 a calcolare la strada
ci ho messo 1.4929195869999603 a trovare il nodo di partenza con il grafo pesante
ci ho messo 0.7370723660001204 a calcolare la strada con il grafo pesante
Celestia
Tre Archi
ci ho messo 0.7061049520002598 a calcolare la posizione degli indirizzi
ci ho messo 0.06817397599979813 a calcolare la strada
ci ho messo 1.107265715000267 a trovare il nodo di partenza con il grafo pesante
ci ho messo 0.3637642749999941 a calcolare la strada con il grafo pesante
Sembra che il grafo abbia un impatto contenuto sulla ricerca del nodo (questo si migliora con la proposta #30, visto che potremo direttamente prenderci il nodo di inserzione dal db, invece di cercare il nodo più vicino).
Ha invece un impatto pesante sulla ricerca del percorso (il tempo aumenta di 5-10 volte). Ma siamo su numeri molto piccoli, qualche decimo di secondo probabilmente possiamo tollerarlo.
from v4w_website.
Questa è stata risolta per quanto riguarda la precisione degli indirizzi. è stata inserita l'aggiunta dinamica nel grafo acqueo, da considerare anche, eventualmente per quello terrestre, se dovessimo decidere di farlo riapriremo una issue.
from v4w_website.
Related Issues (20)
- pwa su iphone - mancano dei tasti HOT 3
- Share e short_url HOT 1
- Variabili global HOT 2
- Passerelle HOT 1
- Routing utilizzando librerie esterne HOT 2
- Civici di tronchetto/ple roma HOT 1
- Civici a cavallo di più sestieri
- Scelta rive di partenza
- una volta modificata l'altezza della marea, l'unico modo per riottenere l'altezza automatica è eliminare la cache! HOT 1
- Mappa girabile HOT 2
- Bottoni HOT 1
- Aggiornamento automatico service worker
- Percorso mancante pescheria
- [WARNING] 'dynamic' loaders cannot be used with many-to-one/one-to-one relationships and/or uselist=False
- nomi non in stampatello database
- L'arsenale non è (purtroppo) attraversabile
- Cambio che non esiste HOT 1
- Percorso con spunta handicappati funziona, solo battello fa robe strane
- Poveglia sembra raggiungibile a piedi / threshold per punto di partenza grafo terreno?
- Confusione partenze/arrivi nei battelli
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from v4w_website.