私はこの問題をしばらく研究してきましたが、多くの人の助けを借りて、今日ようやく解決しました。そうしないと、解決策を見つけるまでに長い時間がかかるかもしれません。
始める前に、セシウムのダウンロード、セシウムの起動など、セシウムの最も基本的な使用方法をすでに知っていることを前提としています。
さて、本題に入りましょう。まず、セシウムのソース コード ファイルに加えて、次のものも必要です。 1. 対応する osgb ファイルと dwg ファイル (この記事ではこれを例として取り上げます)。2. Qgis ソフトウェア。3. セシウム研究室 4. arcmap ソフトウェア。
2 つの部分に分けて操作します。
1. dwg ファイルの処理:
arcmap を使用して dwg ファイルを開き、dwg 形式を shp ファイルに変換します (方法: ファイルを選択 -> 右クリック -> データ -> データのエクスポート)。エクスポートされた shp ファイルを arcmap に読み込みます。このとき、変換するファイルの初期座標系を知る必要があります。ここでは CGCS2000 114E なので、インポートされた shp ファイルを CGCS2000 114E として定義し、ツールボックス で、shp ファイルの投影を wgs 84 に変更します (セシウムのデフォルトの座標系がそれを行うため、後続の json ファイルに奇妙な問題が発生したくない場合は、それをオンにするだけです)。
変換が完了したら、 arcmap の右下隅を忘れずに確認して、数値がどのくらい大きいかを確認してください。数値がまだ大きい場合 (数万) は、座標系を定義しただけで変換していないことを意味します。このデータを後続の操作に使用すると、セシウムの結果は次のようになります。
正しく変換された場合 (地理的な経度と緯度であることは明らかです)、この時点で shp のプロパティを忘れずにチェックして、この ZM があるかどうかを確認してください。ある場合は、3 次元ベクトル データを変換する必要があります。まず二次元に変換してから次のステップに進みます。
3D から 2D への変換方法: 1. arcmap のメニュー バーを開き、[ジオプロセシング] -> [環境] -> [M 値] と [Z 値] を [無効] に調整し、保存します。2. ツールバーを開き、シェープファイルに変換するフィーチャを選択します。上記のようにデータ エクスポートは使用しません。
エクスポート後、ZM が欠落していることがわかります。これは、変換が成功したことを意味します。
この時点で、Qgis ソフトウェアを開き、処理されたばかりの shp ファイルをロードし、画像方法に従って選択し、形式を Geojson として選択し、直接エクスポートします。
データをエクスポートした後、必ず geojson の name 属性と crs 属性を削除し、geojson のサフィックスを json に直接変更してください。そうすれば、セシウムのコードで呼び出すことができます。
さて、前編が終了したので、後編を始めましょう。
2. osgb ファイルを処理します。
ダウンロードしたcesiumlab(ダウンロードアドレス:Cesium Lab公式サイト)を開き、ホームページ上のダウンロードをクリックし、ダウンロード後インストールを完了してください。次に、cesiumlab を開いてアカウントを登録すると、このページに入ります。
上の図の赤いボックス (斜めのモデル スライス) をクリックし、ファイルを選択し、パラメーターを設定して、ストレージ タイプをハッシュに変更することに注意してください。次に、クリックして変換を開始し、静かに変換を待ちます。
変換が成功すると、出力パスにtileset.jsonファイルがあることがわかります。これは、セシウムを使用するときにURLが指すファイルです。
上記の 2 つの手順を完了すると、セシウムを使用してロードできるようになります。
ロードされたコードを添付します。
// 这个就是你通过Qgis转换出来的geojson文件
function load_shp3d() {
var tileset = viewer.dataSources.add(Cesium.GeoJsonDataSource.load('xxx.json', {
fill: Cesium.Color.PINK.withAlpha(0.5),
clampToGround: true // 叠加就用它
}))
viewer.zoomTo(tileset); // 定位到你的数据
viewer.homeButton.viewModel.command.beforeExecute.addEventListener(function (e) {
e.cancel = true;
viewer.zoomTo(tileset); // 重写homebutton
})
}
// 这个是你通过cessiumlab转化的osgb文件
function load_tileset() {
var tileset = new Cesium.Cesium3DTileset({ url: 'xxx.json' })
viewer.scene.primitives.add(tileset);
viewer.zoomTo(tileset); // 在初始化时定位至模型位置
viewer.homeButton.viewModel.command.beforeExecute.addEventListener(function (e) {
e.cancel = true;
viewer.zoomTo(tileset);
});
}
最後に、Qgis のダウンロード速度が遅いのを防ぐために、私の Qgis インストール パッケージをみんなと共有します: リンク: https://pan.baidu.com/s/1giG5jQxlcVZN1b8GiMWaUg?pwd=bsds
抽出コード: bsds