Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


安装部署

📄字数 4.0K
👁️阅读量 加载中...

空间库安装分为三部分:

  1. 安装依赖库。
  2. 安装虚谷空间数据库。
  3. 初始化。

一、获取空间库

暂未提供下载,如需获取可通过以下渠道联系虚谷。

技术交流微信群技术交流微信群

二、 安装依赖库

2.1.1 适配系统

  • Windows:可直接使用空间库版本中自带的依赖库。
  • Linux:推荐在以下操作系统进行安装部署,其他系统请联系技术支持获取。
系统名主版本最小版本
KylinV1010
openEuler22.03 TLS (5.10内核)-

2.1.2 引入的空间计算库

空间库引入的空间计算库如表2所示。点击库名称访问对应的官方网站了解更多详细信息。

依赖库名称最低版本说明
GEOS3.12.1几何引擎库,用于进行空间数据模型的处理和空间分析操作。
PROJ9.3.1提供坐标重投影支持。
GDAL3.8.5提供栅格数据处理支持。
SFCGAL1.5.0提供额外的 2D 和 3D 高级分析功能。

提示

以上依赖库除 SFCGAL 外,其它库都是静态链接到空间库程序,实际版本需要通过数据库提供的接口进行查看。

2.1.3 安装系统依赖库

请确认以下软件包是否已安装在操作系统中,这些软件包涵盖了各种用途以支持虚谷空间数据库使用。

执行以下命令进行安装:

shell
yum install -y libaio libtiff sqlite gmp mpfr libxml2 ssl crypto z lzma pcre2 expat

2.1.4 安装 SFCGAL 库

空间数据库支持RPM安装和手动安装两种方式安装 SFCGAL 库。

提示

根据实际系统环境,选择 SFCGAL 库的安装方式。推荐使用 RPM 安装 SFCGAL 库。

2.1.4.1 RPM 安装

  1. 访问安装包下载网址:http://dbv.xugu.com/data/dbversion/beta-version/spatial/,下载对应的SFCGAL库文件到本地目录。

  2. 执行以下命令,安装SFCGAL包。

    shell
    sudo rpm -ivh SFCGAL-1.5.0-1-Linux-4.19.90-24.4.v2101.ky10.aarch64.rpm
  3. (可选)在安装或升级软件包时,确保所有依赖关系都已满足。如果不满足,可以使用yum或dnf进行安装。执行以下命令。

    shell
    sudo yum install SFCGAL-1.5.0-1-Linux-4.19.90-24.4.v2101.ky10.aarch64.rpm

    shell
    sudo dnf install SFCGAL-1.5.0-1-Linux-4.19.90-24.4.v2101.ky10.aarch64.rpm
  4. 验证安装。安装完成后,执行以下命令,验证 SFCGAL 是否安装成功。

    shell
    sfcgal-config --version

    如果命令返回版本信息,则表示安装成功。

2.1.4.2 手动安装

提示

