SuperMap iServer 支持以下类型的数据服务提供者:

配置本地数据服务提供者

配置一个本地数据服务提供者,如下所示:

<provider name="ugcDataProvider1" class="com.supermap.services.providers.UGCDataProvider">
      <config class="com.supermap.services.providers.UGCDataProviderSetting">
          <workspacePath>../../samples/data/World/World.sxwu</workspacePath>
          <disableFieldNameToUpperCase>false</disableFieldNameToUpperCase>
          <defaultFieldForOrderBy>POP</defaultFieldForOrderBy>
          <excludedFieldsInDatasources>
            <com.supermap.services.providers.ExcludedFieldsInDatasource>
              <dataSourceName>World</dataSourceName>
              <!-- 设置排除字段 -->
              <excludedFieldsInDatasets>
                 <com.supermap.services.providers.ExcludedFieldsInDataset>
                   <datasetName>Countries</datasetName>
                   <excludedFields>SMID,SmUserID</excludedFields>
                 </com.supermap.services.providers.ExcludedFieldsInDataset>
               </excludedFieldsInDatasets>
             <com.supermap.services.providers.ExcludedFieldsInDatasource>
           </excludedFieldsInDatasources>
           <!-- 延迟提交配置 -->
           <dataProviderDelayCommitSetting>
              <enabled>false</enabled>
              <logEntireErrorMsg>true</logEntireErrorMsg>
              <dayOfWeek>1,2,3,4,5,6,7</dayOfWeek>
              <hour>3</hour>
              <minute>0</minute>
              <commitMode>SPECIFICTIME</commitMode>
              <countToCommit>1000</countToCommit>
              <updateInterval>300</updateInterval>
              <cachePath>/output</cachePath>
           </dataProviderDelayCommitSetting>
           <!-- 批量添加要素配置 -->
           <maxFeatureWriteThreadCount>1</maxFeatureWriteThreadCount>
           <writePermitTimeout>120</writePermitTimeout>
           <!-- 设置发布的数据源数据集信息 -->
           <datasourceInfos>
              <com.supermap.services.providers.FilteredDatasourceInfo>
                 <datasourceName>China</datasourceName>
                 <includedDatasetNames>
                   <string>World_Continent_pg</string>
                   <string>Island_B_pg</string>
                   <string>World_Ocean_txt</string>
                 </includedDatasetNames>
              </com.supermap.services.providers.FilteredDatasourceInfo>
           </datasourceInfos>
           <isMultiInstance>false</isMultiInstance>  
           <isDatasetsCheck>true</isDatasetsCheck>  
           <ignoreTotalCount>false</ignoreTotalCount>
           <videoStreamServiceInfo>
              <serviceName>test</datasourceName>
              <protocolName>HLS</protocolName>
           </videoStreamServiceInfo>  
        </config>
</provider>

其中<provider>中的 class 标识的是本地数据服务提供者的实现类,<config>中的 class 标识的是本地数据服务提供者对应的配置类,即 UGCDataProviderSetting,<config>中的内容是相应的配置项。

  • <workspacePath>:可选参数,代表该服务提供者所用的工作空间的路径。若工作空间有密码,假设密码为 supermap,则写为:   
  • <workspacePath>server=../samples/data/World/World.sxwu;password=supermap</workspacePath> 
    此外,工作空间路径支持从环境变量和系统配置文件中读取。可写为:
    <workspacePath>server=${datapath1}/World.sxwu;password=supermap</workspacePath> 
    详细说明请参见:预设本地工作空间路径
  • <disableFieldNameToUpperCase>:是否禁用数据服务的字段名转化为大写,默认为 false
  • <defaultFieldForOrderBy>:此参数为可选参数,用于设置使用 SQL 查询时的默认排序字段。默认值为空,此时进行 SQL 查询不进行默认排序。您可以通过修改该参数设置需要的默认排序字段。请注意,当查询请求体中包含与排序参数冲突的查询参数时,如 joinItems,将返回错误结果。
  • <excludedFieldsInDatasources>:此参数为可选参数,用于设置排除字段。管理员可以根据需要,排除指定数据集的字段,当用户进行数据集字段查询操作时,将查看不到已排除的字段。

