Android WorldWind加载shapefile格式文件形成三维效果

目录

  • 1 前言
  • 2 实现思路
  • 3 绘制Polygons
  • 4 读取shapefile文件
  • 5 加载立体模型
  • 6 问题

1 前言

在项目中有时会加载shapefile格式的数据,要形成三维立体效果。但是查看worldwind NASA官网,在worldwind android的使用教程中并没用加载shapefile格式的教程,然后源码中也没有开发加载shp文件的接口。但是要项目要加载shapefile的模型,怎么办呢?我查看使用教程,发现了一个可以绘制立体图形的接口。就是下面这个接口。
在这里插入图片描述
效果图如下:
在这里插入图片描述
于是,就联想到,既然能画一个立体模型,那画多个立体模型,不就成了。顺着这条思路继续研究。最后终于研究出来了。

2 实现思路

1.按照worldwind android的绘制立体图形的方法,绘制出单个立体图形;
2.android读取shapefile格式文件,找到立体图形的经纬度和高程数据;
3.循环遍历shapefile文件中的数据,绘制多个立体图形;
4.完成加载shapefile格式的三维模型加载;

找到实现思路,然后逐一解决问题,就很简单了。

3 绘制Polygons

我们按照worldwind的教程先实现Polygons的绘制。代码如下:

private void addShape(){
   
  RenderableLayer layer = new RenderableLayer();
   worldWindow.getLayers().addLayer(layer);
   List<Position> positions = Arrays.asList(
           Position.fromDegrees(lat, lon, 2.0e5),
           Position.fromDegrees(lat, lon+1, 7.0e5),
           Position.fromDegrees(lat+1, lon+1, 9.0e5),
           Position.fromDegrees(lat+1, lon, 7.0e5)
   );

   ShapeAttributes attrs = new ShapeAttributes();
   attrs.setDrawVerticals(true); // display the extruded verticals
   attrs.setInteriorColor(new Color(1, 1, 1, 0.5f)); // 50% transparent white
   attrs.setOutlineWidth(3);

   Polygon poly = new Polygon(positions,attrs);
   poly.setExtrude(true); // extrude the polygon from the ground to each polygon position's altitude
   layer.addRenderable(poly);
}

效果图如下:
在这里插入图片描述

4 读取shapefile文件

在上一步中,我们实现了绘制立体图形,接下来研究如何在android上读取shapefile文件。我翻遍了全网,没有找到适用于android的读取shapefile格式的第三方库(如果有谁知道可以适用于android读取shapefile的第三方库,欢迎在评论区留言)。那没办法了,只能自己琢磨了。我在java中找到两种可以读取shapefile的工具,一个是Geotools,

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Grails 启动

Grails系列 Grails项目启动 文章目录 Grails系列Grails一、项目创建二、可能的问题1.依赖下载2.项目导入到idea失败3.项目导入到idea后运行报错 Grails Grails是一款基于Groovy语言的Web应用程序框架&#xff0c;它使用了许多流行的开源技术&#xff0c;如Spring Framework、…

synchronized的轻量级锁居然不会自旋?

《Java并发编程的艺术》中说到「如果失败&#xff0c;表示其他线程竞争锁&#xff0c;当前线程便尝试使用自旋来获取锁」&#xff0c;并且下文所配的流程图中明确表示自旋失败后才会升级为重量级锁&#xff0c;但《深入理解Java虚拟机》又说「如果出现两条以上的线程争用同一个…

Python潮流周刊#1:如何系统地自学Python?

这里记录每周值得分享的 Python 及通用技术内容&#xff0c;部分内容为英文&#xff0c;已在小标题注明。&#xff08;本期标题取自其中一则分享&#xff0c;不代表全部内容都是该主题&#xff0c;特此声明。&#xff09; 文章&教程 1、编程语言的错误处理模式 文章讨论…

HR8825 STEP/DIR 微步进电机驱动芯片

HR8825是一种内置步进表的集成微步进电机驱动器&#xff0c;为打印机、扫描仪和其它自动化设备提供处理方案。HR8825提供一种带有裸L焊盘的TSSOP-28封装&#xff0c;能改进散热性能&#xff0c;且是无铅产品&#xff0c;引脚框采用100&#xff05;无锡电镀。 内部的同步整流控制…

计算机毕业设计项目选题推荐(免费领源码)java+springboot+mysql 城市房屋租赁管理系统01855

摘 要 本论文主要论述了如何使用springboot 城市房屋租赁管理系统 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构JAVA技术&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述城市房屋租赁管理系统的当前背景以及…

罗拉ROLA告诉你美国IP代理如何获取?适用于哪些场景?

美国代理IP可以是静态&#xff08;不会改变&#xff09;或动态&#xff08;周期性更改&#xff09;&#xff0c;并且可以由专业的代理服务提供商提供。不同的代理IP服务提供商可能提供不同类型的代理&#xff0c;包括数据中心代理、住宅代理和移动代理&#xff0c;以满足不同用…

