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 服务时,该参数必填。