OpenKylin的Logo是银河麒麟
萤火工场的飞腾派表面上是一个开发板,但其硬件类型和操作系统都和信创机型比较接近,因此直接拿来模拟信创环境进行开发调试也没太大问题。这里主要分享一下飞腾派上GIS开发的一些经验。用不到的可以就此跳过,节约一些时间。
要在飞腾派上搞GIS,需要搞定以下软件:
- 基础GIS类库
- 桌面GIS
- 空间数据库
- GIS服务器
- 前端类库
这里不准备穷举(实际上也做不到),只选择其中代表性的,介绍一下如何在飞腾派上安装部署一个从底层类库到桌面GIS的相对完整的基础环境。
1. 基础GIS类库
在GIS行业的软件中,有一些重量级的基础类库(例如GDAL、JTS/JSTS/GEOS)几乎无处不在。所幸这些类库实在是太重要了,只要不指定版本,在比较常见的Linux发行版一般可以通过包管理程序直接安装,不需要自己从源代码开始编译。
由于随便装几个GIS软件这些类库就顺便装好了(有的是打包但不安装到系统中),所以这里不多介绍,只提一下gdal的安装命令:
sudo apt install gdal-bin
装完运行gdalinfo --version
应该可以砍到版本号。一般是不会出错的。一旦需要编译,那就要做好折腾几天的心理准备,因为GDAL依赖的类库不仅多,而且有的需要一点跨国技巧
一般用户直接用gdal的机会不多,不过没用过的可能性不大,不信可以仔细看下自己手头软件的license或者动态链接库里有没有GDAL。
2. 桌面GIS
开源桌面GIS里最完善的是QGIS,虽然不能说达到了Windows下一流商业桌面GIS软件的水准,但也相差不太多,应对一般性的地理数据查看、编辑、分析加工任务并无问题。此外,QGIS还有一个Provider机制,能够集成其他GIS软件的算法,目前常见版本集成了GDAL、GRASS和SAGA。用于遥感数据处理的OTB和激光点云处理的LasTool也可以集成进去。
作为GIS行业最重要的开源软件之一,QGIS在各大Linux发行版中也比较受重视,稳定版本上通常能够直接用包管理软件安装。不过也有不少得编译安装,这种情况在非X86硬件上尤为常见。
飞腾派的OpenKylin 1.0.1上如果直接装就有QT版本冲突,因此也得走编译路线。
所幸编译QGIS 3.10的源代码并未遇到太多障碍,多线程编译出了一次错后改用单线程编译,大概七八个小时候编译完成,运行并无问题。make install之后运行时有一个缺少动态链接库的错误,想办法apt安装一下就是了。然后就可以正常使用了。
检查一下插件能装,python能用,基本就没有太大问题了。
右侧可以看到QGIS的工具箱,出了自家工具,还有GDAL和GRASS的。
3. 空间数据库
说起开源的空间数据库来,首推PostgreSQL+PostGIS。剩下的要么贵,要么慢,要么功能少,要么又贵又慢功能又少。安装起来很容易,apt就可以搞定 postgresql、postgis、postgresql-pgrouting三件套。
安装完毕后启动postgresql:
systemctl start postgresql
切换为postgres账户修改默认密码:
sudo su postgres
psql
然后在psql里改密码、测试PostGIS
alter user postgres with password 'postgres';
create extension postgis;
create extension pgrouting;
select ST_POINT(123, 45);
实际使用时数据库配置还是比较复杂的,这里只验证可用性,具体使用方法不做太多介绍。
4. GIS Server
这里先安装不需要魔法的GeoServer,首先要安装JRE:
apt install openjdk-11-jre
这里没有使用古旧的Java8,但也没有使用较新的Java 19,以免出现兼容性问题。安装完检查一下:
接下是GeoServer。GeoServer是基于Java的,自带jetty,在ARM64下也可以直接运行,前提是GDAL已经安装好。下载地址见https://geoserver.org/release/stable/,可以直接使用
apt install axel unzip
axel https://sourceforge.net/projects/geoserver/files/GeoServer/2.24.1/geoserver-2.24.1-bin.zip
mkdir geoserver
mv geoserver-2.24.1-bin.zip geoserver/
unzip geoserver-2.24.1-bin.zip
cd bin
./startup.sh
axel是一个多线程下载工具,支持断点续传。sourceforge比github容易访问一些,下载不会太花时间。进去后运行startup.sh即可启动。第一次启动比较慢,请耐心等待。
有报错,地图也无法访问,先退出。检查日志应该是没有设置GEOSERVER_HOME导致data_dir访问错误,
export GEOSERVER_HOME=/home/openkylin/geoserver
之后再来就可以了。
启动花了231秒,是x86机器上的好几倍,不过tf卡速度感人也是很重要的原因。
现在就正常了,随便打开一个栅格图层和一个矢量图层看看:
前端类库使用的是OpenLayers,顺带测试了,功能正常。
5. 前端地图类库
2D地图类库OpenLayers刚才已经测试了。实际上前端js类库也不大可能出现问题,因为解析和渲染是客户端(浏览器)的事情。
接下来还有一个3D地图类库要测试下,尤其是在飞腾派的浏览器里测试下,看是否能正常启用WebGL。这里先不部署,直接在浏览器里边访问在线版的Demo。切换到采集卡界面,发现系统没有浏览器,先装一个
说实话界面的响应速度让我对GPU驱动有没有搞定很没有信心,要知道集显打开稍复杂的Cesium页面都会掉帧,飞腾派上的嵌入式的GPU还是很让人担心的。不过这个属于通过努力能解决的问题,现在也不用太纠结。
chromium安装失败,firefox也报错。不过firefox可以打开。基本确认没有3D加速,不过页面还是可以打开的,花了大概5分钟左右把球转到了中国这边。
到这里GIS平台的安装部署就先告一段落了。目前可以确认飞腾派跑后台服务及类库是可以的,桌面的QGIS(2D为主)受一些影响但可能还是勉强可用,3D的Web应用等GPU加速正常后才堪用。
6. 题外话:使用飞腾派+麒麟系统过程中遇到的一些问题
首先是无线网卡不大好用,至少和我路由器(H3C nx30pro)八字不合,连接很弱。无可奈何用了个usb网卡。
还有就是系统本身有点慢,需要放平心态,耐心等待。例如一个命令行窗口出来就要七八秒的样子(现在基本确认GPU加速没用起来)。按道理飞腾派大核是A73以上的性能,不该如此。开机有时候进默认桌面也有点慢,有一次以为是upgrade把桌面挂了,手动运行startx进了KDE还是啥,截图是注销之后的界面。
后边决定开机后多等一会,果然正常进去了。
再有一个是ntp,不自动校准时间https不好用,连apt都会受影响。发现apt update出错了最好先检查下时间,不对头就改下设置再试。最近一次开机联网后自动更新时间了,说明安装ntp是有效的。
其他暂时没发现什么问题。对于一个刚出来的开发板,还有一个刚到1.0.1的系统,不该要求过多,刚开始有点不完善很正常。目前至少是可用、没有无解的问题,对于我来说是符合预期的。等麒麟系统迭代几个小版本之后,拿来跑后端服务或者数据处理、运行前端应用或者使用桌面GIS进行编辑应该都是可以的。