Apache SIS 安装指南

Ubuntu 22.04 服务器安装 Apache SIS 1.6 的实测指南:覆盖 JDK 17 环境准备、官方压缩包下载与校验、解压部署与环境变量配置、GDAL 模块兼容问题处理、安装验证与大地数据集安装,附源码构建备选方案、多方案对比与卸载方式,命令与回显逐条实测。

Apache SISApache SIS2026/10/12

Apache SIS 安装指南

目标:在 Ubuntu 22.04 服务器上完成 Apache SIS 1.6(地理空间信息系统 Java 库 + 命令行工具)的安装与验证。本文给出官方二进制包安装(推荐)与源码构建两种方案,含 sha512 校验、环境变量配置、GDAL 模块兼容排障、EPSG 大地数据集安装与卸载方式。所有命令与回显均在 Ubuntu 22.04.5 + JDK 17 环境实测通过。

一、环境信息

  • 操作系统:Ubuntu 22.04.5 LTS(VERSION_CODENAME=jammy)
  • 架构:x86_64
  • Java:OpenJDK 17.0.20.1(openjdk-17-jdk,Ubuntu 官方源)
  • Apache SIS 版本:1.6(当前最新稳定版,官方发行目录 https://dlcdn.apache.org/sis/1.6/)
  • 安装目录:/opt/sis/apache-sis-1.6
  • 数据目录:/opt/sis/apache-sis-1.6/data
  • 演示账号:root

💡 说明:Apache SIS 既是可嵌入 Java 应用的地理空间类库(坐标参照系、坐标转换、ISO 19115 元数据读写),也附带一个 sis 命令行工具,可直接在终端体验 CRS 解析、坐标转换、元数据提取等能力,无需写代码。

二、前置条件

2.1 更新软件源并安装 JDK 与工具

SIS 1.6 官方要求 Java 11 或更高(除 GDAL 模块需 Java 22、图形应用需 Java 22+),Ubuntu 22.04 官方源的 openjdk-17 直接可用:

sudo apt-get update
sudo apt-get install -y openjdk-17-jdk wget unzip

验证 JDK:

java -version

实测回显:

openjdk version "17.0.20.1" 2026-08-18
OpenJDK Runtime Environment (build 17.0.20.1+1-1-22.04-Ubuntu)
OpenJDK 64-Bit Server VM (build 17.0.20.1+1-1-22.04-Ubuntu, mixed mode, sharing)

三、版本选型说明

查询 Apache 官方发行目录当前提供的版本:

wget -qO- https://dlcdn.apache.org/sis/1.6/ | grep -oE "href=\"[^\"]+\""

实测返回(节选):

href="apache-sis-1.6-bin.zip"
href="apache-sis-1.6-bin.zip.asc"
href="apache-sis-1.6-bin.zip.sha512"
href="apache-sis-1.6-doc.zip"
href="apache-sis-1.6-doc.zip.asc"
href="apache-sis-1.6-doc.zip.sha512"
href="apache-sis-1.6-src.zip"

版本与 JDK 要求对照:

发行物说明Java 要求
apache-sis-1.6-bin.zip预编译类库 + 命令行工具(本文主测)Java 11+(GDAL 模块需 Java 22)
apache-sis-1.6-src.zip源码(Gradle 工程)构建需 Java 22+,产物可运行于 Java 11+
apache-sis-1.6-doc.zip离线 Javadoc 与文档无

💡 历史版本可从 Apache 归档目录 https://archive.apache.org/dist/sis/ 获取。本文全程按 1.6 + JDK 17 实测。

四、方案 A:官方二进制包安装(推荐)

4.1 下载与 sha512 校验

mkdir -p /tmp/sis-dl && cd /tmp/sis-dl
wget -q https://dlcdn.apache.org/sis/1.6/apache-sis-1.6-bin.zip https://dlcdn.apache.org/sis/1.6/apache-sis-1.6-bin.zip.sha512
sha512sum -c apache-sis-1.6-bin.zip.sha512
ls -lh apache-sis-1.6-bin.zip

实测回显:

apache-sis-1.6-bin.zip: OK
-rw-r--r-- 1 root root 12M Jan 27  2026 apache-sis-1.6-bin.zip

4.2 解压与环境变量

解压后目录结构为 apache-sis-1.6/{bin,conf,data,lib,log},将其移至 /opt/sis 并配置环境变量:

cd /tmp/sis-dl
unzip -q apache-sis-1.6-bin.zip
mkdir -p /opt/sis && mv apache-sis-1.6 /opt/sis/

写入 /etc/profile.d/sis.sh(所有登录会话生效):

cat > /etc/profile.d/sis.sh <<'EOF'
export SIS_HOME=/opt/sis/apache-sis-1.6
export PATH=$SIS_HOME/bin:$PATH
EOF
source /etc/profile.d/sis.sh

确认命令可用:

echo SIS_HOME=$SIS_HOME
which sis

实测回显:

SIS_HOME=/opt/sis/apache-sis-1.6
/opt/sis/apache-sis-1.6/bin/sis

💡 说明:官方 README 的安装指引为「解压后执行 ./apache-sis-1.6/bin/sis,可将 bin 目录加入 PATH」。SIS_HOME 用于标记安装位置便于管理;启动脚本内部实际使用的数据目录变量是 SIS_DATA(默认取安装目录下 data),详见《Apache SIS 配置参数详解》。

4.3 首次运行排障

问题 1:非交互环境报 tput 错误。 bin/sis 脚本在 COLUMNS 未定义时会调用 tput cols 取终端宽度,当终端变量未设置时该调用失败并使脚本退出:

sis --version
tput: No value for $TERM and no -T specified
(退出码 2)

解决:先导出 TERM(真实 SSH 登录会话自带 TERM,一般不会遇到):

export TERM=xterm-256color

问题 2:GDAL 模块与 JDK 17 不兼容。 发行包 lib/ 中自带的 GDAL 存储模块按 Java 22 编译(class 版本 66.0),JDK 17 首次运行报:

Error occurred during initialization of boot layer
java.lang.module.FindException: Error reading module: /opt/sis/apache-sis-1.6/bin/../lib/org.apache.sis.storage.gdal.jar
Caused by: java.lang.module.InvalidModuleDescriptorException: Unsupported major.minor version 66.0
(退出码 1)

解决:GDAL 是可选模块(用于 GDAL 库桥接的数据格式),核心功能不依赖它。按官方 README「仅 GDAL 模块需 Java 22」的说明,将其移出模块路径:

mkdir -p /opt/sis/apache-sis-1.6/lib-disabled
mv /opt/sis/apache-sis-1.6/lib/org.apache.sis.storage.gdal.jar /opt/sis/apache-sis-1.6/lib-disabled/

⚠️ 注意:若必须使用 GDAL 模块,请改装 Java 22+(Ubuntu 22.04 源内可用 openjdk-25 等),此时无需移动该 jar。

问题 3:sis --version 选项不存在。 SIS 控制台没有 --version 选项,版本信息用 sis about 查看:

sis --version
Option ?version? is not recognized.
(退出码 2)

4.4 验证安装

export TERM=xterm-256color
export SIS_OPTS="--encoding UTF-8"
sis about

实测回显:

Local configuration
  ├─Versions
  │   ├─Apache SIS………………………………… 1.6
  │   ├─Java………………………………………………… 17.0.20.1 (Ubuntu)
  │   ├─Operating system………………… Linux 6.8.0-138-generic (amd64)
  │   └─Geodetic dataset………………… Subset of EPSG
  ├─Localization
  │   ├─Locale…………………………………………… English (United States)
  │   │   └─ISO code…………………………… eng (US)
  │   ├─Timezone……………………………………… Greenwich Mean Time (GMT)
  │   │   └─Offset………………………………… UTC + 12:00 AM
  │   ├─Current date and time…… October 12, 2026 at 12:01:33 PM GMT
  │   └─Character encoding…………… US-ASCII (ANSI_X3.4-1968, cp367, csASCII, iso-ir-6, ASCII, iso_646.irv:1983, ANSI_X3.4-1986, ascii7, default, ISO_646.irv:1991, ISO646-US, IBM367, 646, us)
  ├─Plug-ins
  │   └─Data formats…………………………… 11 entries
  │       ├─Read……………………………………… NetCDF
  │       ├─Read/write/create…… World file
  │       ├─Read/write/create…… ASCII Grid
  │       ├─Read……………………………………… BIL/BIP/BSQ
  │       ├─Read……………………………………… CSV
  │       ├─Read……………………………………… XML
  │       ├─Read……………………………………… WKT
  │       ├─Read/write……………………… folder
  │       ├─Read/write/create…… GeoTIFF
  │       ├─Read……………………………………… Landsat
  │       └─Read/write/create…… GPS Exchange Format (GPX)
  ├─Logging
  │   ├─Implementation……………………… java.util.logging
  │   └─Level……………………………………………… CONFIG
  │       └─org.apache.sis…………… FINE
  └─Paths
      ├─User home directory………… /root
      ├─Current directory……………… /
      ├─Data directory……………………… /opt/sis/apache-sis-1.6/bin/../data
      ├─Java home directory………… /usr/lib/jvm/java-17-openjdk-amd64
      └─Temporary files…………………… /tmp
(退出码 0)

Apache SIS 1.6 与 Geodetic dataset … Subset of EPSG 表明安装成功。SIS_OPTS="--encoding UTF-8" 用于让树形表格等非 ASCII 字符正常显示(不设置时树形字符会显示为问号,功能不受影响)。

4.5 EPSG 大地数据集安装

SIS 1.6 内置「Subset of EPSG」(常用 CRS 常量子集)。查询子集内的代码(如 EPSG:4326)直接返回 WKT 定义:

sis crs EPSG:4326

实测回显(安装完整库前,注意 Citation["Subset of EPSG"]):

GeographicCRS["WGS 84",
  Datum["World Geodetic System 1984",
    Ellipsoid["WGS 1984", 6378137.0, 298.257223563]],
  CS[ellipsoidal, 2],
    Axis["Latitude (B)", north],
    Axis["Longitude (L)", east],
    Unit["degree", 0.017453292519943295],
  Usage[
    Area["World"],
    BBox[-90.00, -180.00, 90.00, 180.00]],
  Id["EPSG", 4326, "9.9.1", Citation["Subset of EPSG"], URI["urn:ogc:def:crs:EPSG:9.9.1:4326"]],
  Remark["Definitions from public sources. When a definition corresponds to an EPSG object (ignoring metadata), the EPSG code is provided as a reference where to find the complete definition."]]
(退出码 0)

查询子集外的代码(如 EPSG:6676)时报错并提示安装完整 EPSG 数据集:

sis crs EPSG:6676
No ?CoordinateReferenceSystem? object found for code ?6676?. However, only a subset of the EPSG geodetic dataset has been queried. See https://sis.apache.org/epsg.html for instruction about how to install the full EPSG database.
(退出码 199)

按官方指引,查询任意子集外的 CRS 代码即触发交互式安装流程:SIS 会请求授权从 Maven Central 下载 EPSG 数据集(约 24 MB,存入 data/Databases),并展示 EPSG 条款需两次确认:

sis crs EPSG:6676

交互过程实测(提示语与关键回显,条款全文约 90 行此处从略):

INFO    [EPSGFactory] Creating EPSG schema in the
?       ?jdbc:derby:/opt/sis/apache-sis-1.6/data/Databases/SpatialMetadata?
?       database.

Installation of EPSG geodetic dataset is recommended for this operation.
This would use about 24 Mb in the "/opt/sis/apache-sis-1.6/data/Databases" directory.
Download and install now? (Yes/No) Downloading...

                            EPSG dataset terms of use
                              Revised 8 April 2016
                        https://epsg.org/terms-of-use.html
(EPSG 条款全文)
Accept those terms of use? (Yes/No) Installing EPSG geodetic dataset...
ProjectedCRS["JGD2011 / Japan Plane Rectangular CS VIII",
  BaseGeogCRS["JGD2011",
    Datum["Japanese Geodetic Datum 2011",
      Ellipsoid["GRS 1980", 6378137.0, 298.257222101]],
    Unit["degree", 0.017453292519943295]],
  Conversion["Japan Plane Rectangular CS zone VIII",
    Method["Transverse Mercator"],
    Parameter["Latitude of natural origin", 36.0],
    Parameter["Longitude of natural origin", 138.5],
    Parameter["Scale factor at natural origin", 0.9999],
    Parameter["False easting", 0.0],
    Parameter["False northing", 0.0]],
  CS[Cartesian, 2],
    Axis["Northing (X)", north],
    Axis["Easting (Y)", east],
    Unit["metre", 1],
  Usage[
    Scope["Cadastre, engineering survey, topographic mapping (large and medium scale)."],
    Area["Japan - onshore - Honshu between approximately 137°45'E and 139°E - Niigata-ken; Nagano-ken; Yamanashi-ken; Shizuoka-ken."],
    BBox[34.54, 137.32, 38.58, 139.91]],
  Id["EPSG", 6676, "12.047", URI["urn:ogc:def:crs:EPSG:12.047:6676"]],
  Remark["Replaces JGD2000 / Japan Plane Rectangular CS VIII (CRS code 2450) with effect from 21st October 2011."]]
(退出码 0)

安装完成后数据库落位并占用约 25 MB:

ls /opt/sis/apache-sis-1.6/data/
du -sh /opt/sis/apache-sis-1.6/data/Databases/SpatialMetadata

实测回显:

Databases  README
25M     /opt/sis/apache-sis-1.6/data/Databases/SpatialMetadata

再次查询 EPSG:4326,定义切换为完整 EPSG 库(Ensemble、Scope 齐全,Id 版本为 12.047,不再带 Citation["Subset of EPSG"]):

GeographicCRS["WGS 84",
  Ensemble["World Geodetic System 1984 ensemble",
    Member["World Geodetic System 1984 (Transit)"],
    Member["World Geodetic System 1984 (G730)"],
    Member["World Geodetic System 1984 (G873)"],
    Member["World Geodetic System 1984 (G1150)"],
    Member["World Geodetic System 1984 (G1674)"],
    Member["World Geodetic System 1984 (G1762)"],
    Member["World Geodetic System 1984 (G2139)"],
    Member["World Geodetic System 1984 (G2296)"],
    Ellipsoid["WGS 84", 6378137.0, 298.257223563],
    EnsembleAccuracy[2.0]],
  CS[ellipsoidal, 2],
    Axis["Latitude (B)", north],
    Axis["Longitude (L)", east],
    Unit["degree", 0.017453292519943295],
  Usage[
    Scope["Horizontal component of 3D system."],
    Area["World"],
    BBox[-90.00, -180.00, 90.00, 180.00]],
  Id["EPSG", 4326, "12.047", URI["urn:ogc:def:crs:EPSG:12.047:4326"]]]
(退出码 0)

⚠️ 注意:EPSG 下载确认提示要求交互式终端(TTY)。在管道/无人值守脚本中执行时不会出现提示,命令直接以上述「退出码 199」报错结束。无人值守场景请改用 Maven 依赖 org.apache.sis.non-free:sis-embedded-data(见《Apache SIS 配置参数详解》)。

五、方案 B:源码构建安装(可选)

Apache SIS 源码以 Gradle 工程发布,适合需要改代码或自建 Maven 本地仓库的场景:

wget -q https://dlcdn.apache.org/sis/1.6/apache-sis-1.6-src.zip
unzip -q apache-sis-1.6-src.zip
cd apache-sis-1.6
gradle assemble                # 构建 JAR,产物在 endorsed/build/libs/
gradle publishToMavenLocal     # 如需在本机 Maven 工程中使用

⚠️ 前置说明:构建需要 Java 22+(Ubuntu 22.04 官方源无 openjdk-22,需自装),构建产物可在 Java 11+ 运行。本文主测方案 A,方案 B 命令来自官方下载页指引,未在本环境完整执行。

六、多方案对比与选择建议

维度方案 A:官方二进制包方案 B:源码构建
版本1.6 预编译1.6 源码自建
是否需联网下载 zip(12 MB),EPSG 库约 24 MB 按需下载Gradle 拉取依赖,量大
Java 要求运行 Java 11+(GDAL 模块 22+)构建 Java 22+,产物 Java 11+
附带命令行工具有(bin/sis)需自行定位产物 jar
适用场景服务器部署、快速上手、命令行体验二次开发、定制构建

选择建议:仅在服务器上使用命令行工具或嵌入 Java 应用,选方案 A;需要修改 SIS 源码或把非发布版本装入本地 Maven 仓库,选方案 B。

七、配置说明

SIS 的配置入口有三处(均已在实测环境核实):

  1. 环境变量 SIS_DATA:数据目录(EPSG 数据库、基准变化文件等)。bin/sis 启动脚本默认将其指向安装目录下 data;data/README 原文说明可自定义:

    This directory is the default location of Apache SIS data.
    If desired, an alternative location can be defined with the
    SIS_DATA environment variable. Example:
    
        export SIS_DATA=/my/data/directory
    
  2. 环境变量 SIS_OPTS:注入到每次 sis 调用的选项,官方推荐设置 UTF-8 输出编码:

    export SIS_OPTS="--encoding UTF-8"
    
  3. 日志配置 conf/logging.properties:JUL(java.util.logging)配置文件,控制日志级别与格式,实测文件内容(去注释):

    handlers = java.util.logging.FileHandler, \
               java.util.logging.ConsoleHandler
    .level = CONFIG
    org.apache.sis.level = FINE
    java.util.logging.FileHandler.level = FINE
    java.util.logging.ConsoleHandler.level = INFO
    java.util.logging.FileHandler.pattern      = %p/log/sis.log
    java.util.logging.FileHandler.formatter    = java.util.logging.SimpleFormatter
    java.util.logging.ConsoleHandler.formatter = org.apache.sis.util.logging.MonolineFormatter
    org.apache.sis.util.logging.MonolineFormatter.source = class:short
    

命令行全局选项与 Java 应用侧配置详见《Apache SIS 配置参数详解》。

八、注意事项

⚠️ 注意:

  1. SIS 1.6 核心要求 Java 11+;lib/org.apache.sis.storage.gdal.jar 需 Java 22,JDK 17/21 环境按 4.3 节移出即可。
  2. sis --version 不是合法选项,版本信息用 sis about。
  3. EPSG 数据集许可与 Apache 2.0 不兼容,因此不随发行包附带;安装它需要交互确认两次条款( Yes/No )。
  4. 图形应用 bin/sisfx 需要 Java 22+ 与 JavaFX 24+,服务器环境无需安装。

九、常见问题

Q1:sis 命令报 tput: No value for $TERM and no -T specified 并退出? 非交互环境缺少 TERM 变量,bin/sis 里的 tput cols 失败且脚本启用了 set -o errexit。先 export TERM=xterm-256color 再执行;SSH 登录会话一般自带 TERM,不受影响。

Q2:首次运行报 Unsupported major.minor version 66.0? lib/org.apache.sis.storage.gdal.jar 按 Java 22 编译(class 66.0),JDK 17 及以下无法读取。GDAL 为可选模块,按 4.3 节移出 lib/;或改装 Java 22+。

Q3:查询 CRS 报 only a subset of the EPSG geodetic dataset has been queried? 内置的是 EPSG 子集。交互终端下执行同一命令按提示输入两次 Yes 安装完整库;无人值守场景改用 Maven 依赖 sis-embedded-data。

Q4:sis crs EPSG:6676 在脚本里没有出现下载提示? 下载确认必须读到交互式终端输入;管道喂 Yes 或无 TTY 时不弹提示、直接报错退出码 199。先在终端人工完成一次安装,之后同一数据目录内脚本可直接使用。

Q5:日志行里的 ? 是乱码吗? 不是内容损坏。--encoding UTF-8 作用于命令输出(WKT、元数据表格);INFO/WARNING 等日志经 java.util.logging 通道输出,默认编码仍为 US-ASCII,因此日志中的中文引号、缩进等字符显示为问号,不影响数据正确性。

十、卸载方式

删除安装目录与环境变量文件即可(含 EPSG 数据库):

rm -rf /opt/sis
rm -f /etc/profile.d/sis.sh

若同时移除 JDK 与下载缓存:

sudo apt-get remove -y openjdk-17-jdk
sudo apt-get autoremove -y
rm -rf /tmp/sis-dl

十一、参考链接

  • Apache SIS 官网:https://sis.apache.org/
  • 官方下载页:https://sis.apache.org/downloads.html
  • 发行目录:https://dlcdn.apache.org/sis/;历史版本:https://archive.apache.org/dist/sis/
  • 命令行工具文档:https://sis.apache.org/command-line.html
  • EPSG 数据集使用说明:https://sis.apache.org/epsg.html