Pregunta

Estoy trabajando en una aplicación que involucra algunas cosas gis. Habría algunos archivos .shp para leer y trazar en una pantalla opengl. La pantalla de opengl actual está usando la proyección ortográfica como se establece desde glOrtho () y ya está mostrando un mapa usando coordenadas de un simple archivo de texto ...

Ahora el mapa que se trazará se debe leer desde un archivo de forma.

Tengo las siguientes dudas:

  1. Cómo usar la proyección WGS84 del archivo .shp (como se lee del archivo .prj del archivo shape, formato WKT) en mi proyección glOrtho existente ... ¿hay alguna conversión que deba hacerse? y ¿en qué se diferencia de lo que configura glOrtho ()? básicamente, ¿cómo usar esta información?

  2. Mi aplicación debe configurarse de tal manera que pueda conocer el lat / long exacto de un punto en el mapa, por ejemplo. si estoy flotando en X city, se podría obtener su lat / long correcto. Sé que esto se puede hacer mediante el uso de open source utils / apis como GDAL / OGR, pero estoy en mal estado ya que la documentación de estos apis no está entrando en mi cabeza. Traté de encontrar algunos ejemplos de programas de C ++ pero no pude encontrar uno.

  3. Ya he escrito mi propia lógica para leer las coordenadas de un archivo de forma que contiene puntos / polilínea / polígono (usando C-shapelib) y trazado sobre mi pantalla opengl. Encontré un código de muestra OGR en el documento para leer un archivo de forma de PUNTOS pero ninguno para el archivo de forma POLYGON. Y el problema es que esta aplicación tiene que ser tan dinámica que al cargar el archivo de forma, debe configurar correctamente la proyección de la pantalla opengl dependiendo de la proyección del archivo .shp que se está leyendo. por ejemplo, WGS84, LCC, EVEREST MODIFICADO ... etc. ¿Cómo lograr esto desde la API de OGR?

Amablemente dé sus aportes sobre este problema ... Estoy realmente interesado en hacer que esto funcione, pero no estoy comenzando correctamente ...

¿Fue útil?

Solución

  1. La representación de archivos de forma es bastante sencilla en OpenGL. Es posible que necesite '' shapelib '', una biblioteca de análisis de archivos de forma gratuita en C (Google it). Use GL_POINTS para el archivo de forma de puntos, GL_LINES para el archivo de forma de línea y GL_LINE_LOOP para el archivo de forma de polígono. Establezca sus coordenadas de cuadro delimitador en orto.

  2. Lo que lees del archivo .prj es información de proyección. WGS84 le ofrece los cables lat / long (esféricos). Pero su sistema de visualización es 2D (Rectangular). Por lo tanto, debe convertir las cuerdas esféricas 3D a las cuerdas rectangulares 2D (este es el significado de la proyección). Los tipos de proyección son numerosos, dependiendo del área de interés en el globo (recuerde que la proyección distorsiona el área / forma / tamaño de las características). los tipos van desde Polyconic, Everest modificado, NAD, UTM, etc.,

  3. Si simplemente necesita WGS84, lea las coordenadas del cuadro delimitador de su archivo .sh y asígnelas a glOrtho. Si tiene alguna proyección (p. Ej .: -UTM), entonces convierte los cables de su cuadro delimitador en cables de Proyección y luego asigna los cables recién proyectados a glOrtho. Para convertir lat / long en cualquier proyección, puede necesitar bibliotecas de proyección como "Projlib" o "GeotransEngine" y etc.

Para obtener más aclaraciones, puede ponerse en contacto conmigo en dgplinux @ y a h o o. c o m

Otros consejos

Por favor, lea el Tutorial de la API de OGR donde puede aprender a leer datos vectoriales de fuentes como Shapefile. A continuación, consulte el Tutorial de proyecciones de OGR donde puede obtener información sobre cómo utilizar la información sobre proyección y espacial sistema de referencia leído de fuentes de OGR.

GDAL / OGR tiene todo lo que necesita para cargar un archivo vectorial y luego convertir las coordenadas. Entiendo su frustración con GDAL ya que la documentación no es la mejor. Si desea una buena introducción al uso de la API, mire gdalinfo.c y ogrinfo.cpp en el árbol de subversión GDAL. La fuente se puede ver en https://svn.osgeo.org/gdal/trunk/gdal.

Si eso no ayuda, tengo dos ejemplos básicos que utilizo para analizar la información del vector y hacer la conversión de coordenadas. Son realmente malos, pero pueden ayudar a entender el punto.

Carga de vectores

Conversión de coordenadas

Finalmente, si no está familiarizado con los formatos GIS, consideraría leer la introducción de ArcGIS aquí en Guide Books / Proyecciones de mapas . Puedo competir con expertos a pesar de no tener entrenamiento en cartografía debido a estas guías. Otra buena fuente es Wikipedia.

En caso de duda, simplemente elija una cuadrícula UTM con la que desee seguir y use UTM como su sistema de coordenadas. Utiliza X (Este), Y (Norte) y Z (Altitud). La única clave es elegir una única cuadrícula UTM y asegurarse de que todas las coordenadas la usen como referencia. El código UTM es fácil de probar, ya que hay muchas guías en línea. También puede encontrar el código de conversión utilizando OGR / GDAL u otros recursos. Otros sistemas de coordenadas proyectados valen la pena y pueden ser mejores, pero para empezar, consideraría eso.

Finalmente, si todo lo demás falla, eche un vistazo a NGA GeoTrans. Esa es una gran herramienta de prueba.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top