Ubuntu 18.04移除了软件包libsfcgal-dev,因此使用下面的命令无法安装,需要自己手动编译.
sudo apt-get install -y libsfcgal-dev
移除的原因估计是长期未更新,并且还在使用c++11已经淘汰的std::auto_ptr.
1 下载sfcgal软件包
sfcgal文档
从github下载最新的软件包,博主下载时为SFCGAL 1.3.5.
2 安装sfcgal依赖包
sfcgal依赖以下软件包
A C++ compiler, see above for supported platforms
CMake version ≥ 2.8.6
CGAL version ≥ 4.3
Boost version ≥ 1.54
MPFR version ≥ 2.2.1
GMP version ≥ 4.2
#Optional dependencies for viewer and 3D format export
OpenSceneGraph version ≥ 3.1
Qt4
OpenSceneGraph和Qt4为可选的软件包,如在服务器上编译不需要这两个软件包,如在客户端使用这两项后编译成功会生成名称viewer-SFCGAL的3D查看器.
安装依赖包命令
sudo apt-get -y install build-essential cmake libcgal-dev libboost-dev libmpfr-dev libgpm-dev
3 编译sfcgal软件包
因Ubuntu 18.04的gcc比较新,直接编译会报警告错误
error: ‘template<class> class std::auto_ptr’ is deprecated
因此解压后需要修改CMakeLists.txt,打开CMakeLists.txt找到set( SFCGAL_VERSION_PATCH 5 ),在后面添加一行,告诉cmake使用c++ 98标准编译.
set( SFCGAL_VERSION_MAJOR 1 )
set( SFCGAL_VERSION_MINOR 3 )
set( SFCGAL_VERSION_PATCH 5 )
set( SFCGAL_VERSION "${SFCGAL_VERSION_MAJOR}.${SFCGAL_VERSION_MINOR}.${SFCGAL_VERSION_PATCH}" )
修改为
set( SFCGAL_VERSION_MAJOR 1 )
set( SFCGAL_VERSION_MINOR 3 )
set( SFCGAL_VERSION_PATCH 5 )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98 -Wimplicit-fallthrough=0")
set( SFCGAL_VERSION "${SFCGAL_VERSION_MAJOR}.${SFCGAL_VERSION_MINOR}.${SFCGAL_VERSION_PATCH}" )
#CMAKE_C_FLAGS表示C语言
#CMAKE_CXX_FLAGS表示c++
#cmake支持的标准为 98, 11, 14, and 17.
cd ~
tar -xf SFCGAL-1.3.5.tar.gz
cd SFCGAL-1.3.5
#修改CMakeLists.txt,在set( SFCGAL_VERSION_PATCH 5 )后添加一行
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98 -Wimplicit-fallthrough=0")
#使用默认安装位置/usr/local
#cmak ..
#指定安装位置
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/sfcgal ..
make
sudo make install
4 viewer-SFCGAL的使用方法
viewer-SFCGAL可以连接到postgis以查看3D对象,但是需要注意以下事项:
4.1 不支持postgis数据库连接参数,必须使用环境变量
在打开viewer-SFCGAL之前必须先设置环境变量
export PGHOST=主机名或主机ip
export PGPORT=5432
export PGDATABASE=数据库名称
export PGUSER=用户名
export PGPASSWORD=***
4.2 在终端中打开viewer-SFCGAL
viewer-SFCGAL只支持在终端中打开,并且打开之间必须设置pg环境参数
viewer-SFCGAL
4.3 其它
打开后默认是没有sql工具按钮的,点击主菜单的最后一项,然后点击子菜单的第一项打开sql视图.
点击左侧的add按钮添加一个图层,然后在DB option中输出.
#此处的数据库名称必须和环境变量PGDATABASE保持一至
dbname=数据库名称
然后点击connect按钮,在下面的输入框中输入sql命令即可.
当输入的sql命令发生错误时,会在终端中显示错误消息.