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
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
Paso 2: Configurar configurar
cd gdal-3.2.1
./configure
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
Configurar a través de:
Proj6 también es sí.
Paso 3: Compilar make
make -j4
Comience a compilar:
Esta biblioteca gdal se compila, lleva algo de tiempo.
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
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.
Habrá un error aquí:
Requiere sudo ldconfig, volver a introducir la biblioteca en el sistema, compilar y ejecutar de nuevo de la siguiente manera:
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
Paso 2: Configurar configurar
cd proj-6.2.0/
./configure
La configuración fue exitosa:
Paso 3: Compilar make
make -j4
Comience a compilar:
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
Pruebe, puede confiar en él sin ldconfig, hasta ahora se ha compilado la biblioteca proj6.
DemoModular
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
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