本章节操作步骤适用于 GCC 7.3.0 及以上版本。

  1. 安装 CMake 3.25.3 以上版本。

  2. 安装依赖库。

    shell
    yum install -y gmp* mpfr*
  3. 下载boost,执行以下命令,配置和安装boost。

    shell
    tar xf boost_1_85_0_rc3.tar.bz2
    cd boost_1_85_0
    ./bootstrap.sh
    ./b2 -a  cxxflags='-fPIC -std=c++11 -O3'  linkflags="-O3" install --prefix=/data/sp_lib/boost_1_85_0 link=static threading=multi boost.locale.icu=off
  4. 下载CGAL,执行以下命令,配置和安装CGAL(5.0以上版本,只有头文件,无需编译,直接安装即可)。

    shell
    cmake -S . -B build  -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_SHARED_LIBS=OFF -DBoost_USE_STATIC_LIBS=ON
    
    cmake --install ./build
  5. 下载SFCGAL,执行以下命令,配置和安装SFCGAL。

    shell
    cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DBoost_USE_STATIC_LIBS=ON -DCGAL_Boost_USE_STATIC_LIBS=ON -DSFCGAL_BUILD_TESTS=OFF -DSFCGAL_BUILD_EXAMPLES=OFF -DBoost_INCLUDE_DIR=/data/sp_lib/boost_1_85_0/include -DBOOST_ROOT=/data/sp_lib/boost_1_85_0 -DBoost_LIBRARY_DIR=/data/sp_lib/boost_1_85_0/lib
    
    cmake --build ./build --config Release -j20
    cmake --install ./build
  6. 执行以下命令,验证 SFCGAL 是否安装成功。

    shell
    sfcgal-config --version
  7. 制作RPM、DEB及其他包。

    1. 在SFCGAL目录下创建一个CMakeLists.txt文件,并将以下内容复制到文件中(修改两处RPM,就可以创建DEB包)。

      shell
      # 
      # 命名规范
      # 包名-版本号-发布次数-Linux发行版名.CPU架构.rpm
      # 
      # 注意:
      #   在Linux打包时,不能通过远程挂载的方式执行本脚本,否则会打包失败
      #
      
      cmake_minimum_required(VERSION 3.8)
      project("SFCGAL")
      
      set(CPACK_SET_DESTDIR ON)
      # 以下为RPM信息的设置,包名,概述,供应者,版本,分组等信息,通过其变量名称可以知道意思
      set(CPACK_PACKAGE_NAME "SFCGAL")
      set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A library of XuGu Spatial.")
      # 声明包的供应商
      set(CPACK_PACKAGE_VENDOR "XuGu DB")
      set(CPACK_PACKAGE_VERSION "1.5.0")
      set(CPACK_PACKAGE_VERSION_MAJOR "1")
      set(CPACK_PACKAGE_VERSION_MINOR "5")
      set(CPACK_PACKAGE_VERSION_PATCH "0")
      # set(CPACK_RPM_PACKAGE_GROUP "xugudb")
      set(CPACK_RPM_PACKAGE_URL "https://xugudb.com")
      set(CPACK_RPM_PACKAGE_DESCRIPTION "SFCGAL is a library of XuGu Spatial and xugu compile.")
      set(CPACK_RPM_PACKAGE_LICENSE "xugudb")
      set(CPACK_RPM_PACKAGE_EPOCH 1)
      # [可选] release 默认为 1
      set(CPACK_RPM_PACKAGE_RELEASE 1)
      
      cmake_host_system_information(RESULT DISTRIB_ID QUERY DISTRIB_ID)
      cmake_host_system_information(RESULT DISTRIB_VERSION_ID QUERY DISTRIB_VERSION_ID)
      
      # [可选] 指定生成的 rpm 文件名称
      set(CPACK_RPM_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}-${DISTRIB_ID}.${DISTRIB_VERSION_ID}.${CMAKE_HOST_SYSTEM_PROCESSOR}.rpm")
      
      install(PROGRAMS /usr/lib64/libSFCGAL.so        DESTINATION /usr/lib64)
      install(PROGRAMS /usr/lib64/libSFCGAL.so.1      DESTINATION /usr/lib64)
      install(PROGRAMS /usr/lib64/libSFCGAL.so.1.5.0  DESTINATION /usr/lib64)
      install(PROGRAMS /usr/bin/sfcgal-config         DESTINATION /usr/bin)
      
      # 设置默认生成器,RPM生成器会构建RPM安装包,其它还有TGZ/ZIP等
      set(CPACK_GENERATOR "RPM")
      
      # 设置安装路径
      set(CPACK_PACKAGING_INSTALL_PREEFIX "/usr/lib64/")
      
      # 从 rpm 包中,排除某些路径和文件 (主要为了防止和其他安装包冲突)
      list(APPEND CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/usr/local" "/usr/lib/systemd" "/usr/lib/systemd/system" )
      # 引入CPack模块,放在 CMakeList 最后,不能少
      include(CPack)
    2. 在CMakeLists.txt文件所在的路径,执行以下命令,在当前路径得到打包之后的文件。

      shell
      #!/bin/bash
      
      rm -rf build && cmake -S . -B build
      cmake --build ./build/ && cd build && cpack
      rpm -qlp SFCGAL-*
      mv SFCGAL-* ../
      cd ..
      rm -rf build

三、安装空间库

安装虚谷空间数据库的方法与虚谷关系型数据库的安装部署方式相同,详细信息请参见《虚谷数据库 安装指南》。

四、初始化

在空间库部署完成之后,安装空间扩展。

其作用是将BIN路径下的spatial_ref_sys.sql内容导入当前模式下,包含初始化创建SPATIAL_REF_SYS表、GEOMETRY_COLUMNS视图和GEOGRAPHY_COLUMNS视图。

在数据库中执行以下SQL命令,安装空间扩展:

sql
CREATE EXTENSION spatial;

4.1 示例

成功安装空间扩展后,可查询SPATIAL_REF_SYS表:

sql
SQL> SELECT count(*) FROM SPATIAL_REF_SYS;

+-------+
| EXPR1 |
+-------+
| 8500  |
+-------+

未创建SPATIAL_REF_SYS表,进行投影变换时会产生报错。

sql
SQL> SELECT ST_ASEWKT(ST_TRANSFORM(ST_SETSRID(ST_POINT(-123.365556, 48.428611),4326),3785)) As spere_merc;

Error: [E5021 L1 C18]表或视图SPATIAL_REF_SYS不存在

创建后可正常运行。

sql
SQL> SELECT ST_ASEWKT(ST_TRANSFORM(ST_SETSRID(ST_POINT(-123.365556, 48.428611),4326),3785)) As spere_merc;

+--------------------------------------------------------+
|                       SPERE_MERC                       |
+--------------------------------------------------------+
| SRID=3785;POINT(-13732990.875349075 6178458.964254236) |
+--------------------------------------------------------+