同一个kmz数据同样的底图在QGIS上显示位置正常, 在Mars3d中显示就偏移了一些

问题:

1.同一个kmz数据同样的底图在QGIS上显示位置正常, 在网页中显示就偏移了一些

在qgis上的显示效果,和在mars3d的显示效果:数据明显存在偏移。

解决步骤:

1.查看了kmz数据,里面实际是tif图片数据,估计投影坐标有偏移造成的,tif用标准的4326或3857坐标系尝试

2.

重新生成了数据为4326的,但在示例中测试后还是有偏移。

示例的测试地址:功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技

function onMounted(mapInstance) {

  mapInstance.setLayersOptions([{

      name: 'HN',

      type: 'kml',

    //   url:'https://1111111111111com/file/demo-data/HNS4326.kmz',

      url:'https://com/file/demo-data/HNS_3857.kmz',

      center: {"lat":19.9,"lng":110.5,"alt":136098,"heading":0,"pitch":-90},

      show: true,

      flyTo: true

    }])

}

3.最后定位到问题是,cesium内部解析的,无法干预,最好是直接替换数据为3857坐标系尝试渲染。

备注说明:1.该示例cesium内部是用RectangleEntity+图片材质,实现的

2.建议直接用ImageLayer来加载这个tif图片。

3.Mars3d关于ImageLayer的使用示例参考与api地址:

功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技

ImageLayer - V3.6.15 - Mars3D API文档

