最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

麒麟系統(tǒng)開發(fā)筆記(十二):在國(guó)產(chǎn)麒麟系統(tǒng)上編譯GDAL庫(kù)、搭建基礎(chǔ)開發(fā)環(huán)境和基礎(chǔ)Dem

2023-07-19 12:49 作者:紅胖子_AAA紅模仿  | 我要投稿

前言

??麒麟系統(tǒng)上做全球北斗定位終端開發(fā),北斗GPS發(fā)過來的是大地坐標(biāo),應(yīng)用需要的是經(jīng)緯度坐標(biāo),所以需要轉(zhuǎn)換,可以使用公式轉(zhuǎn)換,但是之前涉及到了山He智能一個(gè)項(xiàng)目使用WG。

大地坐標(biāo)簡(jiǎn)介

概述

??大地坐標(biāo)(Geodetic coordinate)是大地測(cè)量中以參考橢球面為基準(zhǔn)面的坐標(biāo),地面點(diǎn)P的位置用大地經(jīng)度L、大地緯度B和大地高H表示。

原理

??當(dāng)點(diǎn)在參考橢球面上時(shí),僅用大地經(jīng)度和大地緯度表示。大地經(jīng)度是通過該點(diǎn)的大地子午面與起始大地子午面(通過格林尼治天文臺(tái)的子午面)之間的夾角。規(guī)定以起始子午面起算,向東由0°至180°稱為東經(jīng);向西由0°至180°稱為西經(jīng)。大地緯度是通過該點(diǎn)的法線與赤道面的夾角,規(guī)定由赤道面起算,由赤道面向北從0°至90°稱為北緯;向南從0°到90°稱為南緯。大地高是地面點(diǎn)沿法線到參考橢球面的距離。

北京54坐標(biāo)系:BJZ54

??北京54坐標(biāo)系(BJZ54)是指北京54坐標(biāo)系為參心大地坐標(biāo)系,大地上的一點(diǎn)可用經(jīng)度L54、緯度M54和大地高H54定位,它是以克拉索夫斯基橢球?yàn)榛A(chǔ),經(jīng)局部平差后產(chǎn)生的坐標(biāo)系。

  • 長(zhǎng)半軸a = 6378245m

  • 短半軸b = 6356863.0188m

  • 第一偏心率平方e2 = 0.006693421622

  • 扁率α =1/298.3

世界大地坐標(biāo)系統(tǒng):WGS-84

??WGS-84坐標(biāo)系是世界大地坐標(biāo)系統(tǒng),其坐標(biāo)原點(diǎn)在地心,采用WGS-84橢球(1984世界大地坐標(biāo)系)。
??WGS-84坐標(biāo)系是美國(guó)國(guó)防部研制確定的大地坐標(biāo)系,是一種協(xié)議地球坐標(biāo)系。
??WGS-84坐標(biāo)系的定義是:原點(diǎn)是地球的質(zhì)心,空間直角坐標(biāo)系的Z軸指向BIH(1984.0)定義的地極(CTP)方向,即國(guó)際協(xié)議原點(diǎn)CIO,它由IAU和IUGG共同推薦。X軸指向BIH定義的零度子午面和CTP赤道的交點(diǎn),Y軸和Z,X軸構(gòu)成右手坐標(biāo)系。
??WGS-84橢球采用國(guó)際大地測(cè)量與地球物理聯(lián)合會(huì)第17屆大會(huì)測(cè)量常數(shù)推薦值,采用的兩個(gè)常用基本幾何參數(shù):

  • 長(zhǎng)半軸a = 6378137m

  • 短半軸b = 6356752.3142m

  • 第一偏心率平方e2 = 0.00669437999013

  • 扁率 α= 1/298.257223563

國(guó)家大地坐標(biāo)系:CGCS2000

??2000國(guó)家大地坐標(biāo)系,是我國(guó)當(dāng)前最新的國(guó)家大地坐標(biāo)系,英文名稱為China Geodetic Coordinate System 2000,英文縮寫為CGCS2000。
??2000國(guó)家大地坐標(biāo)系的原點(diǎn)為包括海洋和大氣的整個(gè)地球的質(zhì)量中心;2000國(guó)家大地坐標(biāo)系的Z軸由原點(diǎn)指向歷元2000.0的地球參考極的方向,該歷元的指向由國(guó)際時(shí)間局給定的歷元為1984.0的初始指向推算,定向的時(shí)間演化保證相對(duì)于地殼不產(chǎn)生殘余的全球旋轉(zhuǎn),X軸由原點(diǎn)指向格林尼治參考子午線與地球赤道面(歷元2000.0)的交點(diǎn),Y軸與Z軸、X軸構(gòu)成右手正交坐標(biāo)系。采用廣義相對(duì)論意義下的尺度。

  • 長(zhǎng)半軸a = 6378137m

  • 短半軸b = 6356752.314m

  • 第一偏心率平方e2 = 0.00669438002290

  • 扁率α = 1/298.257222101

