数据存储

应用程序模式 映射文件 要求您在 sourceDataStores 第节。对于geoserver简单功能,这些功能是使用Web界面配置的,但是由于应用程序模式缺少Web配置界面,因此必须通过编辑映射文件来配置数据存储。

许多配置选项可以通过使用 插值属性 .

数据存储元素

A DataStore 配置包括

  • 一个 id ,这是一个不透明的标识符,用于引用映射文件中其他位置的数据存储,以及

  • 一个或多个 Parameter 元素,每个元素包含 namevalue 一个参数,用于配置数据存储。

的大纲 DataStore 元素:

<DataStore>
     <id>datastore</id>
     <parameters>
         <Parameter>
             <name>...</name>
             <value>...</value>
         </Parameter>
         ...
     </parameters>
</DataStore>

参数顺序不重要。

数据库选项

PostGIS和Oracle等数据库共享一些常见或类似的配置选项。

name

意义

value 实例

dbtype

数据库类型

postgisng, Oracle

host

数据库服务器的主机名或IP地址

database.example.org, 192.168.3.12

port

数据库服务器上的TCP端口

如果省略,则默认为: 1521 (Oracle)、 5432 (邮政地理信息系统)

database

PostGIS/Oracle数据库

schema

数据库模式

user

用于登录数据库服务器的用户名

passwd

用于登录数据库服务器的密码

Expose primary keys

具有可用于映射的主键的列

默认值为 false ,设置为 true 在映射中使用主键列

PostGIS

设置参数 dbtypepostgisng 使用与geoserver 2.0及更高版本捆绑的PostgisNG(新一代)驱动程序。

例子::

<DataStore>
    <id>datastore</id>
    <parameters>
        <Parameter>
            <name>dbtype</name>
            <value>postgisng</value>
        </Parameter>
        <Parameter>
            <name>host</name>
            <value>postgresql.example.org</value>
        </Parameter>
        <Parameter>
            <name>port</name>
            <value>5432</value>
        </Parameter>
        <Parameter>
            <name>database</name>
            <value>test</value>
        </Parameter>
        <Parameter>
            <name>user</name>
            <value>test</value>
        </Parameter>
        <Parameter>
            <name>passwd</name>
            <value>test</value>
        </Parameter>
    </parameters>
</DataStore>

备注

PostGIS支持包含在主要的geoserver包中,因此不需要单独的插件。

Oracle

设置参数 dbtypeOracle 使用与GeoServer 2.0及更高版本兼容的Oracle Spatial NG(新一代)驱动程序。

例子::

<DataStore>
    <id>datastore</id>
    <parameters>
        <Parameter>
            <name>dbtype</name>
            <value>Oracle</value>
        </Parameter>
        <Parameter>
            <name>host</name>
            <value>oracle.example.org</value>
        </Parameter>
        <Parameter>
            <name>port</name>
            <value>1521</value>
        </Parameter>
        <Parameter>
            <name>database</name>
            <value>demodb</value>
        </Parameter>
        <Parameter>
            <name>user</name>
            <value>orauser</value>
        </Parameter>
        <Parameter>
            <name>passwd</name>
            <value>s3cr3t</value>
        </Parameter>
    </parameters>
</DataStore>

备注

必须安装Oracle插件才能连接到Oracle空间数据库。

Shapefile

shapefile数据源通过参数的存在来标识 url ,其值应为.shp文件的文件URL。

在这个例子中,只有 url 参数是必需的。其他可选:

<DataStore>
    <id>shapefile</id>
    <parameters>
        <Parameter>
            <name>url</name>
            <value>file:/D:/Workspace/shapefiles/VerdeRiverBuffer.shp</value>
        </Parameter>
        <Parameter>
            <name>memory mapped buffer</name>
            <value>false</value>
        </Parameter>
        <Parameter>
            <name>create spatial index</name>
            <value>true</value>
        </Parameter>
        <Parameter>
            <name>charset</name>
            <value>ISO-8859-1</value>
        </Parameter>
    </parameters>
</DataStore>

备注

这个 url 在本例中,是一个转换为URL表示法的Windows文件系统路径示例。

备注

shapefile支持包含在主geoserver包中,因此不需要单独的插件。

文件属性

属性文件通过指定 directory 那是一个 file: URI。

  • 如果目录以 file:./ 它是相对于映射文件目录的。(这是一个无效的URI,但可以工作。)

例如,以下数据存储用于访问与映射文件位于同一目录中的属性文件:

<DataStore>
    <id>propertyfile</id>
    <parameters>
        <Parameter>
            <name>directory</name>
            <value>file:./</value>
        </Parameter>
    </parameters>
</DataStore>

属性文件数据存储包含 all 目录中.properties文件中存储的功能类型。例如,如果目录包含river.properties和station.properties,则数据存储将能够将它们用作功能类型。 Riverstation .其他文件扩展名将被忽略。

备注

主geoserver包中包含属性文件支持,因此不需要单独的插件。

JNDI

定义JDBC数据存储 jndiReferenceName 允许您使用servlet容器提供的连接池。这允许对连接池参数进行详细配置,并在数据源之间甚至在servlet之间共享连接。

要使用JNDI连接提供程序:

  1. 指定一个 dbtype 参数来指示数据库类型。这些值与上面的非JNDI示例相同。

  2. 给予 jndiReferenceName 在servlet容器中设置。两种缩写形式 jdbc/oracle 形式,如在Tomcat中,和规范形式 java:comp/env/jdbc/oracle 支持。

此示例使用JNDI获取Oracle连接:

<DataStore>
    <id>datastore</id>
    <parameters>
        <Parameter>
            <name>dbtype</name>
            <value>Oracle</value>
        </Parameter>
        <Parameter>
            <name>jndiReferenceName</name>
            <value>jdbc/oracle</value>
        </Parameter>
    </parameters>
</DataStore>

您的servlet容器我要求您添加 resource-ref 在您的 geoserver/WEB-INF/web.xml .(Tomcat需要,Jetty不需要。)例如:

<resource-ref>
    <description>Oracle Spatial Datasource</description>
    <res-ref-name>jdbc/oracle</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

下面是Tomcat6上下文的一个示例 /etc/tomcat6/server.xml 其中包括一个Oracle连接池:

<Context
    path="/geoserver"
    docBase="/usr/local/geoserver"
    crossContext="false"
    reloadable="false">
    <Resource
        name="jdbc/oracle"
        auth="Container"
        type="javax.sql.DataSource"
        url="jdbc:oracle:thin:@YOUR_DATABASE_HOSTNAME:1521:YOUR_DATABASE_NAME"
        driverClassName="oracle.jdbc.driver.OracleDriver"
        username="YOUR_DATABASE_USERNAME"
        password="YOUR_DATABASE_PASSWORD"
        maxActive="20"
        maxIdle="10"
        minIdle="0"
        maxWait="10000"
        minEvictableIdleTimeMillis="300000"
        timeBetweenEvictionRunsMillis="300000"
        numTestsPerEvictionRun="20"
        poolPreparedStatements="true"
        maxOpenPreparedStatements="100"
        testOnBorrow="true"
        validationQuery="SELECT SYSDATE FROM DUAL" />
</Context>

防火墙超时可以悄悄地切断与数据库的空闲连接,并导致地理服务器挂起。如果在geoserver和数据库之间有防火墙,那么配置为在防火墙删除空闲连接之前关闭这些连接的连接池将阻止geoserver挂起。此JNDI连接池配置为在5到10分钟后关闭空闲连接。

也见 使用Tomcat设置JNDI连接池 .

公开主键

默认情况下,geoserver使用主键隐藏数据库列的存在。要使这些列可在应用程序架构映射文件中使用,请设置数据存储参数 Expose primary keystrue ::

<Parameter>
    <name>Expose primary keys</name>
   <value>true</value>
</Parameter>

众所周知,这与PostGIS、Oracle和JNDI数据存储一起工作。

MongoDB

MongoDB数据库的数据存储配置如下:

<sourceDataStores>
    <DataStore>
        <id>data_source</id>
        <parameters>
            <Parameter>
                <name>data_store</name>
                <value>MONGO_DB_URL</value>
            </Parameter>
            <Parameter>
                <name>namespace</name>
                <value>NAME_SPACE</value>
            </Parameter>
            <Parameter>
                <name>schema_store</name>
                <value>SCHEMA_STORE</value>
            </Parameter>
            <Parameter>
                <name>data_store_type</name>
                <value>complex</value>
            </Parameter>
        </parameters>
    </DataStore>
</sourceDataStores>

检查 MongoDB教程 有关如何将MongoDB与应用程序架构一起使用的详细说明。

备注

必须安装MongoDB插件才能连接到MongoDB数据库。

Previous: 插值属性
Next: 特征链