2016-01-28 9 views
10

Ho un modello contiene punti geojson. Trovare il più vicino con i dati primaverili è abbastanza semplice, ma come recuperare la posizione più vicina per un percorso di consegna?Spring Data - MongoDb trovare le posizioni più vicine intorno a un percorso

sto ottenendo le informazioni di percorso da Google:

http://maps.googleapis.com/maps/api/directions/xml?origin=48.208174,16.373819&destination=48.340670,16.717540&sensor=false&units=metric&mode=driving

+0

Cosa hai provato fino ad ora? –

risposta

1

Google maps api restituisce "passaggi" del percorso, che ha le coordinate dei bordi di tale tratto. È possibile utilizzare questi bordi per creare punti estrapolati su quel tratto rettilineo. Li chiamiamo p1, p2, p3, p4 ... pN. Quindi si esegue $ vicino a query nel database per questi punti, sarà ottenere posizioni più vicine intorno a quella rotta.

enter image description here

Aprire database delle mappe strada fornisce informazioni delle coordinate del percorso, che può essere utilizzato per integrare i dati. Risposta dettagliata qui: Get exact geo coordinates along an entire route, Google Maps or OpenStreetMap

+0

Qualcuno potrebbe spiegare il downvote? – DhruvPathak

3

Le informazioni percorso dalla googleapi mappe è suddiviso in fasi che hanno una posizione di partenza e la posizione finale con coordinate di latitudine/longitudine.

Calcolare la distanza dei punti nel modello per tutte le posizioni di inizio/fine del percorso fornirebbe una misura della distanza dal punto del percorso. La "distanza" minima dai punti di inizio/fine percorso sarebbe la posizione più vicina al percorso.

È possibile ottimizzare il calcolo scartando tutti i punti quando la distanza calcolata è superiore alla distanza cumulativa minima precedente.

1

Innanzitutto, è necessario ottenere questo risultato e inserirlo in un array contenente Lat + Lng.

In secondo luogo, creare un metodo nel repository contenente il parametro che si desidera cercare con il termine "Entro".

Esempio:

List<MyObject> findByLocationWithin(Box box); 

Questo metodo rappresentano la rispettiva condizione:

{"location" : {"$geoWithin" : {"$box" : [ [x1, y1], [x2, y2]}}} 

Se avete bisogno di ulteriori informazioni si accede alla seguente link:

http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongodb.repositories.queries

https://docs.mongodb.org/manual/reference/operator/query/box/

Problemi correlati