GDAL庫(kù)

概述

??GDAL(Geospatial Data Abstraction Library)是一個(gè)在X/MIT許可協(xié)議下的開源柵格空間數(shù)據(jù)轉(zhuǎn)換庫(kù)。它利用抽象數(shù)據(jù)模型來表達(dá)所支持的各種文件格式。它還有一系列命令行工具來進(jìn)行數(shù)據(jù)轉(zhuǎn)換和處理。 OGR是GDAL項(xiàng)目的一個(gè)分支,提供對(duì)矢量數(shù)據(jù)的支持。 有很多著名的GIS類產(chǎn)品都使用了GDAL/OGR庫(kù),包括ESRI的ARCGIS 9.3,Google Earth和跨平臺(tái)的GRASS GIS系統(tǒng)。利用GDAL/OGR庫(kù),可以使基于Linux的地理空間數(shù)據(jù)管理系統(tǒng)提供對(duì)矢量和柵格文件數(shù)據(jù)的支持。

功能特征

  • GDAL提供對(duì)多種柵格數(shù)據(jù)的支持,包括Arc/Info ASCII Grid(asc),GeoTiff (tiff),Erdas Imagine Images(img),ASCII DEM(dem) 等格式。

  • GDAL使用抽象數(shù)據(jù)模型(abstract data model)來解析它所支持的數(shù)據(jù)格式,抽象數(shù)據(jù)模型包括數(shù)據(jù)集(dataset),坐標(biāo)系統(tǒng),仿射地理坐標(biāo)轉(zhuǎn)換(Affine Geo Transform),大地控制點(diǎn)(GCPs),元數(shù)據(jù)(Metadata),柵格波段(Raster Band),顏色表(Color Table),子數(shù)據(jù)集域(Subdatasets Domain),圖像結(jié)構(gòu)域(Image_Structure Domain),XML域(XML:Domains)。

  • GDALMajorObject類:帶有元數(shù)據(jù)的對(duì)象。

  • GDALDdataset類:通常是從一個(gè)柵格文件中提取的相關(guān)聯(lián)的柵格波段集合和這些波段的元數(shù)據(jù);

  • GDALDdataset也負(fù)責(zé)所有柵格波段的地理坐標(biāo)轉(zhuǎn)換(georeferencing transform)和坐標(biāo)系定義。

  • GDALDriver類:文件格式驅(qū)動(dòng)類,GDAL會(huì)為每一個(gè)所支持的文件格式創(chuàng)建一個(gè)該類的實(shí)體,來管理該文件格式。

  • GDALDriverManager類:文件格式驅(qū)動(dòng)管理類,用來管理GDALDriver類。

OGR體系結(jié)構(gòu)

  • Geometry類:Geometry (包括OGRGeometry等類)封裝了OpenGIS的矢量數(shù)據(jù)模型,并提供了一些幾何操作,WKB(Well Knows Binary)和WKT(Well Known Text)格式之間的相互轉(zhuǎn)換,以及空間參考系統(tǒng)(投影)。

  • Spatial Reference類:OGRSpatialReference封裝了投影和基準(zhǔn)面的定義。

  • Feature類:OGRFeature封裝了一個(gè)完整feature的定義,一個(gè)完整的feature包括一個(gè)geometry和geometry的一系列屬性。

  • Feature Definition類:OGRFeatureDefn里面封裝了feature的屬性,類型、名稱及其默認(rèn)的空間參考系統(tǒng)等。一個(gè)OGRFeatureDefn對(duì)象通常與一個(gè)層(layer)對(duì)應(yīng)。

  • Layer類:OGRLayer是一個(gè)抽象基類,表示數(shù)據(jù)源類OGRDataSource里面的一層要素(feature)。

  • Data Source類:OGRDataSource是一個(gè)抽象基類,表示含有OGRLayer對(duì)象的一個(gè)文件或一個(gè)數(shù)據(jù)庫(kù)。

  • Drivers類:OGRSFDriver對(duì)應(yīng)于每一個(gè)所支持的矢量文件格式。類OGRSFDriver由類OGRSFDriverRegistrar來注冊(cè)和管理。

下載地址