其中,com.supermap.services.providers.ExcludedFieldsInDatasource、com.supermap.services.providers.ExcludedFieldsInDataset为字段排除设置实现类。<dataSourceName>为数据源名称,<datasetName>为数据集名称,<excludedFields>指定排除的字段。

  •  <dataProviderDelayCommitSetting>: 要素操作延迟提交设置。开启此设置时,对要素执行编辑操作后,系统将根据设置的时间,延迟提交已执行的操作。参数为可选参数。不设置时,对要素的编辑操作将同步提交并立即生效。当数据为允许编辑时,此参数可用。具体设置包括:
  • <enabled>:是否开启延迟提交。
  • <logEntireErrorMsg>:是否开启控制台错误日志。开启后,当操作出现错误时,详细错误信息将在控制台显示。
  • <commitMode>:设置提交方式,包括定时提交SPECIFICTIME 和间隔提交INTERVALUPDATE 。定时提交表示在具体时间点进行批量提交,需要设置<dayOfWeek>、<hour>、<minute>。间隔提交表示每隔一段时间进行一次批量提交。需设置<updateInterval>参数。
  • <countToCommit>:最大请求数。提交方式为间隔提交( INTERVALUPDATA) 时有效。例如设置为1000,到达指定的时间前,如果数据编辑请求数量已达到1000条,系统将自动提交这些操作。
  • <dayOfWeek>:设定更新的周期。例如<dayOfWeek>1,3,5</dayOfWeek>表示每周的周一、周三及周日自动提交已执行的操作。<commitMode>的值为SpecificTime时,此参数可用。
  • <hour>:设定提交时间的小时数(24小时制)。<commitMode>的值为SPECIFICTIME 时,此参数可用。
  • <minute>:设定提交时间的分钟数。<commitMode>的值为SpecificTime时,此参数可用。
  • <updateInterval>:提交间隔,单位为秒。例如<updateInterval>300</updateInterval>表示每隔300秒更新一次数据。当 <commitMode>为IntervalUpdate时,参数可用。
  • <cachePath>:操作信息的存储地址。到指定的提交时间时,系统自动将这些操作信息文件提交至后台,完成要素编辑。
  • <maxFeatureWriteThreadCount>:最大并发访问的线程数,默认为1,表示最大并发访问的线程数为1个。此参数为可选参数,用于配置批量添加要素的功能,您可以根据服务器的可用资源情况对该值进行调整。请注意,此参数应小于被使用数据库的最大连接数。
  • <writePermitTimeout>:等待获取写许可的超时时间,单位为秒,默认为120,表示等待获取写许可的时间大于120秒即为超时。此参数为可选参数,用于配置批量添加要素的功能。
  • <datasourceInfos>:数据源信息列表,可包含0到多个com.supermap.services.providers.FilteredDatasourceInfo节点。
  • <com.supermap.services.providers.FilteredDatasourceInfo>:此节点为设置待发布的数据源信息的实现类。其中,可设置数据源名称以及包含的数据集名称等信息。管理员可以根据需要,选择部分数据源或者数据集来发布。具体可按以下情况进行参数设定:

               a. 当数据源名称存在时,需设置:

  • <datasourceName>:数据源名称。
  • <includedDatasetNames>:选择发布数据集列表。

               b. 当数据源名称不存在时,需设置:

  • <alias>:数据源连接信息。
  • <alias>:数据源别名。
  • <engineType>:引擎类型。
  • <server>:服务。
  • <dataBase>:数据库名称。
  • <driver>:数据源连接所需的驱动程序名。
  • <password>:密码。
  • <user>:用户名。
  • <connect>:数据源是否自动连接数据。
  • <exclusive>:是否以独占方式打开数据源。
  • <openLinkTable>:是否把数据库中的其他非 SuperMap 数据表作为 LinkTable 打开。
  • <readOnly>:是否为只读。
  • <includedDatasetNames>:过滤的数据集列表。
  • <isDatasetsCheck>:是否开启数据集校验。开启后,若指定的数据集不合规(如数据源不含数据集、数据源下的数据集均不含空间表、用户指定的数据集名不存在等),则数据校验不通过。默认为 false。
  • <isMultiInstance>:是否开启服务多实例,默认为 false。
  • <videoStreamServiceInfo>:视频流服务信息。当您发布的工作空间中包含由本地视频文件导入 SuperMap iDesktopX 生成的视频数据集,建议您同时发布视频流服务和数据服务,此时,需在数据服务配置中设置视频流服务信息,从而将服务进行绑定,使客户端能够正常加载视频数据集。
  • <serviceName>:视频流服务的名称。
  • <protocolName>:发布的视频流中使用的流协议,当前仅支持 HLS。
  • <ignoreTotalCount>:是否忽略获取查询结果的 totalCount 值,默认为 false。当设置为 true 时,在数据查询时将忽略获取查询结果的 totalCount 值,并按实际设置的 maxFeatures 来返回查询要素数量。

