記事がオリジナル記事の場合、転載の際は出典元を明記してください
この記事のブログアドレス:https://hpzwl.blog.csdn.net/article/details/131931309
Red Fatty Network Technology Blog Encyclopedia: 開発技術集(Qt実践技術、Raspberry Pi、3D、OpenCV、OpenGL、ffmpeg、OSG、シングルチップマイコン、ソフトウェアとハードウェアの組み合わせなどを含む)を随時更新中...
Qt開発コラム:スリーパーティライブラリ開発技術
前: これ以上ありません
次: 乞うご期待...
序文
北斗全球測位端末の開発はキリンシステム上で行われており、校正を容易にするためにデバッグツールはWindowsバージョンである必要があり、北斗GPSは測地座標を送信し、アプリケーションは緯度と経度の座標を必要とするため、変換するには数式を使用できますが、以前は山が必要でした。彼はプロジェクトに WG を賢明に使用し、最終的に変換に GDAL ライブラリを選択しました。
知らせ
リーダーが mingw32 を必要としない場合は、mingw32 バージョンの dgal を使用しないことをお勧めします。コンパイルのプロセスは非常に複雑です。
関連ブログ
「Kylin システム開発メモ (12): 国産 Kylin システムで GDAL ライブラリをコンパイル、基本開発環境と基本デモを構築」 「Qt +
GDAL開発メモ (1): Windows システム mingw32 で GDAL ライブラリをコンパイル、ビルド」開発環境と基盤のデモ》
測地座標の概要
概要
測地座標とは測地測量における基準楕円体の座標であり、地表点Pの位置は地球の経度L、地球の緯度B、地球の高さHで表されます。
原理
点が基準楕円体上にある場合、その点は測地経度と測地緯度によってのみ表されます。測地経度は、その点を通過する測地面と原点測地面 (グリニッジ天文台を通過する子午線面) の間の角度です。子午線開始面から数えて、東経0度から180度までを東経、西経0度から180度までを西経と定めることが定められています。測地緯度とは、その点を通る法線と赤道面とのなす角度であり、赤道面を起点として0°から90°までの北緯を北緯、それから90°までの南緯と定められています。 0°から90°を南緯といいます。測地高さは、基準楕円体の法線に沿った地上点からの距離です。
北京 54 座標系: BJZ54
北京 54 座標系 (BJZ54) は、北京 54 座標系が高麗人参測地座標系であることを意味します。地球上の点は、経度 L54、緯度 M54、測地高 H54 によって位置することができます。クラソフスキー楕円体に基づいています。ローカル調整後の結果の座標系。
- 長半径 a = 6378245m
- 準短軸 b = 6356863.0188m
- 第一離心率の二乗 e2 = 0.006693421622
- 平面度α=1/298.3
世界測地座標系: WGS-84
WGS-84 座標系は世界測地座標系であり、その座標原点は地球の中心にあり、WGS-84 楕円体 (1984 年世界測地座標系) が採用されています。
WGS-84 座標系は、米国国防総省によって開発および決定された測地座標系であり、プロトコル地球座標系です。
WGS-84 座標系の定義は次のとおりです。原点は地球の質量中心であり、空間直交座標系の Z 軸は BIH (1984.0) によって定義された地極 (CTP) の方向を指します。 、IAUとIUGGが共同で推奨する国際協定CIOの起源となっています。X 軸は、BIH と CTP 赤道によって定義された 0 度子午線の交点を指し、Y 軸と Z 軸は右手座標系を形成します。
WGS-84 楕円体は、第 17 回国際測地学地球物理学連合会議の測定定数の推奨値を採用し、一般的に使用される 2 つの基本的な幾何学的パラメーターを使用します。
- 長半径 a = 6378137m
- 準短軸 b = 6356752.3142m
- 第一離心率の二乗 e2 = 0.00669437999013
- 平面度α=1/298.257223563
国家測地座標系: CGCS2000
2000 年国家測地座標系は我が国の最新の国家測地座標系であり、英語名は China Geodetic Coordination System 2000、英語略称は CGCS2000 です。
2000 年国家測地座標系の原点は、海洋と大気を含む地球全体の質量の中心であり、2000 年国家測地座標系の Z 軸は、原点から紀元 2000.0 年の地球基準極の方向を指します。 、この時代の方向は国際時間事務局によって与えられます固定された時代は 1984.0 年の最初の方位計算であり、方位の時間発展により、地殻に対する地球の回転が残留しないことが保証されます。右手直交座標系を形成します。一般相対性理論の意味でスケールを使用します。
- 長半径 a = 6378137m
- 準短軸 b = 6356752.314m
- 第一離心率の二乗 e2 = 0.00669438002290
- 平面度α = 1/298.257222101
GDALライブラリ
概要
GDAL (Geospatial Data Abstraction Library) は、X/MIT ライセンス契約に基づくオープンソースのラスター空間データ変換ライブラリです。抽象データ モデルを利用して、サポートされているさまざまなファイル形式を表現します。データの変換と操作のためのコマンドライン ツールのコレクションも備えています。OGR は、ベクター データのサポートを提供する GDAL プロジェクトのフォークです。ESRI の ARCGIS 9.3、Google Earth、クロスプラットフォームの GRASS GIS システムなど、GDAL/OGR ライブラリを使用する有名な GIS 製品が数多くあります。GDAL/OGR ライブラリを使用すると、Linux ベースの地理空間データ管理システムは、ベクトル ファイル データとラスター ファイル データをサポートできます。
特徴
- GDAL は、Arc/Info ASCII Grid (asc)、GeoTiff (tiff)、Erdas Imagine Images (img)、ASCII DEM (dem) およびその他の形式を含む、さまざまなラスター データのサポートを提供します。
- GDAL は、抽象データ モデル (抽象データ モデル) を使用して、サポートするデータ形式を解析します。抽象データ モデルには、データセット、座標系、アフィン地理座標変換 (アフィン地理変換)、および測地制御点 (GCP) が含まれます。メタデータ、ラスターバンド、カラー テーブル、サブデータセット ドメイン、Image_Structure ドメイン、XML ドメイン。
- GDALMajorObject クラス: メタデータを持つオブジェクト。
- GDALDdataset クラス: 通常、ラスター ファイルから抽出された関連するラスター バンドとこれらのバンドのメタデータのコレクション。
- GDALDdataset は、すべてのラスター バンドの地理参照変換と座標系の定義も担当します。
- GDALDriver クラス: ファイル形式ドライバー クラス。GDAL は、ファイル形式を管理するために、サポートされているファイル形式ごとにこのクラスのエンティティを作成します。
- GDALDriverManager クラス: GDALDriver クラスの管理に使用されるファイル形式のドライバー管理クラス。
OGR アーキテクチャ
- Geometry クラス: Geometry (OGRGeometry およびその他のクラスを含む) は、OpenGIS のベクトル データ モデルをカプセル化し、いくつかの幾何学的操作、WKB (Well Knows Binary) 形式と WKT (Well Known Text) 形式間の相互変換、および空間参照系 (投影) を提供します。 。
- 空間参照クラス: OGRSpatialReference は、投影と測地基準の定義をカプセル化します。
- フィーチャ クラス: OGRFeature は完全なフィーチャの定義をカプセル化し、完全なフィーチャにはジオメトリとジオメトリの一連の属性が含まれます。
- フィーチャ定義クラス: OGRFeatureDefn は、フィーチャの属性、タイプ、名前、およびそのデフォルトの空間参照系をカプセル化します。OGRFeatureDefn オブジェクトは通常、レイヤーに対応します。
- レイヤー クラス: OGRLayer は、データ ソース クラス OGRDataSource 内の機能のレイヤーを表す抽象基本クラスです。
- データ ソース クラス: OGRDataSource は、OGRLayer オブジェクトを含むファイルまたはデータベースを表す抽象基本クラスです。
- Drivers クラス: OGRSFDriver は、サポートされている各ベクター ファイル形式に対応します。クラス OGRSFDriver は、クラス OGRSFDriverRegistrar によって登録および管理されます。
ダウンロードリンク
ホーム: https://gdal.org/download.html
バージョン 3.2.1 を選択
MSYS2コンパイル環境を準備する
(ここで、最初に mysy1.0 を使用した場合、システム列挙が不明なので、msys2 に変更します)。
(ここでは、msys2 が数日間穴に足を踏み入れており、依存ライブラリは glibc、libtool、pkg-config などの問題に依存しており、相互に行き来しています。最終的にコンパイルできた後、システム ロゴを表示することはできません)最後に認識されました。まだ主張しているので、もう一度変更しました。msys642をダウンロードし、もう一度実行し、すべてのパスを削除し、msys642に直接インストールし、パスプレフィックスを使用して設定を開始し、抽出したライブラリファイルをコンパイルしてインストールします)これは、Windows 上で Linux ライブラリがコンパイルされる環境です
。
自分でダウンロードして解凍します。
「msys2.bat」をクリックして開始します。
ここでは、Qt5.9.3 の mingw32 開発を使用する必要があるため、Qt の mingw32 コンパイラーをこのルート ディレクトリにコピーして、修飾された msys 環境に導入できるようにする必要があります。
それから:
パスは次の場所にインポートされます。
export PATH=$PATH:/mingw530_32/bin
GDALをコンパイルする
ステップ 1: ダウンロードして解凍する
export PATH=$PATH:/mingw530_32/bin
cd /home/21497/compile
mkdir gdal
次に、gdal パッケージを msys のメイン ディレクトリにコピーします。
cd gdal
tar xvf gdal-3.2.1.tar.gz
ls -l
ステップ 2: 構成する
ここでは、指定されたディレクトリにライブラリを生成するために prefix パラメータが設定されています。
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
エラー「configure: error: PROJ 6 シンボルが見つかりません」。PROJ6 をコンパイルする必要があります。
次の章「PROJ6 のコンパイル」を参照してください。コンパイルが完了したら、ここに戻って設定を続行してください。
cd gdal-3.2.1
./configure
それでもエラーが報告されますが、ヘッダー ファイルとライブラリ ファイルが既に存在することがわかり、次の強制を開始します。
ヘッダー ファイルがまだ見つかりません。別のファイルを次に示します。
十分ではありません。彼のためにコメントアウトするだけです。
コメントの読み取りを直接強制し、HAVA_PROJ_H の定義を強制します (すべてのフォルダーが配置され、テストも強制的にシールドされるため、合格しません。ソース コード メソッドの最終結果は次のとおりです:
次の方法で設定します。
Proj6もそうです。
ステップ 3: mak をコンパイルする
(追伸: このライブラリは、mingw32-make でエラーや例外が発生しても make は通りますが、基本的に前者が通らない場合は make を使います。とにかくコンパイルすると純粋な gcc になり、gcc が導入されます。 Qt5.9.3のmingw32のgcc)
make -j4
コンパイルを開始すると、この gdal ライブラリがコンパイルされますが、時間がかかり、エラーが発生します。
この msys642 にはヘッダー ファイルにいくつかの問題があります。古い方法では、すべてのヘッダーをこの「geo_keyp.h」フォルダーに直接コピーできるため、理論的には次のことが可能です。
コンパイル後、実際にパスしました (PS: なぜ msys642 はヘッダー ファイルのパスを独自にロードせず、追加の環境変数は機能しないので、注意深く調べません)。コンパイルを続行します。
make
コンパイル後:
j を使用せずに make を続行し、正しくコンパイルされたことを確認します。
ステップ 4: make install をインストールする
インストール
make install
ステップ 5: コンパイルされたライブラリをプロジェクトにインポートする
(追記: ここのプロジェクトは Kirin システム v1.0.0 に基づいており、v1.1.0 にアップグレードされ、Windows プラットフォーム Qt5.9.3 の mingw32 バージョンと統合されています) 以前のインストールはすべて
システム パスにインストールされているため、ライブラリシステム パスの最初の説明はここで行われます。
ここまでは成功です。
PROJ6 をコンパイルする
ステップ 1: ダウンロードして解凍する
ダウンロード アドレス: https://proj.orgダウンロードする
バージョン 6.2.0 を選択し
、MSYS2 にコピーします。
cd /home/21497/compile
mkdir proj
cd proj
tar xfv proj-6.2.0.tar.gz
ステップ 2: 構成する
ここでは、指定されたディレクトリにライブラリを生成するために prefix パラメータが設定されています。
cd /home/21497/compile/proj/proj-6.2.0/
./configure --prefix=/home/21497/compile/proj/install
./configure --without-libtool
構成エラー「SQLITE3」 (以下の図に示すように):
次の章「SQLITE3 のコンパイル」を参照してください。コンパイルが完了したら、ここに戻って構成を続行してください:
cd /home/21497/compile/proj/proj-6.2.0/
現時点では、コンパイル時にまだエラーが発生します。このエラーは、pkgconfig の問題である可能性があります。「compile pkgconfig」をインストールし、mingw642 に変更して解決してください。続行:
ステップ 3: make をコンパイルする
make -j4
コンパイルを開始します。
ここでは、ヘッダー ファイルが見つかりません。
ヘッダー ファイル パスを追加してもエラーが報告される場合は、直接強制して続行します。
ライブラリ パスを追加してもエラーが報告される場合は、直接強制して続行します。
最後に過去をまとめました:
「gdal」ライブラリに戻ります。
ステップ 4: make install をインストールする
管理者権限を使用するには、次のようにします。管理者権限を使用しないと、インストールが失敗し、システム ディレクトリを作成できません。
sudo make install
テストしてください。これまでのところ、proj6 ライブラリはコンパイルされているので、ldconfig なしで信頼できます。
SQLITE3のコンパイル
ステップ 1: ダウンロードして解凍する
https://www.sqlite.org/download.html
tar xvf sqlite-autoconf-3420000.tar.gz
ステップ 2: 構成する
ここでは、指定されたディレクトリにライブラリを生成するために prefix パラメータが設定されています。
cd /home/21497/compile/sqlite3/sqlite-autoconf-3420000
./configure --prefix=/home/21497/compile/sqlite3/install
構成エラー:
(追記: すべてにおいてパニックにならないでください。ゆっくり目を開けてエラーを 1 行ずつ確認してください)
設定を変更します。
./configure --prefix=/home/21497/compile/sqlite3/install --disable-dependency-tracking
次に、設定を続けます。
構成は成功しました:
ステップ 3: make をコンパイルする
ここでコンパイルすると libtool でエラーが発生し、解決策がないため、sqlite を 1 バージョン逆にすると成功します。手順を繰り返します。
cd sqlite-snapshot-202101271915
./configure --prefix=/home/21497/compile/sqlite3/install
mingw32-make.exe -j4
ステップ 4: make install をインストールする
mingw32-make install
以下に示すように、失敗しました。
make が異なるため、Makefile を直接変更します。
次のものを渡すことができます。
ステップ 5: コンパイルが成功したことを確認する
上記はパスを抽出するものですが、それに依存するライブラリのコンパイルに問題があります。
ワンサイズですべてに対応するには、パスを使用せずに直接再構成し、msys にデプロイします。
cd /home/21497/compile/sqlite3/sqlite-snapshot-202101271915/
./configure
mingw32-make.exe
mingw32-make install
(忘れずに Makefile の CC を mingw32-make に変更してインストールしてください)
msys642 と 3.42 を変更し、make を使用してください (mingw32-make は使用しません)。
pkgconfig をコンパイルします (廃止されましたが、ステップは保持します)
ステップ 1: ダウンロードして解凍する
ダウンロードアドレス: https://www.freedesktop.org/wiki/Software/pkg-config/
tar xvf pkgconfig-0.6.0.tar.gz
ステップ 2: 構成する
cd pkgconfig-0.6.0/
./configure
バージョン 0.29 の場合:
構成を変更します。
./configure –with-internal-glib
色々なエラーが出ますが解決策はなく、その後mingw32-make設定proj6ではこのエラーは発生しなくなりました。
終わり
この記事では、問題を解決するために多くの試みが行われています。最終コンパイル後、解決プロセスには約 3 日かかるため、モジュールを導入する必要はありません。さまざまな msys 環境、さまざまなオープン ソース ライブラリのバージョンでの試行錯誤、およびパスのソースコード調整、やっとこの記事が終わりました。
リーダーが mingw32 を必要としない場合は、mingw32 バージョンの dgal を使用しないことをお勧めします。
前: これ以上ありません
次: 乞うご期待...
記事がオリジナル記事の場合、転載の際は出典元を明記してください
この記事のブログアドレス:https://hpzwl.blog.csdn.net/article/details/131931309