OGR数据存储

OGR数据存储模块允许使用 GDAL/OGR <https://gdal.org/> 本机库,用于访问各种矢量空间格式并在GeoServer中发布它们。

当特定的数据源没有GEOSRVER纯Java数据存储满足相同的需求时,推荐使用该库,特别是与内置源相比,它具有以下限制:

  • 通常比现有的纯Java对应物慢,特别是对于地图渲染(GeoServer商店可以通过提供减小的几何图形版本来帮助渲染,OGR不提供这样的设施)。

  • 比纯Java对应的可伸缩性更小,因为用于访问数据的数据源对象不是线程安全的(参见下面的池选项)

  • 比纯Java对应的风险更大,在OGR内部发生的SeGebug将降低整个GeoServer进程(而纯Java异常被管理和报告,但不会对服务器本身造成影响)。

OGR存储已经用GDAL 2.2.x进行了测试,但可能也在使用其他版本。如果出现故障,您可以尝试移除 gdal-<version>.jar GeoServer安装包中的文件,并将其替换为特定版本的jar,这应该在GDAL安装中找到。

安装

这是一个社区模块,这意味着它在geoserver官方版本中不可用,需要手动安装。

可以按照以下步骤安装此模块:

  1. 从下载此模块包 nightly builds ,模块版本应与所需的地理服务器版本匹配。

  2. 将包中的内容提取到 WEB-INF/lib 地理服务器安装目录。

  3. 确保gdal库和gdal jni本机库在geoserver路径中可用(请参见下文)。

Linux安装详细信息

在Linux上,本机库通常可以通过诸如 gdalgdal-java ,它在安装时使文件系统上所需的库可用(具体名称可能有所不同):

/usr/lib/libgdal.so
/usr/lib/jni/libgdaljni.so

通常这些目录已经在 PATH ,因此不需要进一步配置。

如果使用自定义生成,则 LD_LIBRARY_PATHGDAL_DATA 目录:

export LD_LIBRARY_PATH /path/to/gdal/libraries
export GDAL_DATA /path/to/gdal/data

另请参见GDAL常见问题解答 about the GDAL_DATA setup .

Windows安装详细信息

在Windows上,相关文件可能如下所示:

gdal204.dll
gdalalljni.dll

定位包含Java支持的预构建GDAL可能很困难。一种选择是下载 gisinternals.com 包,特别是包括mapserver和GDAL的release-zip包(它们相当完整,包括必要的库,而MSI安装程序通常缺少Java支持)。

一旦包在磁盘上可用,在启动geoserver之前必须设置以下环境变量(路径可能会根据正在下载的包而更改)::

set PATH=%PATH%;C:\path\to\release-1900-x64-gdal-2-4-0-mapserver-7-2-1\bin;C:\tmp\release-1900-x64-gdal-2-4-0-mapserver-7-2-1\bin\gdal\java
set GDAL_DRIVER_PATH=C:\path\to\release-1900-x64-gdal-2-4-0-mapserver-7-2-1\bin\gdal\plugins
set GDAL_DATA=C:\path\to\release-1900-x64-gdal-2-4-0-mapserver-7-2-1\bin\gdal-data

配置存储

如果库安装正确,您将在“新存储”页面中的受支持存储中获得“ogr”数据存储。如果不存在,请检查日志,他们可能报告GDAL/OGR本机libs丢失,如果错误不存在,请检查jar是否已在正确的位置解包。

创建新存储区只需要配置 DatasourceName 字段中,任何其他参数都是可选的:

../../_images/store_config.png

OGR datastore配置页

这个 DatasourceName 可以是对文件、目录或服务器连接参数集的引用。例如,要连接到PostGIS数据库,连接参数可以是:

PG:user=theUser password=thePassword dbname=theDatabase

注意,与OGR页面中的文档不同,user/password/dbname部分不需要单引号(实际上是有害的)。这个 Browse 按钮可用于快速查看文件系统中的文件或目录。

这个 Driver 参数是可选的,OGR应该能够自动识别适当的驱动程序,但是当同一个数据源(例如OpenFileGDB vs FileGDB)有多个相互竞争的驱动程序时,强制进行特定的选择是有用的。

与数据库中找到的参数类似的池参数值得解释。OGR通过DataSource对象公开对数据的访问,这些对象不是线程安全的,因此一次只能有一个请求使用它们。同时,创建和保持有用状态(如内存数据缓存、空间索引等)的成本可能很高。因此,它们被存储在池中,这与关系数据库连接非常相似。

这个 Prime DataSources 选项可以强制在GDAL之前完全读取源数据 DataSource 使用对象。在某些格式中,这允许创建有用的支持数据结构,如 OpenFileGDB 格式。由于完全读取可能很昂贵,因此应注意配置池选项,以便尽可能多地重用它(例如,设置更高的 min connections ,最终将其设置为与 max connections