配置 REST 数据服务提供者

配置一个 REST 数据服务提供者,如下所示:

<provider name="restMapProvider1" class="com.supermap.services.providers.RESTDataProvider">
        <config class="com.supermap.services.providers.RESTDataProviderSetting">
                <restServiceRootURL>http://localhost:8090/iserver/services/rest</restServiceRootURL>
                <token>GsXST0cE0CumxQUFXBX7Oopin4<token>
        </config>
</provider>

其中<provider>中的 class 标识的是 REST 数据服务提供者的实现类,<config>中的 class 标识的是 REST 数据服务提供者对应的配置类,即 RestDataProviderSetting,<config>中的内容是相应的配置项:

  • <restServiceRootURL>:REST 数据服务的地址,指向服务的根资源路径,如 http://localhost:8090/iserver/services/data-world/rest。
  • <useCache>:是否使用缓存。默认为 true。开启缓存后,对资源的 REST 请求会缓存在本地,下次收到同样的请求就直接在缓存中读取,不需要再向服务端发送。
  • <restProviderCacheConfig>:服务提供者历史请求缓存在内存中的存储设置,包括:
  • <maxElementsInMemory>:内存中允许存储的最大请求记录数。0代表无限制;1代表不使用内存缓存,默认为1。如果不为1,则优先向内存中存储请求记录。
  • <maxSizeOnDisk>:磁盘最大容量。单位为 MB,默认大小为2048MB。
  • <timeToLiveSeconds>:设置缓存存活的时间上限,超时后会自动清除缓存。从创建记录开始计算,单位为秒,默认为0,代表缓存永久存活。
  • <timeToIdleSeconds>:设置缓存闲置的时间上限,超时后会自动清除缓存。从上次被访问开始计算,单位为秒,默认为0,代表缓存永久存活。
  • <token>、<httpReferer>:启用安全机制的情况下,访问受保护的服务需要提供Token 令牌。如果使用的 Token 是以 HTTP referer 方式申请的,则需要设置相应的<httpReferer>。

配置 ArcGIS REST 数据服务提供者

配置一个 ArcGIS  REST 数据服务提供者,如下所示:

<provider class="com.supermap.services.providers.ArcGISRestDataProvider" enabled="true" name="arcgisRestDataProvider-test"> 
      <config class="com.supermap.services.providers.ArcGISRestDataProviderSetting"> 
        <restServiceRootURL>http://localhost:6080/arcgis/rest/services/SampleWorldCities/FeatureServer</restServiceRootURL>  
        <token>51fda53ceb25478cb37fa059ab013160</token>  
      </config> 
    </provider>

其中<provider>中的 class 标识的是 ArcGIS REST 数据服务提供者的实现类,<config>中的 class 标识的是 ArcGIS REST 数据服务提供者对应的配置类,即 ArcGISRestDataProviderSetting,<config>中的内容是相应的配置项:

  • <restServiceRootURL>:ArcGIS REST 要素服务的地址,指向服务的根资源路径。
  • <token>、<httpReferer>:启用安全机制的情况下,访问受保护的服务需要提供Token 令牌。如果使用的 Token 是以 HTTP referer 方式申请的,则需要设置相应的<httpReferer>。

配置 WFS 数据服务提供者

配置一个 WFS 数据服务提供者,如下所示:

<provider class="com.supermap.services.providers.WFSDataProvider"
        enabled="true" name="wfsDataProvider-test">
        <config class="com.supermap.services.providers.WFSDataProviderSetting">
                <serviceRootURL>http://localhost:8090/iserver/services/data-world/wfs100/utf-8</serviceRootURL>
        </config>
</provider>

其中<provider>中的 class 标识的是 REST 数据服务提供者的实现类,<config>中的 class 标识的是 REST 数据服务提供者对应的配置类,即 WFSDataProviderSetting,<config>中的内容是相应的配置项:

  • <serviceRootURL>:WFS 数据服务的访问路径。
  • <idMappingClassName>:FeatureID 转换器类名。针对不同的 WFS 服务实现,对要素 ID 的转换规则是不同的,因此在访问一个 WFS 服务时,需要提供一个 FeatureID 转换器,用于在 WFS 服务的要素 ID 与整数之间建立一一映射。SuperMap iServer 默认取 WFS 服务要素 ID 的结尾数字转换为整数,作为要素 ID 值。用户自定义转换规则时,需要对 FeatureIDMapping 接口进行实现。

配置 GeoPackage 数据服务提供者

配置一个 GeoPackage 数据服务提供者,如下所示:

<provider class="com.supermap.services.providers.GeoPackageDataProvider"  enabled="true"  name="gpkgData-samplevectors">  
      <config class="com.supermap.services.providers.GeoPackageDataProviderSetting"> 
             <filePath>../../samples/sample_vectors.gpkg</filePath>  
      </config>  
</provider> 

其中<provider>中的 class 标识的是 GeoPackage 数据服务提供者的实现类,<config>中的 class 标识的是 GeoPackage 数据服务提供者对应的配置类,即 GeoPackageDataProviderSetting,<config>中的内容与 GeoPackageDataProviderSetting  中的配置项相对应:

  • <filePath>: GeoPackage 数据库文件的路径。

 

配置 Shapefile 数据服务提供者

配置一个 Shapefile 数据服务提供者,如下所示:

    <provider class="com.supermap.services.providers.ShapefileDataProvider" enabled="true" name="shapefileData-">
      <config class="com.supermap.services.providers.ShapefileDataProviderSetting">
        <shpDir>E:/supermap/data/shp</shpDir> 
        <charset>UTF-8</charset>
      </config>
    </provider> 

其中<provider>中的 class 标识的是 Shapefile 数据服务提供者的实现类,<config>中的 class 标识的是 Shapefile 数据服务提供者对应的配置类,即 ShapefileDataProviderSetting,<config>中的内容与 ShapefileDataProviderSetting  中的配置项相对应:

  • <shpDir>: Shapefile 数据文件的路径。
  • <charset>:设置编码格式。

配置 PostGIS 数据服务提供者

PostGIS 数据服务提供者的配置在<provider>节点中进行。具体配置方式如下:

    <provider class="com.supermap.services.providers.PostgisDataProvider" enabled="true" name="data-postGIS">
      <config class="com.supermap.services.providers.PostgisDataProviderSetting"> 
        <dbType>postgis</dbType>  
        <host>192.168.17.212</host>  
        <port>5432</port>  
        <database>postGIS</database> 
        <schema>public</schema> 
        <user>postgres</user>  
        <passwd>iserver</passwd>
        <isDatasetsCheck>true</isDatasetsCheck> 
           <!-- 设置发布的数据源数据集信息 -->
         <datasourceInfos>
            <com.supermap.services.providers.FilteredDatasourceInfo>
               <datasourceName>test</datasourceName>
               <includedDatasetNames>
                 <string>test_pg</string>
                 <string>test_B_pg</string>
                 <string>test_Ocean_txt</string>
                </includedDatasetNames>
            </com.supermap.services.providers.FilteredDatasourceInfo>
         </datasourceInfos>
      </config>
    </provider> 

