2022年3月26日土曜日

Cesium

MapLibre GL JS での 3次元地形の表示は難しいようでしたので、Cesiumに切り替え。

PLATEAU や、シームレス地質図2D/3D統合版で利用されています。
https://plateauview.mlit.go.jp/
https://gbank.gsj.jp/seamless/cesium/

npm からインストール。

npm init -y
npm install cesium --save

適当なhtml,js,cssを作成して npm start。で、エラー。
html をそのまま開くことにしてみましたが、別のエラーが出ます。

SecurityError: Failed to execute 'texImage2D' on 'WebGLRenderingContext': The image element contains cross-origin data, and may not be loaded.
クロスオリジンによる制約回避は一時的に留めたい。ということで Chrome のショートカットのリンク先を以下に変更。
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:\<htmlのあるフォルダ>"
これで Cesium World Terrain を重ねて倒すと、3次元で表示されました。

次は GeoJSON を読んでポイント表示。
viewer.dataSources.add(Cesium.GeoJsonDataSource.load('./vector/aaa.geojson', {
    clampToGround: true,
    markerSize: 20,
    //markerSymbol: 'cross'
}));

Z値(高さ)を持っていないポイントでも、clampToGround: true とすると地形の上に乗せてくれます。鳥観図にしてもポイントが山の中に隠れません。地味にうれしい機能です。
やはり地形は3次元が good。昔、カシミールなどで3次元表示を見始めた頃を思い出しました。地形データのライセンスはわかりませんでしたが、おそらく商用利用はダメでしょうね。地理院データを使いたいところです。


0 件のコメント:

コメントを投稿