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

目录

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

1 前言

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

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);
}

效果图如下:
Android WorldWind加载shapefile格式文件形成三维效果_第3张图片

4 读取shapefile文件

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

你可能感兴趣的:(Android,学习教程,android)