干货!ERP软件如何帮助企业实现信息化管理?

ERP即企业资源规划&#xff08;Enterprise Resource Planning&#xff09;系统&#xff0c;其核心是物料的追踪流转。而在物料追踪流转的基础上&#xff0c;又衍生出一系列各类资源计划的管理和追踪。因此ERP发展成为一款集成各类资源计划&#xff0c;也就是集成企业核心业务流…

C++学习之路(二)C++如何实现一个超简单的学生信息管理系统?C++示例和小项目实例

这个示例实现了一个简单的学生信息管理系统。它包括了学生类的定义&#xff0c;可以添加学生信息、显示所有学生信息&#xff0c;将学生信息保存到文件并从文件加载信息。通过这个示例&#xff0c;你可以了解到如何使用类、函数和文件操作来构建一个基本的信息管理系统。 一个简…

windows电脑定时开关机设置

设置流程 右击【此电脑】>【管理】 【任务计划程序】>【创建基本任务】 gina 命令 查看 已经添加的定时任务从哪看&#xff1f;这里&#xff1a; 往下滑啦&#xff0c;看你刚才添加的任务&#xff1a;

云原生技术演进之路-(云技术如何一步步演进的,云原生解决了什么问题?)

云技术如何一步步演进的&#xff1f; 云原生解决了什么问题&#xff1f; 物理设备 电脑刚被发明的时候&#xff0c;还没有网络&#xff0c;每个电脑&#xff08;PC&#xff09;&#xff0c;就是一个单机。 这台单机&#xff0c;包括CPU、内存、硬盘、显卡等硬件。用户在单机…

Unity中Shader的Standard材质解析(一)

文章目录 前言一、在Unity中&#xff0c;按一下步骤准备1、在资源管理面板创建一个 Standard Surface Shader2、因为Standard Surface Shader有很多缺点&#xff0c;所以我们把他转化为顶点片元着色器3、整理只保留主平行光的Shader效果4、精简后的最终代码 前言 在Unity中&am…

小程序可拖拽按钮

你有没有遇到过在页面中有一个固定在某个位置的按钮&#xff0c;永远的挡住了你想要看的区域&#xff1f; 在小程序的列表页面中&#xff0c;常常会有一个提报的入口固定在右下角&#xff0c;如果这个按钮不可拖动的话&#xff0c;可能会挡住下面的事件&#xff0c;让用户操作起…

嵌入式系统在工业自动化中的智能化和自适应控制

嵌入式系统在工业自动化中扮演着实现智能化和自适应控制的重要角色。通过集成先进的算法和人工智能技术&#xff0c;嵌入式系统能够实现对生产过程的智能监控、分析、决策和调整&#xff0c;以提高生产线的效率、质量和稳定性。下面将详细介绍嵌入式系统在工业自动化中智能化和…

【C++】标准模板库STL作业(其二)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

红队攻防实战之钉钉RCE

我这一生如履薄冰&#xff0c;你说我能走到对岸吗&#xff1f; 本文首发于SecIN社区&#xff0c;原创作者即是本人 前言 网络安全技术学习&#xff0c;承认⾃⼰的弱点不是丑事。只有对原理了然于⼼&#xff0c;才能突破更多的限制。拥有快速学习能力的白帽子&#xff0c;是不…

为什么985、211学生都要争着抢着学Python?

最近刚开学不久&#xff0c;各位新进入大学的新生给学长留了这样一条留言&#xff1a; “以前听说读完高中大学可以好好玩&#xff0c;结果每个人开学都“卷”起来&#xff0c;我简直慌得一批&#xff01;” 原来&#xff0c;大家把摆烂挂在嘴边&#xff0c;背地里都在疯狂努…

产品经理面试必看!To B和To C产品的隐秘差异,你了解多少?

大家好&#xff0c;我是小米&#xff0c;一位对技术充满热情的产品经理。最近在和小伙伴们交流中发现一个热门话题&#xff1a;To B&#xff08;面向企业&#xff09;和To C&#xff08;面向消费者&#xff09;的产品经理究竟有何异同&#xff1f;这可是我们产品经理面试中的经…

基于springboot实现家乡特色推荐系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现家乡特色推荐系统演示 摘要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括家乡特色推荐的网络应用&#xff0c;在外国家乡特色推荐系统已经是很普遍的方式&#xff0c;不过国内的管理网站可能还处于起步…

vue 通过ref调用router-view子组件的方法

由于用的vue2.7版本&#xff0c;但用了vue3 setup的语法&#xff1b; 注意&#xff1a;是vue2的template结构&#xff0c;vue3的setup语法&#xff1b;非这种情况需要举一反三。 处理方案&#xff1a; 1、对router-view加上ref template修改 直接对router-view加上ref&#x…