セシウムは3dTiles斜め写真モデルをロードします

序:初心者Xiaobai、予備調査プロセス。

1。JavaおよびTomcat環境の構成

tomcat8.0.47バージョン、JAVA 8
ここに画像の説明を挿入

1. JAVAをインストールし、環境変数を設定します

インストールディレクトリを変更せずに、JAVAを正常にインストールできます。
環境変数JAVA_HOMEおよびPATHを構成します。java
ここに画像の説明を挿入
ここに画像の説明を挿入
インストールディレクトリを確認する場所javaを入力します。これが現在のインストールディレクトリである場合は、インストールが正しいことを意味します。
ここに画像の説明を挿入

2.Tomcatグリーンバージョンをインストールします

解凍して指定のディレクトリに配置し、環境変数を設定します。
新しい環境変数:

CATALINA_BASE C:\ tomcat \ apache-tomcat-8.0.47 CATALINA_HOME
C:\ tomcat \ apache-tomcat-8.0.47
パス%CATALINA_HOME %\ lib;%CATALINA_HOME%\ bin;
最後に追加

Tomcatサービスを設定して
インストールサービスを自動開始---- install.bat
C:\ tomcat \ apache-tomcat-8.0.47ディレクトリにinstall.batファイルを作成し、次の線分の中間コードをこのファイルにコピーして、それを保存。

@echo off
echo "开始执行安装"
echo 注册Tomcat8为系统服务

call %~dp0%bin/service.bat install
echo 设置Tomcat8服务自动启动
sc config Tomcat8 start= auto

echo 启动Tomcat8
net start Tomcat8

echo "安装完成"
pause

コピーが完了したら、右クリックしてinstall.batを管理者モードで実行します。インストールが成功すると、サービスリストにTomcatサービスが表示されるはずです。

service ---- delete.batのアンインストール
インストールが失敗した場合は、delete.batファイルを作成してサービスをアンインストールできます。次の行セグメントの中央にあるコードをdelete.batファイルにコピーします。

@echo off
echo "开始执行卸载"

echo 停止Tomcat8服务
net stop Tomcat8

echo 删除Tomcat8服务
call %~dp0%bin/service.bat remove

echo "卸载完成"
pause

管理者としてdelete.batファイルを実行して、生成されたTomcatサービスを削除します。
次に、右クリックしてinstall.batを管理者モードで実行します。インストールが成功すると、Tomcatサービスがサービスリストに表示されるはずです。

Tomcatアクセスインターフェイス:http:// localhost:8080 /

3.クロスドメインの問題

(1)web.xmlファイルのコードを変更して追加します。
ここに画像の説明を挿入
ここに画像の説明を挿入

<filter>
	<filter-name>CORS</filter-name>
	<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
	<init-param>
		<param-name>cors.allowOrigin</param-name>
		<param-value>*</param-value>
	</init-param>
	<init-param>
		<param-name>cors.supportedMethods</param-name>
		<param-value>GET,POST,HEAD,PUT,DELETE</param-value>
	</init-param>
	<init-param>
		<param-name>cors.supportedHeaders</param-name>
		<param-value>Accept,Origin,X-Requested-With,Content-Type,Last-Modified</param-value>
	</init-param>
	<init-param>
		<param-name>cors.exposedHeaders</param-name>
		<param-value>Set-Cookie</param-value>
	</init-param>
	<init-param>
		<param-name>cors.supportsCredentials</param-name>
		<param-value>true</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>CORS</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

(2)対応するクロスドメイン処理パッケージを追加します:
ここに画像の説明を挿入
ダウンロードアドレス:https//download.csdn.net/download/caozl1132/11759866

二。セシウムのインストールと展開

公式ウェブサイトのダウンロードアドレス:https://cesium.com/downloads/

プログラムをダウンロードしてTomcatWebappの下に配置し
ここに画像の説明を挿入
ます。独自のプロジェクトフォルダーを作成し、そのフォルダー内に独自のHTMLファイルを作成できます。ここにテストフォルダーが作成されます。元のHelloWorldファイルをテストにコピーし、それに基づいて変更
ここに画像の説明を挿入
できます。次のアドレスからアプリケーションを表示します。
ここに画像の説明を挿入

三。3dTilesモデルを公開する

1.3Dモデルをコピーして公開する

3DモデルのSceneフォルダーをwebappフォルダーにコピーします。
ここに画像の説明を挿入
ロードするときに、対応するtest3dモデルのjsonファイルを
ここに画像の説明を挿入
ロードします。モデルコードの一部をロードします。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

2.モデル位置調整

モデルは、作成時に現在の球の座標系と一致していない可能性があり、空中に浮かんでいます。モデルの位置は、モデルの平行移動のパラメータを調整することで調整できます。
ここに画像の説明を挿入

四。シェープファイルデータを追加する

