Domanda

Ho le coordinate geografiche (longitudine e latidute) di alcune città e vorrebbe ottenere il coordinate x, y così li può tracciare in una mappa.

La mappa è una standart, proprio come http: // www. wordtravels.com/images/map/Spain/Fuerteventura_map.jpg per esempio.

Ho provato diversi ho trovato formulario, ma nessuno sembra veramente lavoro :( codice JavaScript Semplice o rubino sarebbe meglio:.)

È stato utile?

Soluzione

In aggiunta alle risposte di cui sopra, v'è la biblioteca aperta proj4js sorgente che svolge trasforma tra le varie proiezioni cartografiche. è usato internamente da OpenLayers per questo genere di cose, e supporta una serie di proiezioni popolari e sistemi di coordinate.

Altri suggerimenti

Ci sono molti modi per affrontare questo problema con vari gradi di precisione. Tuttavia, tutte si riducono di eseguire una proiezione che corrisponde a quella della mappa.

Se si sa che la mappa è della varietà proiezione di Mercatore, allora i lat lunghi coordinate / possono semplicemente essere trattati come X / Y, scalato e tradotto in modo appropriato. Che è, si dovrebbe trovare un semplice ax + b + d e cy che fare il lavoro.

Se la mappa non è Mercator-proiezione (come probabilmente non lo è se si cerca di ottenere la scala coerente, perché questo sembra uno da fare) allora la cosa migliore è quella di assumere è una proiezione "terra-tangenti". (Questo funziona OK per le piccole masse terrestri). In questo caso, è necessario primo progetto il Lat / Long in un sistema di coordinate a tre dimensioni.

z=sin(lat)
x=cos(lat)*sin(long)
y=cos(lat)*cos(long)

Z positivo punti al polo nord. Y positivo punti a 0, 0, e positivi punti x per lat 0 lunga 90 (est) e positivo latitudine / longitudine si trovano a nord e ad est. Naturalmente è necessario convertire in radianti primi.

Tutto questo presuppone una Terra sferica, che non è esattamente vero, ma è abbastanza vicino a meno che non si sta sparando colpi di mortaio a lungo raggio.

In ogni caso, una volta che hai il tuo XYZ, allora avrete bisogno di ruotare e la scala per la mappa. Per ruotare attorno all'asse Z, basta sottrarre la longitudine di base prima di progetto in tre dimensioni. Fate questo per centrare la vostra mappa su zero della longitudine per la semplice matematica.

Una volta fatto questo, avrete solo bisogno di ruotare il globo in avanti fino a quando la mappa originale è faccia anteriore. Farlo con una rotazione 2-d nell'asse y-z. Utilizzare http://en.wikipedia.org/wiki/Coordinate_rotations_and_reflections per cifra che parte fuori.

Infine, la x, z coordinate stanno per allinearsi abbastanza bene con x della tua mappa, coordinate y, per una scala appropriata / tradurre come descritto in precedenza.

Forse questo aiuto, ho fatto un'implementazione per gli Stati Uniti utilizzando solo javascript.

demo / code: http://the55.net/_11/sketch/us_map

Utilizzare l'API di Google Maps, è possibile sovrapporre la tua jpg sulla mappa e posizionarlo correttamente.

Ecco un esempio http://code.google.com/apis/ mappe / documentazione / javascript / examples / overlay-hideshow.html

e qui è la pagina di api su sovrapposizioni http://code.google.com/apis/maps/documentation/ javascript / overlays.html

Non sarà facile a meno che non si sta lavorando su una scala molto piccola (e vicino all'equatore). di Wikipedia geografica sistema è un buon inizio ...

coordinate

Il percorso più facile potrebbe essere quella di fare uso di qualcosa di simile a web mapping e bastone con il tuo latitudini e longitudini.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top