Apache SIS 1.7 介绍与选型指南
Apache SIS 1.7 空间信息 Java 库介绍与选型指南:信息基准、模块化架构、ISO 19115/19111 标准实现、坐标转换官方示例、适用场景限制与 GeoTools/PROJ/GDAL 量化对比
Apache SIS 1.7 介绍与选型指南
一、信息基准
本篇信息采集与核验日期为 2026-10-18,全部信息取自 Apache 官方渠道(项目官网、官方发行目录、Maven Central、GitHub 官方仓库),本篇不包含任何本地安装与运行实测内容。
| 项目 | 内容 | 依据来源 |
|---|---|---|
| 本次介绍版本 | 1.7(官方最新稳定版,2026-10-13 发布) | downloads.apache.org/sis/ 发行目录(1.7 目录时间戳 2026-10-13);GitHub Releases 记录 1.7 于 2026-10-13 |
| 项目状态 | Apache 软件基金会(ASF)顶级项目 | sis.apache.org(官网与版权信息) |
| 开源许可 | Apache License 2.0 | sis.apache.org/downloads.html |
| 开发语言 | Java,官网要求 Java 11 或更高版本 | sis.apache.org/downloads.html |
| Maven 坐标 | org.apache.sis.core:sis-metadata 等 | Maven Central 元数据(sis-metadata 的 latest/release 均为 1.7,与发行目录交叉核验一致) |
| 社区规模 | GitHub 约 128 stars(2026-10-18 查询) | GitHub 官方仓库页 |
| 发行节奏 | 1.5(2025-10-06)、1.6(2026-01-30)、1.7(2026-10-13) | GitHub Releases 记录 |
官方来源清单:
| 来源 | 地址 | 用途 |
|---|---|---|
| 官网首页 | https://sis.apache.org/ | 项目定位、文档导航 |
| 下载页 | https://sis.apache.org/downloads.html | 版本公告、模块清单、Maven 坐标、许可说明 |
| 官方发行目录 | https://downloads.apache.org/sis/ | 签名发行物与目录时间戳 |
| 版本说明索引 | https://sis.apache.org/release-notes/ | 各版本变更记录入口 |
| Maven Central | https://repo1.maven.org/maven2/org/apache/sis/core/sis-metadata/ | 版本交叉核验 |
| GitHub 仓库 | https://github.com/apache/sis | 源码、Releases、社区活跃度 |
二、软件概述
本文介绍的是 Apache SIS 1.7(2026-10-13 发布)。Apache SIS(Spatial Information System)是 Apache 软件基金会旗下的 Java 空间信息工具库,定位是"空间信息的工具箱":让 Java 应用能够处理 ISO 19115 空间元数据、ISO 19111 坐标参照系与坐标转换,并从多种存储介质中读写要素(Feature)与栅格(Raster)数据。
与面向最终用户的 GIS 软件不同,SIS 是一个纯库形态的项目:它没有独立的服务端进程,而是以 Maven 构件的形式嵌入到调用方的 Java 工程中。官方下载页明确说明,1.7 以 Gradle 工程形式发布源码(后续计划迁移到 Maven 4),同时提供预编译 JAR 与 Javadoc 下载;预编译 JAR 已包含大多数模块与必需依赖,而 JAXB 实现、UCAR netCDF 库、Amazon SDK 等可选依赖不随包附带,需要使用方按需引入。
官网首页将其能力概括为"为空间信息提供统一的 Java 数据模型与坐标处理能力",其代码大量基于 OGC GeoAPI 的 org.opengis.* 接口体系,这一点可从官方示例的 import 语句直接得到印证。
三、核心架构
3.1 模块分层结构
SIS 采用多模块 Maven 构件设计,按服务域拆分,官方下载页给出的模块对照表如下:
| 服务 | Java 模块名 | Maven group | Maven artifact |
|---|---|---|---|
| ISO 19115 元数据 | org.apache.sis.metadata | org.apache.sis.core | sis-metadata |
| 坐标参照系 | org.apache.sis.referencing | org.apache.sis.core | sis-referencing |
| 标识符参照(地名录) | org.apache.sis.referencing.gazetteer | org.apache.sis.core | sis-referencing-by-identifiers |
| 要素与覆盖 | org.apache.sis.feature | org.apache.sis.core | sis-feature |
| SQL 数据库要素 | org.apache.sis.storage.sql | org.apache.sis.storage | sis-sqlstore |
| GPX 文件要素 | org.apache.sis.storage.xml | org.apache.sis.storage | sis-xmlstore |
| NetCDF 要素与栅格 | org.apache.sis.storage.netcdf | org.apache.sis.storage | sis-netcdf |
| GeoTIFF 栅格 | org.apache.sis.storage.geotiff | org.apache.sis.storage | sis-geotiff |
| Landsat 栅格 | org.apache.sis.storage.earthobservation | org.apache.sis.storage | sis-earth-observation |
| GDAL 库栅格桥接 | org.apache.sis.storage.gdal | org.apache.sis.storage | sis-gdal |
| GCOM(JAXA)栅格 | org.apache.sis.profile.japan | org.apache.sis.profile | sis-japan-profile |
| 云端存储接入 | org.apache.sis.cloud.aws | org.apache.sis.cloud | sis-cloud-aws |
| 控制台应用 | org.apache.sis.console | org.apache.sis.application | sis-console |
| 图形界面应用 | org.apache.sis.gui | org.apache.sis.application | sis-javafx |
可以看到三个层次:core 承载标准数据模型与算法(元数据、参照系、要素),storage 承载各类数据源适配,application 提供命令行与 JavaFX 图形两种成品工具。
3.2 标准体系
SIS 的数据模型围绕 OGC/ISO 空间信息标准构建:ISO 19115 定义元数据结构,ISO 19111 定义坐标参照系,官方示例代码直接使用 GeoAPI 的 org.opengis.referencing.crs.CoordinateReferenceSystem 等接口。这套标准取向使 SIS 输出的元数据与参照系对象具备良好的跨系统互操作语义。
3.3 EPSG 参数数据
坐标转换离不开 EPSG 参数数据库。官网设有专门的 EPSG Database 板块,下载页另设 "Include non-free resources" 一节,说明部分 EPSG 相关资源的使用方式,使用方在构建工程时应按官网指引确认参数数据的引入方式。
四、功能特性
4.1 坐标参照系与坐标转换
sis-referencing 提供 CRS 定义解析、查找坐标操作(findOperation)与执行转换(MathTransform)的完整链路,官方示例演示了从 WGS84 地理坐标到 UTM 投影坐标的转换,并可输出该操作的有效域范围(地理包围盒)。
4.2 空间元数据处理
sis-metadata 实现 ISO 19115 元数据模型,支持元数据对象的构建、读写与树状展示,适合作为空间数据目录、数据资产清单场景的模型层。
4.3 多源数据读取
storage 层模块覆盖 NetCDF、GeoTIFF、GPX、SQL 数据库、Landsat 等数据源,另提供 sis-gdal 模块把 GDAL 库的读取能力桥接进 SIS 的存储抽象,复用 GDAL 生态的格式覆盖面。
4.4 要素与覆盖模型
sis-feature 提供矢量要素与覆盖(Coverage)的统一内存模型,是上层存储模块与转换算法之间的公共数据载体。
4.5 成品工具
sis-console 提供命令行入口,sis-javafx 提供图形界面,二者可直接查看元数据树、执行坐标转换等操作,便于快速验证。
4.6 云存储接入
sis-cloud-aws 提供对云端对象存储的接入能力,配合 storage 抽象可在云上数据集上执行原有处理逻辑。
五、快速上手
以下内容全部引自官方文档,本篇不做本地实测。
5.1 引入 Maven 依赖
按官方下载页的 Maven 坐标,以坐标转换为例引入 sis-referencing 1.7(groupId 为 org.apache.sis.core):
<dependency>
<groupId>org.apache.sis.core</groupId>
<artifactId>sis-referencing</artifactId>
<version>1.7</version>
</dependency>
来源:https://sis.apache.org/downloads.html ("Download as Maven dependencies" 一节及模块对照表)。
5.2 官方坐标转换示例
下例完整引自官方教程页 https://sis.apache.org/howto/transform_coordinates.html ,演示 WGS84 地理坐标到 UTM 投影坐标的转换:
import org.opengis.geometry.DirectPosition;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.CoordinateOperation;
import org.opengis.referencing.operation.TransformException;
import org.opengis.util.FactoryException;
import org.apache.sis.referencing.CRS;
import org.apache.sis.referencing.CommonCRS;
import org.apache.sis.geometry.DirectPosition2D;
public class TransformCoordinates {
public static void main(String[] args) throws FactoryException, TransformException {
CoordinateReferenceSystem sourceCRS = CommonCRS.WGS84.geographic();
CoordinateReferenceSystem targetCRS = CommonCRS.WGS84.universal(40, 14); // 40°N 14°E 所在 UTM 带
CoordinateOperation operation = CRS.findOperation(sourceCRS, targetCRS, null);
System.out.println("Domain of validity:");
System.out.println(CRS.getGeographicBoundingBox(operation));
DirectPosition ptSrc = new DirectPosition2D(40, 14); // 40°N 14°E
DirectPosition ptDst = operation.getMathTransform().transform(ptSrc, null);
System.out.println("Source: " + ptSrc);
System.out.println("Target: " + ptDst);
}
}
官方说明指出:查找坐标操作的开销较大,在批量投影前只需执行一次,并可先检查操作的有效域(示例中为 UTM 33 带覆盖的 12°E–18°E、0°N–84°N)。
5.3 预编译包使用
不使用构建工具时,可从下载页获取 Apache SIS 1.7 预编译 JAR 与 Javadoc,按官网 "Setting the module-path" 一节配置 Java 模块路径后直接调用。
六、适用场景与限制
6.1 适用场景
- Java 技术栈内部需要标准一致的坐标参照系定义与转换能力(如空间数据基础设施、数据目录、对地观测数据处理流程)。
- 需要以 ISO 19115 为模型读写空间元数据,并与外部目录系统交换标准元数据。
- 需要在 JVM 侧读取 NetCDF、GeoTIFF、GPX 等格式并与要素/覆盖模型统一。
6.2 限制
- SIS 是库而非成品 GIS 服务,没有自带的可视化管理端或查询服务,需要集成到使用方工程中。
- 功能覆盖聚焦参照系、元数据与部分存储格式;格式与算法生态的广度不及 GeoTools 与 GDAL。
- 要求 Java 11 或更高版本,且可选依赖(JAXB 实现、UCAR netCDF 库等)需按官方说明自行补充。
- 社区规模较小(GitHub 约 128 stars,2026-10-18 查询),遇到疑难问题的外部资料相对有限。
七、同类选型对比
以下数据均为 2026-10-18 联网实查:stars 来自各 GitHub 官方仓库页,最近发版与版本号来自各项目官方仓库 Releases 记录,许可来自各项目官方仓库许可文件或官网声明。
| 维度 | Apache SIS 1.7 | GeoTools 34.6 | PROJ 9.9.0 | GDAL 3.13.3 |
|---|---|---|---|---|
| 开源许可 | Apache-2.0 | LGPL(仓库 LICENSE.md 声明 GNU LESSER) | MIT(官网 about 页明示) | MIT 风格(仓库 LICENSE.TXT:In general GDAL/OGR is licensed under an MIT style license) |
| GitHub stars(2026-10-18) | 约 128 | 约 1930 | 约 2029 | 约 6104 |
| 最近发版 | 1.7,2026-10-13 | 34.6,2026-10-16 | 9.9.0,2026-09-15 | 3.13.3,2026-08-18 |
| 版本节奏 | 年度级稳定更新(1.5/1.6/1.7 间隔约 3–9 个月) | 活跃滚动发布(34.x 系列) | 高频小步迭代(9.x 系列) | 高频迭代(3.x 系列 patch 更新密集) |
| 兼容矩阵 | Java 11+,面向 JVM;可经 sis-gdal 桥接 GDAL | 面向 Java 生态 | C/C++ 核心,多语言绑定 | C/C++ 核心,多语言绑定(含 Python 等) |
| 定位 | ISO 标准取向的空间信息库 | Java GIS 功能全家桶 | 坐标转换事实标准 | 栅格/矢量格式读写事实标准 |
选型建议:若你在纯 Java 技术栈中需要 ISO 标准一致的坐标参照系、元数据模型与适度的数据读取能力,Apache SIS 1.7 是契合度最高的选择;若需要最全的 GIS 算法与格式生态可转向 GeoTools 或 GDAL,若只做跨语言坐标转换则 PROJ 更为轻量直接。
八、参考链接
- 官网首页:https://sis.apache.org/
- 下载页(版本公告、模块表、Maven 坐标):https://sis.apache.org/downloads.html
- 官方发行目录:https://downloads.apache.org/sis/
- 版本说明索引:https://sis.apache.org/release-notes/
- 坐标转换官方教程:https://sis.apache.org/howto/transform_coordinates.html
- EPSG 数据库说明:https://sis.apache.org/epsg.html
- GitHub 官方仓库:https://github.com/apache/sis
- Maven Central 构件目录:https://repo1.maven.org/maven2/org/apache/sis/core/sis-metadata/