Domanda

Sto lavorando ad un'applicazione che coinvolge alcune cose gis. Ci sarebbero alcuni file .shp da leggere e tracciare su uno schermo aperto. Lo schermo aperto corrente sta usando la proiezione ortografica impostata da glOrtho () e sta già visualizzando una mappa usando le coordinate di un semplice file di testo ..

Ora la mappa da tracciare deve essere letta da un file di forma.

Ho i seguenti dubbi:

  1. Come usare la proiezione WGS84 del file .shp (come letto dal file .prj del file shapefile, formato WKT) nella mia proiezione glOrtho esistente ... c'è qualche conversione da fare? e in cosa differisce da ciò che glOrtho () imposta? fondamentalmente come usare queste informazioni?

  2. La mia applicazione deve essere configurata in modo tale da poter conoscere l'esatto lat / long di un punto sulla mappa. per es. se sto volando su X city, potrebbe essere recuperato il suo lat / long corretto. So che questo può essere fatto usando utilis / API di opensource come GDAL / OGR ma sono incasinato poiché la documentazione di queste API non sta entrando nel mio capo. Ho provato a trovare alcuni programmi di esempio c ++ ma non sono riuscito a trovarne uno.

  3. Ho già scritto la mia logica per leggere le coordinate da un file di forma contenente punti / polilinea / poligono (usando C-shapelib) e tracciato sulla mia schermata iniziale. Ho trovato un codice di esempio OGR in doc da leggere uno shapefile POINTS ma nessuno per lo shapefile POLYGON. E il problema è che questa applicazione deve essere così dinamica che, caricando lo shapefile, dovrebbe impostare correttamente la proiezione dello schermo aperto a seconda della proiezione del file .shp che viene letto. ad es. WGS84, LCC, EVEREST MODIFICATO ... ecc. come raggiungere questo obiettivo da OGR api?

Fornisci cortesemente i tuoi suggerimenti su questo problema. Sono davvero entusiasta di farlo funzionare, ma non sto iniziando nel modo giusto.

È stato utile?

Soluzione

  1. Il rendering di Shapefile è abbastanza semplice in OpenGL. Potrebbe essere necessario " shapelib ", una libreria di analisi del file di forma gratuita in C (Google it). Utilizza GL_POINTS per shapefile dei punti, GL_LINES per file di forma della linea e GL_LINE_LOOP per file di forma del poligono. Imposta le coordinate del riquadro di selezione su Orto.

  2. Quello che leggi dal file .prj sono le informazioni di proiezione. WGS84 ti dà le corde lat / long (sferiche). Ma il tuo sistema di visualizzazione è 2D (rettangolare). Quindi, è necessario convertire i cordoni 3D sferici in cordoni rettangolari 2D (questo è il significato di Proiezione). I tipi di proiezione sono numerosi, a seconda dell'area di interesse sul globo (ricordare che la proiezione distorce l'area / forma / dimensione delle caratteristiche). i tipi vanno da Policonico, Everest modificato, NAD, UTM, ecc.,

  3. Se hai semplicemente bisogno di WGS84, leggi i coord del riquadro di selezione del tuo file .sh e assegnali a glOrtho. Se si dispone di una proiezione (ad esempio: -UTM), quindi si convertono i coord del riquadro di selezione in coorde di proiezione e quindi si assegnano i glord appena proiettati a glOrtho. Per convertire lat / long in qualsiasi Proiezione, potresti aver bisogno di librerie di proiezione come " Projlib " o " GeotransEngine " e ecc.

Per ulteriori chiarimenti potete contattarmi su dgplinux @ y a h o o. c o m

Altri suggerimenti

Per favore, leggi il Tutorial API OGR dove puoi imparare come leggere i dati vettoriali da fonti come Shapefile. Successivamente, controlla il Tutorial sulle proiezioni OGR dove puoi imparare come utilizzare le informazioni sulla proiezione e lo spazio sistema di riferimento letto da fonti OGR.

GDAL / OGR ha tutto il necessario per caricare un file vettoriale, quindi convertire tutte le coordinate. Comprendo la tua frustrazione per GDAL poiché la documentazione non è la migliore. Se vuoi una buona introduzione all'uso dell'API, guarda gdalinfo.c e ogrinfo.cpp nell'albero di sovversione GDAL. La fonte può essere vista su https://svn.osgeo.org/gdal/trunk/gdal.

Se ciò non aiuta, ho due esempi di base che uso per analizzare le informazioni vettoriali e fare la conversione delle coordinate. Sono davvero cattivi, ma possono aiutare a capire il punto.

Caricamento vettoriale

Conversione delle coordinate

Infine, se non si ha familiarità con i formati GIS, prenderei in considerazione la lettura dell'introduzione di ArcGIS qui in Guide / Proiezioni di mappe . Sono in grado di competere con esperti, nonostante nessuna formazione cartografica grazie a queste guide. Un'altra buona fonte è Wikipedia.

In caso di dubbi, scegli una griglia UTM con cui vuoi restare e usa UTM come sistema di coordinate. Utilizza X (Easting), Y (Northing) e Z (Altitude). L'unica chiave è scegliere una singola griglia UTM e assicurarsi che tutte le coordinate lo utilizzino come riferimento. UTM è facile da testare con il codice in quanto ci sono molte guide online. Puoi anche trovare il codice di conversione usando OGR / GDAL o altre risorse. Altri sistemi di coordinate proiettati sono utili e potrebbero essere migliori, ma vorrei iniziare con questo.

Infine, se tutto il resto fallisce, dai un'occhiata a NGA GeoTrans. Questo è un ottimo strumento di test.

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