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 件のコメント:
コメントを投稿