??Home:https://gdal.org/download.html
?選擇3.2.1版本

編譯GDAL

步驟一:下載解壓

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

??

步驟二:配置configure

cd gdal-3.2.1 ./configure

??錯(cuò)誤“configure:error: PROJ 6 symbols not found”,需要編譯PROJ6:
??

??請(qǐng)查看后面的章節(jié)“編譯PROJ6”,編譯完成后,回到此處繼續(xù)配置:

cd gdal-3.2.1 ./configure

??配置通過:
??

??Proj6也是yes的。

步驟三:編譯make

make -j4

??開始編譯:
??

??這個(gè)gdal庫(kù)編譯,花費(fèi)了一些時(shí)間。
??

??編譯完成后,繼續(xù)一次make不帶j的,確保都正確編譯通過了。

步驟四:安裝make install

??需要管理員權(quán)限安裝

sudo make install

??

步驟五:新建工程引入基礎(chǔ)

??之前安裝的都是安裝到系統(tǒng)路徑去了,所以此處先引入系統(tǒng)路徑的庫(kù)。
??

??這里會(huì)有個(gè)錯(cuò)誤:
??

??是需要sudo ldconfig的,重新將庫(kù)引入系統(tǒng),再次編譯運(yùn)行如下:
??

??成功打印出版本,這里因?yàn)槭莑inux,還有一些依賴庫(kù),這v1.0.0版本的就是依賴系統(tǒng)include和lib的了(PS:后續(xù)會(huì)再次將庫(kù)封入模塊,但本次不做)。

編譯PROJ6

步驟一:下載解壓

??下載地址:https://proj.org
??選擇版本6.2.0
??下載后拷貝至虛擬機(jī):

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

??

步驟二:配置configure

cd proj-6.2.0/ ./configure

??

??配置成功:
??

步驟三:編譯make

make -j4

??開始編譯:
??

??

??編譯完成后,繼續(xù)一次make不帶j的,確保都正確編譯通過了。

步驟四:安裝make install

??要使用管理員權(quán)限,不然安裝失敗,無法系統(tǒng)目錄創(chuàng)建:

sudo make install

??

??測(cè)試,不需要ldconfig也可以依賴了,至此proj6庫(kù)編譯完成。

Demo模塊化

??

Demo源碼

GDALManager.pri

INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += \ ? ?$$PWD/GDALManager.h SOURCES += \ ? ?$$PWD/GDALManager.cpp win32 {}else { ? ?DEFINES += LINUX ? ?# GDAL系統(tǒng)安裝的默認(rèn)路徑位/usr/local ? ?# 系統(tǒng)庫(kù),頭文件路徑和庫(kù)文件默認(rèn)已包含 ? ?LIBS += -lgdal}win32 {}else { ? ?DEFINES += LINUX ? ?# PROJ系統(tǒng)安裝的默認(rèn)路徑位/usr/local ? ?# 系統(tǒng)庫(kù),頭文件路徑和庫(kù)文件默認(rèn)已包含 ? ?LIBS += -lproj}

GDALManager.h

#ifndef GDALMANAGER_H#define GDALMANAGER_H#include <QObject>class GDALManager : public QObject{ ? ?Q_OBJECTpublic: ? ?explicit GDALManager(QObject *parent = 0);signals:public: ? ?static void testEnv(); ? ? ? ? ? ? ? ? ? ? // v1.0.0 測(cè)試環(huán)境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){ ? ?// 注冊(cè)所有驅(qū)動(dòng) ? ?GDALAllRegister();}void GDALManager::testEnv(){ ? ?QString version = QString(GDALVersionInfo("RELEASE_NAME")); ? ?LOG << version;}

Demo工程模板v1.0.0

??


麒麟系統(tǒng)開發(fā)筆記(十二):在國(guó)產(chǎn)麒麟系統(tǒng)上編譯GDAL庫(kù)、搭建基礎(chǔ)開發(fā)環(huán)境和基礎(chǔ)Dem的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
新安县| 华安县| 鄢陵县| 大同市| 陆良县| 平罗县| 儋州市| 东源县| 清镇市| 镇平县| 安吉县| 长泰县| 定结县| 福海县| 楚雄市| 汕尾市| 丰台区| 七台河市| 垣曲县| 定西市| 龙里县| 浮山县| 定陶县| 淳化县| 黄石市| 乌鲁木齐市| 谢通门县| 卓尼县| 余干县| 合山市| 凌源市| 从化市| 三原县| 塔城市| 昭觉县| 印江| 合水县| 遂平县| 铁岭市| 泰来县| 宿松县|