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

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/131805718

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...

Desarrollo relacionado con el sistema doméstico Kylin

Anterior: " Notas de desarrollo del sistema Kylin (11): use gdb para localizar excepciones de fallas en el sistema doméstico Kylin, líneas de código de ubicación avanzadas y demostración de prueba especial" Siguiente
: Estén atentos...


prefacio

  El desarrollo del terminal de posicionamiento global Beidou se realiza en el sistema Kylin. El GPS Beidou envía las coordenadas geodésicas, y la aplicación necesita las coordenadas de latitud y longitud, por lo que debe convertirse. Puede usar una fórmula para convertir, pero un proyecto que involucra Shanhe inteligente utiliza WG.


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 suelo se expresa por 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 las constantes de medición recomendadas por el 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


compilar GDAL

Paso 1: Descarga y descomprime

cd ~/work/src/
tar xvf gdal-3.2.1.tar.gz

  inserte la descripción de la imagen aquí

Paso 2: Configurar configurar

cd gdal-3.2.1
./configure

  Error "configure: error: PROJ 6 símbolos no encontrados", necesita compilar PROJ6:
  inserte la descripción de la imagen aquí

  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

  Configurar a través de:
  inserte la descripción de la imagen aquí

  Proj6 también es sí.

Paso 3: Compilar make

make -j4

  Comience a compilar:
  inserte la descripción de la imagen aquí

  Esta biblioteca gdal se compila, lleva algo de tiempo.
  inserte la descripción de la imagen aquí

  Una vez completada la compilación, continúe haciendo sin j para asegurarse de que la compilación se transfiera correctamente.

Paso 4: Instalar hacer instalar

  Requiere privilegios de administrador para instalar

sudo make install

  inserte la descripción de la imagen aquí

Paso 5: Introducir la base para el nuevo proyecto

  Todas las instalaciones anteriores están instaladas en la ruta del sistema, por lo que aquí se presenta primero la biblioteca de la ruta del sistema.
  inserte la descripción de la imagen aquí

  Habrá un error aquí:
  inserte la descripción de la imagen aquí

  Requiere sudo ldconfig, volver a introducir la biblioteca en el sistema, compilar y ejecutar de nuevo de la siguiente manera:
  inserte la descripción de la imagen aquí

  La versión se imprimió con éxito. Debido a que es Linux, hay algunas bibliotecas dependientes. Esta versión v1.0.0 depende del sistema include y lib (PS: la biblioteca se sellará en el módulo nuevamente más tarde, pero no esta vez) .


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 la máquina virtual:

cd ~/workl/src
tar xfv proj-6.2.0.tar.gz

  inserte la descripción de la imagen aquí

Paso 2: Configurar configurar

cd proj-6.2.0/
./configure

  inserte la descripción de la imagen aquí

  La configuración fue exitosa:
  inserte la descripción de la imagen aquí

Paso 3: Compilar make

make -j4

  Comience a compilar:
  inserte la descripción de la imagen aquí

  inserte la descripción de la imagen aquí

  Una vez completada la compilación, continúe haciendo sin j para asegurarse de que la compilación se transfiera correctamente.

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

  inserte la descripción de la imagen aquí

  Pruebe, puede confiar en él sin ldconfig, hasta ahora se ha compilado la biblioteca proj6.


DemoModular

  inserte la descripción de la imagen aquí


código fuente de demostración

GDALManager.at

INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD

HEADERS += \
    $$PWD/GDALManager.h

SOURCES += \
    $$PWD/GDALManager.cpp


win32 {
    
    

}else {
    
    
    DEFINES += LINUX
    # GDAL系统安装的默认路径位/usr/local
    # 系统库,头文件路径和库文件默认已包含
    LIBS += -lgdal
}

win32 {
    
    

}else {
    
    
    DEFINES += LINUX
    # PROJ系统安装的默认路径位/usr/local
    # 系统库,头文件路径和库文件默认已包含
    LIBS += -lproj
}

GDALManager.h

#ifndef GDALMANAGER_H
#define GDALMANAGER_H

#include <QObject>

class GDALManager : public QObject
{
    
    
    Q_OBJECT
public:
    explicit GDALManager(QObject *parent = 0);

signals:

public:
    static void testEnv();                     // v1.0.0 测试环境

private:
};

#endif // GDALMANAGER_H

GDALManager.cpp

#include "GDALManager.h"

#include "gdal.h"

#include <QDebug>
#include <QDateTime>
//#define LOG qDebug()<<__FILE__<<__LINE__
//#define LOG qDebug()<<__FILE__<<__LINE__<<__FUNCTION__
//#define LOG qDebug()<<__FILE__<<__LINE__<<QThread()::currentThread()
//#define LOG qDebug()<<__FILE__<<__LINE__<<QDateTime::currentDateTime().toString("yyyy-MM-dd")
#define LOG qDebug()<<__FILE__<<__LINE__<<QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz")

GDALManager::GDALManager(QObject *parent)
    : QObject(parent)
{
    
    
    // 注册所有驱动
    GDALAllRegister();
}

void GDALManager::testEnv()
{
    
    
    QString version = QString(GDALVersionInfo("RELEASE_NAME"));
    LOG << version;
}

Plantilla de proyecto de demostración v1.0.0

  inserte la descripción de la imagen aquí


Anterior: " Notas de desarrollo del sistema Kylin (11): use gdb para localizar excepciones de fallas en el sistema doméstico Kylin, líneas de código de ubicación avanzadas y demostración de prueba especial" 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/131805718

Supongo que te gusta

Origin blog.csdn.net/qq21497936/article/details/131805718
Recomendado
Clasificación