function createGroundOverlay(state, rectangleGraphics, overlays) {

  const kmlDoc = state.kmlDoc;

  const valueGetter = state.valueGetter;

  const externalFileHandler = state.externalFileHandler;

  const groundOverlay = kmlDoc.createElement("GroundOverlay");

  // Set altitude mode

  const altitudeMode = kmlDoc.createElement("altitudeMode");

  altitudeMode.appendChild(

    getAltitudeMode(state, rectangleGraphics.heightReference)

  );

  groundOverlay.appendChild(altitudeMode);

  const height = valueGetter.get(rectangleGraphics.height);

  if (defined(height)) {

    groundOverlay.appendChild(

      createBasicElementWithText(kmlDoc, "altitude", height)

    );

  }

  const rectangle = valueGetter.get(rectangleGraphics.coordinates);

  const latLonBox = kmlDoc.createElement("LatLonBox");

  latLonBox.appendChild(

    createBasicElementWithText(

      kmlDoc,

      "north",

      CesiumMath.toDegrees(rectangle.north)

    )

  );

  latLonBox.appendChild(

    createBasicElementWithText(

      kmlDoc,

      "south",

      CesiumMath.toDegrees(rectangle.south)

    )

  );

  latLonBox.appendChild(

    createBasicElementWithText(

      kmlDoc,

      "east",

      CesiumMath.toDegrees(rectangle.east)

    )

  );

  latLonBox.appendChild(

    createBasicElementWithText(

      kmlDoc,

      "west",

      CesiumMath.toDegrees(rectangle.west)

    )

  );

  groundOverlay.appendChild(latLonBox);

  // We should only end up here if we have an ImageMaterialProperty

  const material = valueGetter.get(rectangleGraphics.material);

  const href = externalFileHandler.texture(material.image);

  const icon = kmlDoc.createElement("Icon");

  icon.appendChild(createBasicElementWithText(kmlDoc, "href", href));

  groundOverlay.appendChild(icon);

  const color = material.color;

  if (defined(color)) {

    groundOverlay.appendChild(

      createBasicElementWithText(kmlDoc, "color", colorToString(material.color))

    );

  }

  overlays.push(groundOverlay);

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/259562.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

消息队列kafka详解:Kafka重要知识点+面试题大全

重要面试知识点 Kafka 消费端确保一个 Partition 在一个消费者组内只能被一个消费者消费。这句话改怎么理解呢? 在同一个消费者组内,一个 Partition 只能被一个消费者消费。 在同一个消费者组内,所有消费者组合起来必定可以消费一个 Topic 下…

gitee对接使用

1.创建一个文件夹 2.进入Gitee接受对方项目编辑 3.打开终端初始化一开始创建的文件夹 git init 3.1打开终端 3.2输入git.init 4.克隆对方的项目 4.1进入Gitee复制对方项目的路径 4.2在编辑器终端内克隆对方项目 git clone 网址 如此你的编辑器就会出现对方的项目 …

docker 资源控制

Docker的资源控制 对容器使用宿主机的资源进行限制,如cpu,内存,磁盘I/O Docker使用linux自带的功能cgroup(control grouos)是linux内核系统提供的一种可以限制,记录,隔离进程组使用的物理资源 Docker借助这个机制&…

高性能和多级高可用,云原生数据库 GaiaDB 架构设计解析

1 云原生数据库和 GaiaDB 目前,云原生数据库已经被各行各业大规模投入到实际生产中,最终的目标都是「单机 分布式一体化」。但在演进路线上,当前主要有两个略有不同的路径。 一种是各大公有云厂商选择的优先保证上云兼容性的路线。它基于存…

电商系统架构演进

聊聊电商系统架构演进 具体以电子商务网站为例, 展示web应用的架构演变过程。 1.0时代 这个时候是一个web项目里包含了所有的模块,一个数据库里包含了所需要的所有表,这时候网站访问量增加时,首先遇到瓶颈的是应用服务器连接数&a…

“探究HarmonyOS:深入解析鸿蒙操作系统架构”

前言 一、鸿蒙操作系统是什么? 二、为什么要学习鸿蒙操作系统 1.从开发者角度看: 2.从使用者角度看: 总结 前言 随着智能化时代的到来,操作系统的发展也越来越快,人们对于智能化生活的需求也越来越强烈。鸿蒙操作系统作…

【C++】异常处理 ⑦ ( 异常类的继承层次结构 | 抛出 / 捕获 多个类型异常对象 | 抛出子类异常对象 / 捕获并处理 父类异常对象 )

文章目录 一、抛出 / 捕获 多个类型异常对象1、抛出 / 捕获 多个类型异常对象2、操作弊端3、完整代码示例 二、异常类的继承层次结构1、抛出子类异常对象 / 捕获并处理 父类异常对象2、完整代码示例 - 抛出子类异常对象 / 捕获并处理 父类异常对象 自定义的 异常类 , 可能存在 …

canvas绘制运动的圆

代码实现&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdev…

JAVA实现敏感词高亮或打码过滤:sensitive-word

练手项目中实现发表文章时检测文章是否带有敏感词&#xff0c;以及对所有敏感词的一键过滤功能 文章目录 效果预览实现步骤 效果预览 随便复制一篇内容到输入框 机器审核文章存在敏感词&#xff0c;弹消息提示并进入人工审核阶段&#xff08;若机器审核通过&#xff0c;则无需审…

二叉树的非递归遍历(详解)

二叉树非递归遍历原理 使用先序遍历的方式完成该二叉树的非递归遍历 通过添加现有项目的方式将原来编写好的栈文件导入项目中 目前项目存在三个文件一个头文件&#xff0c;两个cpp文件&#xff1a; 项目头文件的代码截图&#xff1a;QueueStorage.h 项目头文件的代码&#xff…

微信小程序 - PC端选择ZIP文件

微信小程序 - PC端选择文件 分享代码片段场景分析解决思路附魔脚本chooseMediaZip 选择附魔后的ZIP文件相关方法测试方法 参考资料 分享代码片段 不想听废话的&#xff0c;直接看代码。 https://developers.weixin.qq.com/s/UL9aojmn7iNU 场景分析 如果你的微信小程序需要选…

pytorch-mask-rcnn 官方

This is a Pytorch implementation 实现 of Mask R-CNN that is in large parts based on Matterports Mask_RCNN. Matterports repository is an implementation on Keras and TensorFlow. The following parts of the README are excerpts 摘录 from the Matterport README. …