其中<provider>中的 class 标识的是 PostGIS 数据服务提供者的实现类,<config>中的  class 标识的是 PostGIS 服务提供者对应的配置类,即 PostgisDataProviderSetting,<config>中的内容对应的是 PostgisDataProviderSetting 对应的配置项:

  • <dbType>:数据库类型。
  • <host>:PostGIS 服务器的地址。
  • <port>:PostGIS 服务器的端口号。
  • <database>:用来存储待发布数据的数据库。
  • <schema>: PostGIS服务的schema,支持使用除public模式以外的其他模式的表数据。
  • <username>:具有访问该数据库权限的用户名。
  • <password>:该用户的密码。
  • <isDatasetsCheck>:是否开启数据集校验。开启后,若指定的数据集不合规(如数据集为空、数据集名有误等),则数据校验不通过。默认为 
         false。
  • <datasourceInfos>:数据源信息列表,可包含0到多个com.supermap.services.providers.FilteredDatasourceInfo节点。
  • <com.supermap.services.providers.FilteredDatasourceInfo>:此节点为设置待发布的数据源信息的实现类。其中,可设置数据源名称以及包含的数据集名称等信息。管理员可以根据需要,选择部分数据源或者数据集来发布。具体可按以下情况进行参数设定:
    • <datasourceName>: 数据源名称。
    • <includedDatasetNames>:选择发布数据集列表。

配置区块链数据服务提供者

区块链数据服务提供者的配置在<provider>节点中进行。具体配置方式如下:

    <provider name="data-BlockchainData" enabled="true" class="com.supermap.services.providers.BlockchainDataProvider">
      <config class="com.supermap.services.providers.BlockchainDataProviderSetting"> 
        <maxFeatures>1000</maxFeatures>  
        <dbType>BCGIS</dbType>  
        <alias>BlockchainData</alias>  
        <networkConfigFile>D://blockchain-network-supermapcc.yaml</networkConfigFile>  
        <modifyUsers>User1;User2;User3</modifyUsers>  
        <threadsPerCore>8</threadsPerCore>
      </config>
    </provider> 

其中<provider>中的 class 标识的是区块链数据服务提供者的实现类,<config>中的 class 标识的是区块链数据服务提供者对应的配置类,即 BlockchainDataProviderSetting,<config>中的内容对应的是 BlockchainDataProviderSetting 对应的配置项:

  • <maxFeatures>:用于设置服务端默认返回查询结果条目的最大数量,默认为1000。
  • <dbType> :数据库类型。
  • <alias>:数据源别名。
  • <networkConfigFile>:区块链网络的 .yaml 配置文件在主机中的路径。
  • <modifyUsers>:设置具有区块链数据可编辑权限的用户名,多个用户名用英文半角分号隔开。
  • <threadsPerCore>:设置在并行绘制地图时每个核心的线程数,默认值是8。

配置 Elasticsearch 服务提供者

Elasticsearch 服务提供者的配置在<provider>节点中进行。具体配置方式如下:

    <provider class="com.supermap.services.providers.ElasticsearchDataProvider" enabled="true" name="data-es">
      <config class="com.supermap.services.providers.ElasticsearchDataProviderSetting"> 
        <maxfeatures>1000</maxfeatures>  
        <connInfo>
            <serverAdresses>
               <string>https://127.0.0.1:9200</string>
            </serverAdresses>
            <clusterName>my-application</clusterName>
            <indexName>i-1VLKvgQhmAYdIwI7tfkg</indexName>
            <username>node</username>
            <password>123456</password>
        </connInfo>
      </config>
    </provider> 

其中 <provider> 中的 class 标识的是 Elasticsearch 服务提供者的实现类,<config>中的  class 标识的是 Elasticsearch 服务提供者对应的配置类,即 ElasticsearchDataProviderSetting,<config>中的内容对应的是 ElasticsearchDataProviderSetting 对应的配置项:

  • <maxfeatures>:最大返回要素数量。默认为1000。
  • <serverAdresses>:Elasticsearch 服务器的地址,支持配置两类协议。
  • <string>:服务器地址字符串。当使用 https 协议的 Elasticsearch 服务时,填入形如 https://127.0.0.1:9200 的地址;当使用 http 协议的 Elasticsearch 服务时,填入形如 127.0.0.1:9200 或 http://127.0.0.1:9200 的地址。
  • <clusterName>:集群名称。
  • <indexName>:索引。
  • <username>:具有访问该数据库权限的用户名。当使用 https 协议的 Elasticsearch 服务时,该参数必填。
  • <password>:该用户的密码。当使用 https 协议的 Elasticsearch 服务时,该参数必填。