当前位置: 首页 > article >正文

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,


http://www.kler.cn/news/149775.html

相关文章:

  • Android 13.0 无源码app修改它的icon图标
  • 【pytest】执行环境切换的两种解决方案
  • IO和NIO的区别 BIO,NIO,AIO 有什么区别? Files的常用方法都有哪些?
  • 计算机端口
  • 量子力学应用:探索科技前沿的奇幻之旅
  • 智慧城市包括哪些内容?有哪些智慧城市物联网方案?
  • unity实时保存对象的位姿,重新运行程序时用最后保存的数据给物体赋值
  • UDP接收报文函数recvfrom和UDP发送报文函数sendto
  • runapi的学习记录
  • MySQL分页查询方法及优化
  • PAT-10道题
  • Fortinet 发布《2024 年网络威胁趋势预测报告》 攻击精准性、复杂性将显著提升
  • 嵌入式设备与PC上位机通信协议设计的几点原则
  • Vue中使用正则表达式进行文本匹配和处理的方法
  • 优化器原理——权重衰减(weight_decay)
  • CodeTON Round #7 (Div. 1 + Div. 2)
  • 景联文科技加入中国人工智能产业联盟(AIIA)数据委员会
  • ELK---filebeat日志收集工具
  • 手势识别4:C/C++实现手部检测和手势识别(含源码下载)
  • 接口测试用例编写和接口测试模板
  • 零代码连接钉钉宜搭与用友U8,让业财数据管理简单高效
  • Python自动化测试数据驱动解决数据错误
  • 修改Linux系统的网络参数
  • SerializationException异常产生原因及解决方案
  • 计算机人机界面
  • CSS特效021:蛇形左右扭动的效果
  • 哈希思想应用【C++】(位图,布隆过滤器,海量数据处理面试题)
  • 安全技术与防火墙
  • 日常办公:批处理编写Word邮件合并获取图片全路径
  • 根据Java的数据库实体类输出建表SQL