Si el artículo es un artículo original, indique la fuente del artículo original al reproducirlo.
La dirección del blog de este artículo: https://hpzwl.blog.csdn.net/article/details/131931309
Red Fatty Network Technology Blog Encyclopedia: La colección de tecnología de desarrollo (incluida la tecnología práctica Qt, Raspberry Pi, 3D, OpenCV, OpenGL, ffmpeg, OSG, microcomputadora de un solo chip, combinación de software y hardware, etc.) se actualiza continuamente...
Columna de desarrollo de Qt: tecnología de desarrollo de bibliotecas de tres partes
Anterior: No más
Siguiente: Estén atentos...
prefacio
El desarrollo del terminal de posicionamiento global de Beidou se realiza en el sistema Kirin, y la herramienta de depuración debe ser una versión de Windows para facilitar la corrección de pruebas. El Beidou GPS envía las coordenadas geodésicas, y la aplicación necesita las coordenadas de latitud y longitud, por lo que debe ser convertido. Puede usar la fórmula para convertir, pero antes involucró montañas. Utilizó inteligentemente WG para un proyecto, y finalmente eligió la biblioteca GDAL para la conversión.
Aviso
Si el lector no requiere mingw32, se recomienda no utilizar la versión mingw32 de dgal. El proceso de compilación es muy tortuoso.
blog relacionado
" Notas de desarrollo del sistema Kylin (12): Compile la biblioteca GDAL en el sistema Kylin doméstico, cree un entorno de desarrollo básico y una demostración básica" "Notas de desarrollo Qt +
GDAL (1): Compile la biblioteca GDAL en el sistema Windows mingw32, cree un entorno de desarrollo y una demostración de base》
Introducción a las coordenadas geodésicas
descripción general
Las coordenadas geodésicas son las coordenadas del elipsoide de referencia en el levantamiento geodésico. La posición del punto P del terreno se expresa mediante la longitud L de la tierra, la latitud B de la tierra y la altura H de la tierra.
principio
Cuando el punto está en el elipsoide de referencia, solo se representa mediante la longitud geodésica y la latitud geodésica. La longitud geodésica es el ángulo entre el plano geodésico que pasa por el punto y el plano geodésico de origen (el plano meridiano que pasa por el Observatorio de Greenwich). Se estipula que contando desde el plano meridiano inicial, la longitud este de 0° a 180° se denomina longitud este; la longitud oeste de 0° a 180° se denomina longitud oeste. La latitud geodésica es el ángulo entre la línea normal que pasa por el punto y el plano ecuatorial, se estipula que a partir del plano ecuatorial, la latitud norte de 0° a 90° del plano ecuatorial se denomina latitud norte, la latitud sur desde 0° a 90° se llama latitud sur. La altura geodésica es la distancia desde el punto del suelo a lo largo de la normal hasta el elipsoide de referencia.
Sistema de coordenadas Beijing 54: BJZ54
El sistema de coordenadas Beijing 54 (BJZ54) significa que el sistema de coordenadas Beijing 54 es el sistema de coordenadas geodésicas del ginseng. Un punto en la tierra se puede ubicar por la longitud L54, la latitud M54 y la altura geodésica H54. Se basa en el elipsoide de Krasovsky. El sistema de coordenadas resultante después del ajuste local.
- Eje semi-mayor a = 6378245m
- Eje semi-menor b = 6356863.0188m
- Primera excentricidad al cuadrado e2 = 0.006693421622
- Planitud α =1/298.3
Sistema de coordenadas geodésicas mundial: WGS-84
El sistema de coordenadas WGS-84 es el sistema de coordenadas geodésicas mundial, su origen de coordenadas está en el centro de la tierra y se adopta el elipsoide WGS-84 (sistema de coordenadas geodésicas mundial de 1984).
El sistema de coordenadas WGS-84 es un sistema de coordenadas geodésicas desarrollado y determinado por el Departamento de Defensa de EE. UU., y es un sistema de coordenadas terrestres de protocolo.
La definición del sistema de coordenadas WGS-84 es: el origen es el centro de masa de la tierra, y el eje Z del sistema de coordenadas espacial rectangular apunta a la dirección del polo terrestre (CTP) definida por BIH (1984.0) , que es el origen del acuerdo internacional CIO, recomendado conjuntamente por la IAU y la IUGG. El eje X apunta a la intersección del meridiano de cero grados definido por el ecuador BIH y CTP, y el eje Y y el eje Z forman un sistema de coordenadas de mano derecha.
El elipsoide WGS-84 adopta los valores recomendados de las constantes de medida del 17º Congreso de la Unión Internacional de Geodesia y Geofísica, y utiliza dos parámetros geométricos básicos de uso común:
- Eje semi-mayor a = 6378137m
- Eje semi-menor b = 6356752.3142m
- Primera excentricidad al cuadrado e2 = 0.00669437999013
- Planitud α= 1/298.257223563
Sistema Nacional de Coordenadas Geodésicas: CGCS2000
El Sistema Nacional de Coordenadas Geodésicas 2000 es el último sistema nacional de coordenadas geodésicas en mi país. El nombre en inglés es China Geodetic Coordinate System 2000, y la abreviatura en inglés es CGCS2000.
El origen del sistema de coordenadas geodésicas nacional 2000 es el centro de masa de toda la tierra, incluidos el océano y la atmósfera; el eje Z del sistema de coordenadas geodésicas nacional 2000 apunta desde el origen hasta la dirección del polo de referencia terrestre de la época 2000.0 , y la dirección de esta época la da el International Time Bureau La época fija es el cálculo de orientación inicial de 1984.0, y la evolución temporal de la orientación asegura que no habrá una rotación global residual en relación con la corteza. forman un sistema de coordenadas ortogonales de mano derecha. Utilice la escala en el sentido de la relatividad general.
- Eje semi-mayor a = 6378137m
- Eje semi-menor b = 6356752.314m
- Primera excentricidad al cuadrado e2 = 0.00669438002290
- Planitud α = 1/298.257222101
biblioteca GDAL
descripción general
GDAL (Biblioteca de abstracción de datos geoespaciales) es una biblioteca de conversión de datos espaciales ráster de código abierto bajo el acuerdo de licencia X/MIT. Utiliza un modelo de datos abstracto para expresar los diversos formatos de archivo admitidos. También tiene una colección de herramientas de línea de comandos para la transformación y manipulación de datos. OGR es una bifurcación del proyecto GDAL que brinda soporte para datos vectoriales. Hay muchos productos GIS conocidos que utilizan la biblioteca GDAL/OGR, incluidos ARCGIS 9.3 de ESRI, Google Earth y el sistema GRASS GIS multiplataforma. Utilizando la biblioteca GDAL/OGR, el sistema de gestión de datos geoespaciales basado en Linux puede proporcionar soporte para datos de archivos vectoriales y ráster.
Características
- GDAL brinda soporte para una variedad de datos ráster, incluidos Arc/Info ASCII Grid (asc), GeoTiff (tiff), Erdas Imagine Images (img), ASCII DEM (dem) y otros formatos.
- GDAL utiliza un modelo de datos abstractos (modelo de datos abstractos) para analizar los formatos de datos que admite. El modelo de datos abstractos incluye conjuntos de datos, sistemas de coordenadas, transformaciones de coordenadas geográficas afines (Transformación geográfica afín) y puntos de control geodésico (GCP). Metadatos, ráster Banda, Tabla de colores, Dominio de subconjuntos de datos, Dominio de estructura de imagen, Dominios XML.
- Clase GDALMajorObject: un objeto con metadatos.
- Clase GDALDdataset: generalmente una colección de bandas ráster asociadas extraídas de un archivo ráster y los metadatos de estas bandas;
- GDALDdataset también es responsable de la transformación de georreferenciación y la definición del sistema de coordenadas de todas las bandas ráster.
- Clase GDALDriver: clase de controlador de formato de archivo, GDAL creará una entidad de esta clase para cada formato de archivo admitido para administrar el formato de archivo.
- Clase GDALDriverManager: clase de gestión de controladores de formato de archivo, utilizada para gestionar la clase GDALDriver.
Arquitectura OGR
- Clase de geometría: la geometría (incluida OGRGeometry y otras clases) encapsula el modelo de datos vectoriales de OpenGIS y proporciona algunas operaciones geométricas, conversión mutua entre formatos WKB (Well Knows Binary) y WKT (Well Known Text) y sistema de referencia espacial (proyección) .
- Clase de referencia espacial: OGRSpatialReference encapsula la definición de proyección y datum.
- Clase de entidad: OGRFeature encapsula la definición de una entidad completa, y una entidad completa incluye una geometría y una serie de atributos de la geometría.
- Clase de definición de entidad: OGRFeatureDefn encapsula atributos de entidad, tipo, nombre y su sistema de referencia espacial predeterminado. Un objeto OGRFeatureDefn generalmente corresponde a una capa.
- Clase de capa: OGRLayer es una clase base abstracta que representa una capa de características en la clase de fuente de datos OGRDataSource.
- Clase de fuente de datos: OGRDataSource es una clase base abstracta que representa un archivo o una base de datos que contiene objetos OGRLayer.
- Clase de controladores: OGRSFDriver corresponde a cada formato de archivo vectorial admitido. La clase OGRSFDriver está registrada y administrada por la clase OGRSFDriverRegistrar.
enlace de descarga
Inicio: https://gdal.org/download.html
seleccione la versión 3.2.1
Preparar el entorno de compilación MSYS2
(Aquí, cuando se usa mysy1.0 primero, la enumeración del sistema es desconocida, así que cambie a msys2).
(Aquí, msys2 ha entrado en el foso durante unos días, y las bibliotecas dependientes dependen de glibc, libtool, pkg-config y otros problemas, y se dan la vuelta entre sí. Después de finalmente poder compilar, el logotipo del sistema no puede ser reconocido al final Todavía estoy insistiendo, así que lo cambié nuevamente Descargue msys642, hágalo nuevamente, elimine todas las rutas, instale directamente en msys642 y luego comience a usar el prefijo de ruta para configurar y luego compilar e instalar el archivo de biblioteca extraído) Este es el entorno donde se compila la biblioteca de Linux por encima de Windows
.
Descárgalo tú mismo y descomprímelo:
Haga clic en "msys2.bat" para comenzar:
Aquí necesitamos usar el desarrollo mingw32 de Qt5.9.3, por lo que necesitamos copiar el compilador mingw32 de Qt a este directorio raíz, para que pueda introducirse en el entorno msys calificado:
Entonces:
La ruta se importa en:
export PATH=$PATH:/mingw530_32/bin
compilar GDAL
Paso 1: Descarga y descomprime
export PATH=$PATH:/mingw530_32/bin
cd /home/21497/compile
mkdir gdal
Luego copie el paquete gdal al directorio principal de msys:
cd gdal
tar xvf gdal-3.2.1.tar.gz
ls -l
Paso 2: Configurar configurar
Aquí, el parámetro de prefijo se establece para permitir que la biblioteca se genere en el directorio especificado:
cd /home/21497/compile/gdal/gdal-3.2.1
./configure --prefix=/home/21497/compile/gdal/install
./configure --prefix=/home/21497/compile/gdal/install --without-libtool
Error "configure: error: PROJ 6 símbolos no encontrados", necesita compilar PROJ6:
Consulte el siguiente capítulo "Compilar PROJ6". Una vez completada la compilación, vuelva aquí para continuar con la configuración:
cd gdal-3.2.1
./configure
Todavía informa un error, pero puede saber que ya hay archivos de encabezado y archivos de biblioteca, y luego comenzar a forzar:
Todavía no puedo encontrar el archivo de encabezado, aquí hay otro:
No es suficiente, solo coméntalo para él:
Fuerce directamente la lectura de los comentarios y fuerce la definición de HAVA_PROJ_H (se colocan todas las carpetas y también se obliga a proteger la prueba, por lo que no pasará, el resultado final del método del código fuente:
Configurar a través de:
Proj6 también es sí.
Paso 3: Compilar mak
(PD: Para esta biblioteca, mingw32-make tiene un error o una excepción, y make puede pasar. Básicamente, si el primero no puede pasar, use make. De todos modos, cuando se compila, es gcc puro, y gcc se introduce en el gcc de mingw32 de Qt5.9.3)
make -j4
Comience a compilar, esta biblioteca gdal compila, lleva algo de tiempo y ocurre un error:
Este msys642 tiene algunos problemas con los archivos de encabezado, o de la manera antigua, puede copiar todos los encabezados directamente a esta carpeta "geo_keyp.h", por lo que teóricamente puede:
Después de compilar, efectivamente pasó (PD: por qué msys642 no carga la ruta del archivo de encabezado por sí mismo, y la variable de entorno adicional no funciona, así que no lo estudiaré detenidamente), continúe compilando:
make
Después de compilar:
Continúe haciendo sin j para asegurarse de que se ha compilado correctamente:
Paso 4: Instalar hacer instalar
Instalar
make install
Paso 5: importa la biblioteca compilada al proyecto
(PD: el proyecto aquí se basa en el sistema Kirin v1.0.0, actualizado a v1.1.0 e integrado con la versión mingw32 de la plataforma de Windows Qt5.9.3) Las
instalaciones anteriores están todas instaladas en la ruta del sistema, por lo que la biblioteca de la ruta del sistema se presenta aquí por primera vez.
Hasta ahora, éxito.
Compilar PROJ6
Paso 1: Descarga y descomprime
Dirección de descarga: https://proj.org
Seleccione la versión 6.2.0
para descargar y copiar a MSYS2:
cd /home/21497/compile
mkdir proj
cd proj
tar xfv proj-6.2.0.tar.gz
Paso 2: Configurar configurar
Aquí, el parámetro de prefijo se establece para permitir que la biblioteca se genere en el directorio especificado:
cd /home/21497/compile/proj/proj-6.2.0/
./configure --prefix=/home/21497/compile/proj/install
./configure --without-libtool
Error de configuración "SQLITE3", como se muestra en la siguiente figura:
Consulte el siguiente capítulo "Compilar SQLITE3". Una vez completada la compilación, regrese aquí para continuar con la configuración:
cd /home/21497/compile/proj/proj-6.2.0/
En este momento, todavía hay un error al compilar. El error puede ser un problema de pkgconfig. Instale "compile pkgconfig" y cambie a mingw642 para solucionarlo. Continúe:
Paso 3: Compilar make
make -j4
Comience a compilar:
Aquí, el archivo de encabezado no se encuentra:
Agregar la ruta del archivo de encabezado aún informa un error, forzarlo directamente y luego continuar:
Agregar la ruta de la biblioteca aún informa un error, forzarlo directamente y luego continuar:
Finalmente compilado el pasado:
Volver a la biblioteca "gdal".
Paso 4: Instalar hacer instalar
Para usar privilegios de administrador, de lo contrario, la instalación fallará y no se podrá crear el directorio del sistema:
sudo make install
Pruebe, puede confiar en él sin ldconfig, hasta ahora se ha compilado la biblioteca proj6.
Compilar SQLITE3
Paso 1: Descarga y descomprime
https://www.sqlite.org/download.html
tar xvf sqlite-autoconf-3420000.tar.gz
Paso 2: Configurar configurar
Aquí, el parámetro de prefijo se establece para permitir que la biblioteca se genere en el directorio especificado:
cd /home/21497/compile/sqlite3/sqlite-autoconf-3420000
./configure --prefix=/home/21497/compile/sqlite3/install
Error de configuración:
(PD: No entre en pánico en todo, abra los ojos lentamente para ver el error línea por línea)
Modifique la configuración:
./configure --prefix=/home/21497/compile/sqlite3/install --disable-dependency-tracking
Luego continúe con la configuración:
La configuración fue exitosa:
Paso 3: Compilar make
La compilación aquí hará que libtool cometa un error, y no hay solución, así que intente revertir sqlite por una versión, y pasará.Repita los pasos:
cd sqlite-snapshot-202101271915
./configure --prefix=/home/21497/compile/sqlite3/install
mingw32-make.exe -j4
Paso 4: Instalar hacer instalar
mingw32-make install
Falló, como se muestra a continuación:
Debido a que make es diferente, modifique el Makefile directamente:
Puedes pasar:
Paso 5: Verifica que la compilación sea exitosa
Lo anterior es para extraer la ruta, y hay un problema con la compilación de la biblioteca que se basa en ella:
Para una talla única, reconfigure directamente sin una ruta e implemente en msys:
cd /home/21497/compile/sqlite3/sqlite-snapshot-202101271915/
./configure
mingw32-make.exe
mingw32-make install
(Instalar recuerda modificar el CC de Makefile a mingw32-make)
Cambie msys642 y 3.42, use make (no use mingw32-make) con éxito:
Compile pkgconfig (obsoleto, pero mantenga el paso)
Paso 1: Descarga y descomprime
Dirección de descarga: https://www.freedesktop.org/wiki/Software/pkg-config/
tar xvf pkgconfig-0.6.0.tar.gz
Paso 2: Configurar configurar
cd pkgconfig-0.6.0/
./configure
Para la versión 0.29:
Modificar la configuración:
./configure –with-internal-glib
Hay varios errores, pero no hay solución.Después, la configuración mingw32-make proj6 no tendrá este error.
fin
Hay muchos intentos de resolver el problema en este artículo. Después de la compilación final, no es necesario introducir el módulo, ya que el proceso de solución lleva unos tres días. Prueba y error en varios entornos msys, varias versiones de biblioteca de código abierto, ruta ajustes del código fuente, y finalmente este artículo acaba de terminar.
Si el lector no requiere mingw32, se recomienda no utilizar la versión mingw32 de dgal.
Anterior: No más
Siguiente: Estén atentos...
Si el artículo es un artículo original, indique la fuente del artículo original al reproducirlo.
La dirección del blog de este artículo: https://hpzwl.blog.csdn.net/article/details/131931309