第二十三篇:UE Ceisum开发之如何加载本地地形及经纬度、空间坐标相互转化

本文详细介绍了如何在UE4中利用Cesium for Unreal加载本地地形,包括从地理空间数据云下载高程数据,通过ArcGIS转换为.tif格式,使用CesiumLab处理并获取URL,最后在UE4内加载。同时讲解了经纬度与空间坐标的相互转化,以及如何处理百度、高德坐标与谷歌坐标的转换问题。
摘要由CSDN通过智能技术生成

本篇是基于Cesium for Unreal这个插件,基本入门我这里就不多说了,不会的人可以先跟着这个教程学习一下
Cesium for Unreal快速入门
本篇重点讲述一下如何加载本地地形

1、准备工作
安装最新的Cesiumlab软件和ArcGIS软件
在这里插入图片描述
2、准备数据
(1)、在地理空间数据云上下载所需的高程数据,根据你所需的经纬度选择其中一个下载,下载完会得到一个压缩包,解压后会得到一个.img的文件
地理空间数据云
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
(2)、ArcGIS转化数据
通过ArcGIS软件将得到的.img文件转换为.tif格式的文件,这么做的原因是因为下一步的cesiumLab软件并不能处理.img格式的文件,只能处理.tif格式的,打开ArcGIS软件,打开.img文件,TOC列表中右击.img文件,“数据”——“导出数据”,“导出栅格数据”窗口中格式选择tif,选择保存开始转换。
在这里插入图片描述
在这里插入图片描述

(3)CesiumLab处理地形数据
打开CesiumLab软件,选择数据处理----地形切片----添加tif文件----选择散列文件----选择输出文件夹----确认----之后等待进度条结束----点击分发服务----地形服务,就会看到地形的url和经纬度范围
在这里插入图片描述
在这里插入图片描述

(4)UE加载地形
将地形服务的URL填入Cesium World Terrain的URL中,将经纬度填入到CesiumGeoreference-1中的经纬度中
在这里插入图片描述
在这里插入图片描述

这样,本地地形就加载出来了,前提是需要开着cesiumlab软件,如果不想每次打开这个软件,可以用tomcat在本地开启一个服务,这里给大家提供一个参考
CesiumLab地形处理成果在Tomcat和IIS上发布

(5)经纬度和空间坐标相互转化
打开主关卡蓝图,引用CesiumGeoreference-1和DynamicPawn两个对象
Inaccurate Transform Ue to Longitude Latitude Height:ue坐标转化为经纬度坐标
Inaccurate Transform Longitude Latitude Height to Ue:经纬度坐标转化为ue坐标
在这里插入图片描述

(6)百度、高德坐标转化为谷歌坐标
因为cesium for unreal用的是谷歌地图,也就是WGS84坐标系,而国内的高德地图是火星GCJ02坐标系,百度用的是BD09坐标系,所以我们一般开发拿到百度或者谷歌的坐标之后需要转化为谷歌坐标。
新建一个C++类,命名为CoordinateTrans,.h文件和.cpp文件如下

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "CoordinateTrans.generated.h"

UCLASS()
class CESIUMDEMO_API ACoordinateTrans : public AActor
{
   
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	ACoordinateTrans();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

public:
	UFUNCTION(BlueprintCallable, Category = "Cesium")
		void gcj02towgs84(float lng, float lat, float& wglng, float& wglat);

	double transformLat(double x, 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值