(1)データをコピーします。
インターネットが提供するCesiumVectorTile.jsライブラリを介してロードします。ダウンロードアドレス:https://download.csdn.net/download/suntongxue100/12715639
次に、道路形状ファイルデータをCesiumフォルダーにコピーします:
ここに画像の説明を挿入
(2 )コード
追加参照:
ここに画像の説明を挿入
ここに画像の説明を挿入
表示効果:
ここに画像の説明を挿入
残りの問題:現在、シェイプファイルデータの表示は3Dモデルでカバーされますが、3Dモデルの表示に合わせる方法を探しています。

ファイブ。地形を増やす

demスライスデータを作成するには、gdal2srtmtilesツールを使用し、ツールのダウンロードアドレスについてブログを参照してくださいhttps://blog.csdn.net/qq_36377037/article/details/86300330

ツールの使用法に関するドキュメントは非常に完成していますが、現在いくつかの問題があるようで、フロントエンドの読み込みでタイルが失われます。

準備されたスライスの配置:
ここに画像の説明を挿入
コードの読み込み:
ここに画像の説明を挿入
全体的な効果:
ここに画像の説明を挿入
完全なコード:

<!DOCTYPE html>
<html lang="en">
  <head>
    <!-- Use correct character set. -->
    <meta charset="utf-8" />
    <!-- Tell IE to use the latest, best version. -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <!-- Make the application on mobile take up the full browser screen and disable user scaling. -->
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"
    />
    <title>test</title>
    <script src="../Build/Cesium/Cesium.js"></script>
	<script src="../js/CesiumVectorTile.js"></script>
    <style>
      @import url(../Build/Cesium/Widgets/widgets.css);
      html,
      body,
      #cesiumContainer {
     
     
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
        overflow: hidden;
      }
    </style>
  </head>
  <body>
    <div id="cesiumContainer"></div>
    <script>
      //var viewer = new Cesium.Viewer("cesiumContainer");
	  var terrainProvider = new Cesium.CesiumTerrainProvider({
     
      url: "../terraintiles" });
	   var viewer = new Cesium.Viewer('cesiumContainer',{
     
     
	   terrainProvider:terrainProvider,
       animation:false,       //是否显示动画控件
       homeButton:true,       //是否显示home键
       //geocoder:false,         //是否显示地名查找控件        如果设置为true,则无法查询
       baseLayerPicker:false, //是否显示图层选择控件
       timeline:false,        //是否显示时间线控件
       fullscreenButton:true, //是否全屏显示
       scene3DOnly:true,     //如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源
       infoBox:true,         //是否显示点击要素之后显示的信息
       sceneModePicker:false,  //是否显示投影方式控件  三维/二维
       navigationInstructionsInitiallyVisible:false,
       navigationHelpButton:false,     //是否显示帮助信息控件
       selectionIndicator:false,        //是否显示指示器组件
       //加载谷歌卫星影像
	   imageryProvider : new Cesium.UrlTemplateImageryProvider({
     
     url:"http://mt1.google.cn/vt/lyrs=s&hl=zh-CN&x={x}&y={y}&z={z}&s=Gali"}) 
       });
       
		viewer.scene.globe.depthTestAgainstTerrain = true;    //make the vector features stick to the terrain
		viewer._cesiumWidget._creditContainer.style.display = "none";  //	去除版权信息         
       			
	   //var tileset = new Cesium.Cesium3DTileset({ url: modeldata/3Dtilesdata(3839) });
       var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
     
         url: 'http://192.168.64.236:8080/Scene/test3d.json',
		maximumScreenSpaceError: 2,
		maximumNumberOfLoadedTiles: 1000
		})); 
		
		//move
		var translation=Cesium.Cartesian3.fromArray([20,50,-1aa0]);
		m= Cesium.Matrix4.fromTranslation(translation);
		//move生效
		tileset._modelMatrix = m;
		
		viewer.scene.primitives.add(tileset);      
      	   
       tileset.readyPromise.then(function(tileset) {
     
     
    	    viewer.scene.primitives.add(tileset);
    	    viewer.zoomTo(tileset, new Cesium.HeadingPitchRange(0.5, -0.2, tileset.boundingSphere.radius * 1.0));
    	}).otherwise(function(error) {
     
     
    	    console.log(error);
    	});
		

		//load shpfile		
	  var VectorTileImageryProvider = Cesium.VectorTileImageryProvider;
				
	  var roadsshp = new VectorTileImageryProvider({
     
     
            source: "../shp/roads.shp",
            defaultStyle: {
     
     
                outlineColor: "rgb(255,0,0)",
                lineWidth: 5
        });
		
		
        roadsshp.readyPromise.then(function () {
     
     
            viewer.imageryLayers.addImageryProvider(roadsshp);
        });
		
    </script>
  </body>
</html>

おすすめ

転載: blog.csdn.net/suntongxue100/article/details/108034719