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

本篇是基于Cesium for Unreal这个插件,基本入门我这里就不多说了,不会的人可以先跟着这个教程学习一下Cesium for Unreal快速入门本篇重点讲述一下如何加载本地地形1、准备工作安装最新的Cesiumlab软件和ArcGIS软件2、准备数据(1)、在地理空间数据云上下载所需的高程数据,根据你所需的经纬度选择其中一个下载,下载完会得到一个压缩包,解压后会得到一个.img的文件地理空间数据云(2)、ArcGIS转化数据通过ArcGIS软件将得到的.img文件转换为
摘要由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, 
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Cesium for Unreal是一个用于创建虚拟地球和广阔场景的强大工具。在该工具中,UE世界坐标和WGS84经纬度坐标之间的转换原理与应用非常重要。 UE世界坐标是Unreal Engine的坐标系统,它是以场景中一个特定的参考点为原点建立的。在创建游戏或虚拟场景时,我们通常使用UE世界坐标来表示对象的位置、旋转和缩放。 而WGS84经纬度坐标是地球上某一位置的地理坐标,它以纬度和经度的形式表示。WGS84经纬度坐标非常广泛地用于地理信息系统(GIS)中,可以确保地球上任何一个点都有唯一的经纬度坐标。 在Cesium for Unreal中,实现UE世界坐标与WGS84经纬度坐标之间的转换主要依靠两个组件:CesiumGeoreference和CesiumGeoreferenceComponent。 CesiumGeoreference是整个场景的地理参考系统,它可以将地球上的点映射到UE世界坐标系中。使用CesiumGeoreference,我们可以将WGS84经纬度坐标转换为UE世界坐标,并在场景中定位相应的物体。 CesiumGeoreferenceComponent是应用于具体的物体或角色的组件,它允许我们将物体的位置信息以WGS84经纬度坐标的形式保存并进行转换。通过它,我们可以在场景中动态地更新对象的位置,并实现物体与地理环境的精确结合。 这种坐标转换的应用非常广泛,例如在创建虚拟地球、航空模拟、地理可视化等领域都有重要的作用。它使得我们可以根据真实的地球数据来构建精细的场景,并且在UE中进行交互和操作。 总之,Cesium for Unreal提供了强大的功能,可以实现UE世界坐标与WGS84经纬度坐标之间的转换。通过这种转换,我们可以在虚拟场景中精确地定位和控制对象,并实现与真实世界的精确关联。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值