Come mappare una latitudine / longitudine di una mappa distorta?

voti
22

Ho un sacco di coppie latitudine / longitudine che mappano noto x / y coordinate su una mappa (geograficamente distorta).

Poi ho un altro paio di latitudine / longitudine. Voglio tracciare sulla mappa come meglio è possibile. Come procedo a fare questo?

In un primo momento ho deciso di creare un sistema di equazioni lineari per i tre punti più vicine lat / lungo e calcolare una trasformazione da questi, ma questo non funziona bene a tutti. Dal momento che questo è un sistema lineare, non posso utilizzare i punti più vicini o.

Non si può assumere Nord in alto: hai a disposizione solo le esistenti lat / lungo> x / y mappature.

EDIT: non è una proiezione di Mercatore, o qualcosa di simile. E 'arbitrariamente distorto per migliorare la leggibilità (si pensi mappa della metropolitana). Voglio usare solo i più vicini 5 a 10 mappature in modo che la distorsione in altre parti della mappa non influisce sulla mappatura che sto cercando di calcolare.

Inoltre, l'intera mappa è in una piccola area geografica quindi non c'è bisogno di preoccuparsi per il mondo - ipotesi TV a terra sono abbastanza buone.

È pubblicato 05/08/2008 alle 05:55
fonte dall'utente
In altre lingue...                            


4 risposte

voti
8

Ci sono dei dettagli più specifici sul tipo di distorsione? Se, ad esempio, i tuoi latitudini e longitudini sono "distorti" sulla vostra mappa 2D utilizzando una proiezione di Mercatore, la matematica conversione è prontamente disponibile .

Se la mappa è distorta veramente arbitrariamente, ci sono un sacco di cose che si potrebbe provare, ma la più semplice sarebbe probabilmente per calcolare una media ponderata dai vostri mappature punto esistente. I vostri pesi potrebbe essere l'inverso quadrato del x / y distanza dal vostro nuovo punto a ciascuno dei vostri punti esistenti.

Alcuni pseudocodice:

estimate-latitude-longitude (x, y)

    numerator-latitude := 0
    numerator-longitude := 0
    denominator := 0

    for each point,
        deltaX := x - point.x
        deltaY := y - point.y
        distSq := deltaX * deltaX + deltaY * deltaY
        weight := 1 / distSq

        numerator-latitude += weight * point.latitude
        numerator-longitude += weight * point.longitude
        denominator += weight

    return (numerator-latitude / denominator, numerator-longitude / denominator)

Questo codice darà una relativamente semplice approssimazione. Se si può essere più precisi sul modo in cui la proiezione distorce le coordinate geografiche, probabilmente si può fare molto meglio.

Risposto il 05/08/2008 a 06:48
fonte dall'utente

voti
2

Tutto apposto. Da un punto di vista teorico, dato che la distorsione è "arbitrario", e qualsiasi soluzione richiede di modellare questa distorsione arbitraria, ovviamente non è possibile ottenere una "risposta". Tuttavia, qualsiasi soluzione sta per coinvolgere imponente (di solito implicitamente) qualche modello della distorsione che possono o non possono riflettere la realtà della situazione.

Dal momento che ti sembra di essere più interessato a modelli che presuppongono una sorta di continuità locale della mappatura di distorsione, la scelta più ovvia è quella che hai già provato: interpolaton lineare tra i punti più vicini. Al di là che sta andando a richiedere più sofisticate conoscenze di analisi matematica e numerica.

Lei è errato, tuttavia, nel presumere non è possibile espandere questo per più punti. È possibile, utilizzando un approccio di errore di meno-squared. Trova la risposta lineare che minimizza l'errore degli altri punti. Questo è probabilmente l'estensione più straight-forward. In altre parole, prendere i 5 punti più vicini e cercare di trovare un'approssimazione lineare che minimizza l'errore di tali punti. E l'uso che. Vorrei provare questa prossima.

Se questo non funziona, allora l'ipotesi della linearità su tutta l'area di N punti è rotto. A quel punto sarà necessario effettuare l'aggiornamento a un modello quadratica o cubica. La matematica sta per arrivare frenetico a quel punto.

Risposto il 05/08/2008 a 16:47
fonte dall'utente

voti
0

Ummm. Forse mi manca qualcosa sulla questione qui, ma se si dispone di informazioni lungo / lat, si ha anche la direzione del nord?

Sembra è necessario mappare le coordinate geodetiche a un sistema di coordinate proiettato. Per esempio OSGB in WGS84.

La matematica coinvolti non è banale, ma il codice viene fuori un solo poche righe. Se avessi avuto più tempo avrei postare di più, ma ho bisogno di una doccia così sarò noioso e link alla wikipedia ingresso che è abbastanza buono.

Nota: doccia messaggio modificato.

Risposto il 05/08/2008 a 06:21
fonte dall'utente

voti
0

il problema è che la sfera può essere distorta di un certo numero di modi, e avendo tutti quei punti noti sull'equatore, permette di dire, non aiuterà di mappare i punti più distanti.

Avete bisogno di una migliore punti 'vicine', allora si può assumere questi tre punti sono su un aereo con la quarta e fare l'interpolazione --knowing che la distanza di longitudini è una funzione, non è una costante.

Risposto il 05/08/2008 a 06:20
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more