GDAL / OGR apiを使用してベクターデータ(シェープファイル)を読み取る-方法
質問
私はいくつかのgiを含むアプリケーションに取り組んでいます。読み込まれ、opengl画面にプロットされる.shpファイルがいくつかあります。現在のOpenGLスクリーンは、glOrtho()
から設定された正投影を使用しており、シンプルなテキストファイルの座標を使用して既にマップを表示しています。
これで、プロットされるマップがシェープファイルから読み込まれます。
次の疑問があります:
-
既存のglOrtho投影に.shpファイルのWGS84投影を使用する方法(シェイプファイルの.prjファイルから読み取り)、実行する必要がある変換はありますか?そして、glOrtho()が設定するものとどのように違いますか?基本的にこの情報を使用する方法は?
-
私のアプリケーションは、マップ上のポイントの正確な緯度/経度を知ることができるようにセットアップする必要があります。 Xシティにホバリングしている場合、正しい緯度/経度を取得できます。これは、GDAL / OGRのようなオープンソースutils / apiを使用して実行できることを知っていますが、これらのapiのドキュメントが入っていないので混乱しています頭。 サンプルC ++プログラムを見つけようとしましたが、見つけることができませんでした。
-
ポイント/ポリライン/ポリゴン(C-shapelibを使用)のいずれかを含むシェープファイルから座標を読み取る独自のロジックを既に作成し、opengl画面にプロットしました。ドキュメントにOGRサンプルコードが見つかりましたPOLYGONシェープファイルにはないPOINTSシェープファイル。問題は、このアプリケーションが非常に動的であるため、シェープファイルをロードするときに、読み込まれている.shpファイルの投影に応じてopenglスクリーンの投影を正しく設定する必要があることです。例:WGS84、LCC、EVEREST MODIFIED ... etc。 OGR APIからこれを達成する方法は?
この問題についてご意見をお聞かせください。この作業を進めたいと思っていますが、正しいスタートが切れません。
解決
-
OpenGLでは、Shapefileのレンダリングは非常に簡単です。 C(Google it)の無料のシェープファイル解析ライブラリである<!> quot; shapelib <!> quot;が必要になる場合があります。ポイントシェープファイルにGL_POINTSを使用し、 ラインシェープファイルの場合はGL_LINES、ポリゴンシェープファイルの場合はGL_LINE_LOOP。境界ボックスの座標をオルソに設定します。
-
.prjファイルから読み取るのは投影情報です。 WGS84は、緯度/経度座標(球体)を提供します。 ただし、表示システムは2D(長方形)です。そのため、3D球面座標を2D長方形座標に変換する必要があります(これは、投影の意味です)。投影の種類は、グローブの対象領域に応じて多数あります(投影がフィーチャの面積/形状/サイズを歪めることを忘れないでください)。タイプの範囲は、Polyconic、Modified Everest、NAD、UTMなどです。
-
単にWGS84が必要な場合は、.shファイルの境界ボックス座標を読み取り、glOrthoに割り当てます。投影(eg:-UTM)がある場合、境界ボックス座標を投影座標に変換してから、新しく投影された座標をglOrthoに割り当てます。 lat / longをProjectionに変換するには、<!> quot; Projlib <!> quot;などの投影ライブラリが必要になる場合があります。または<!> quot; GeotransEngine <!> quot;などなど
さらなる説明については、dgplinux @ y a h o oで私に連絡してください。 c o m
他のヒント
OGR APIチュートリアルを読んでください。ここからベクターデータの読み取り方法を学ぶことができますShapefileなどのソース。次に、 OGRプロジェクションチュートリアルを確認してください。ここでは、プロジェクションと空間に関する情報の使用方法について学ぶことができます。 OGRソースから読み取った参照システム。
GDAL / OGRには、ベクターファイルを読み込んで座標を変換するために必要なすべてのものが含まれています。ドキュメントは最高ではないので、GDALに対する不満を理解しています。 APIの使用に関する優れたイントロが必要な場合は、GDAL Subversionツリーのgdalinfo.cおよびogrinfo.cppを参照してください。ソースは https://svn.osgeo.org/gdal/trunk/gdal。
それでも解決しない場合、ベクトル情報を解析して座標変換を行うために使用する2つの基本的な例を示します。彼らは本当に悪いですが、彼らはポイントを得るのを助けるかもしれません。
最後に、GIS形式に慣れていない場合は、ArcGISの紹介ここ Guide Books
/ Map Projections
の下。これらのガイドによる地図作成のトレーニングがなくても、専門家と競争できます。別の良い情報源はウィキペディアです。
疑問がある場合は、そのまま使いたいUTMグリッドを選択し、UTMを座標系として使用します。 X(東)、Y(北)、およびZ(高度)を使用します。唯一のキーは、単一のUTMグリッドを選択し、すべての座標がそれを参照として使用することを確認することです。 UTMは、オンラインで多くのガイドがあるため、コードを簡単にテストできます。 OGR / GDALまたはその他のリソースを使用して変換コードを見つけることもできます。他の投影された座標系は価値があり、より良いかもしれませんが、まずはそれを見ていきます。
最後に、他のすべてが失敗した場合、NGA GeoTransを見てください。それは素晴らしいテストツールです。