Determina le coordinate esatte per un'immagine di mappa?

2

Mio fratello mi ha suggerito di scrivere un'app Web che consenta agli studenti di creare e stampare mappe vuote. Una mappa vuota è una mappa che contiene confini di paesi, acque ecc. Ma senza etichette di testo. Il primo caso d'uso è il seguente:

  1. L'utente seleziona "Ungheria" da un elenco. Una mappa vuota dell'Ungheria appare sullo schermo.
  2. L'utente inserisce il nome di una città o di un luogo ungherese in una casella di testo. Un piccolo indicatore appare sulla mappa nel luogo specificato, ma senza un'etichetta di testo.
  3. L'utente ripete il passaggio 2 tutte le volte che desidera, con città diverse.
  4. L'utente stampa l'immagine risultante e la utilizza per esercitarsi per la sua prossima storia o per l'esame di geografia. Il compito d'esame è lo stesso: ricevere una mappa vuota con marcatori senza testo e devi compilare i nomi delle città dalla memoria.

Così ho iniziato a scrivere l'app, e al punto 1 ho incontrato il primo problema. Non ho un database di mappe vuote. Per consentire all'utente di selezionare una mappa vuota da un elenco, qualcuno deve creare e riempire un database di mappe vuote, in cui la tabella maps ha la seguente definizione (pseudo-): / p>

 CREATE TABLE maps (
     name TEXT PRIMARY KEY,
     image BLOB,
     minlat FLOAT,
     minlon FLOAT,
     maxlat FLOAT,
     maxlon FLOAT
 );

Ho deciso di compilare personalmente una o due righe di questo tavolo per il test. Ho scaricato questa mappa vuota dell'Ungheria con una rapida ricerca su Google:

Ora,comepossodeterminarelecoordinate?ProviamoacreareunasovrapposizioneinGoogleEarth:

Come puoi vedere, non sono riuscito a posizionarlo con precisione, i confini orientali sono un po 'spenti. Quindi la mia domanda è:

Dato un file immagine che mostra una mappa, come faccio a determinare le coordinate lat / lon esatte dei suoi angoli?

    
posta marczellm 17.01.2015 - 15:09
fonte

1 risposta

3

Dipende dalla mappa. Le mappe cartografiche sono proiezioni di una superficie (quasi) sferica su una superficie piana bidimensionale. Cioè:

(X, Y) = Fproj(Lat, Long)

dove Fproj () è la funzione di proiezione.

Ad esempio, per una proiezione standard di Mercator con l'asse X sull'equatore e l'asse Y sul meridiano 0:

X = Longitude
Y = ln(tan(Latitude) + sec(Latitude))

Se conosci il tipo di proiezione della mappa e il lat / long degli angoli della mappa, puoi essere in grado di determinare il lat / long in base alle coordinate X, Y facendo una proiezione inversa.

Wolfram MathWorld ha un buon catalogo di proiezioni cartografiche e le loro inverse.

Se sei interessato a visualizzare mappe basate su dati di latitudine e longitudine esistenti e sei disposto a scrivere le tue funzioni di proiezione cartografica (la maggior parte sono davvero facili da implementare), puoi utilizzare una qualsiasi delle varie fonti di database e flat file che contengono confini di paesi, laghi, fiumi, ecc. Una breve ricerca con il mio motore di ricerca preferito mostra questi due:

Dati terrestri naturali ThematicMapping.org

Se non si conosce la proiezione della mappa, ma si sa che Latitudine, Longitudine di diversi punti sulla mappa, è possibile utilizzare l'interpolazione per stimare il Lat, Long di punti sulla mappa in base al Lat, Long di vicini registrati punti.

    
risposta data 18.02.2015 - 21:12
fonte

Leggi altre domande sui tag