GeoServer中的几个核心概念
目录
Catalog–数据目录
GeoServer中的catalog是用来访问geoserver中的数据信息接口。
catalog中储存了如下信息:
- 命名空间(workspaces)和工作空间(workspaces)
- 栅格数据(coverage–>raster)、矢量数据(data–>vector)
- 发布的栅格资源(coverages resoures)和矢量资源信息(feature resoures)
- 样式信息(style)
workspaces–工作空间
工作空间是一个用来包含存储(store)的容器,它可以包含任意数量的储存(store)。
所有工作空间可以通过getWorkspaces()
来获取。每个工作空间通过name
属性来标识,可以通过WorkspaceInfo#getName()
来获取。工作空间也可以直接根据getWorkspaceByName(String)
来进行查询,参数为工作空间的name
。
stores–数据仓库
通过getStores(Class)
可以获取catalog中所有指定类型的数据仓库(store)。例如:如下代码可以获取所有矢量仓库
//获取所有矢量仓库
List<DataStoreInfo> dataStores = catalog.getStores( DataStoreInfo.class );
为了方便使用,catalog同时提供了getDataStores()
和getCoverageStores()
两个方法来获取矢量仓库和栅格存储。数据仓库(store)包含在工作空间(workspace)中,可以通过数据仓库获取到所属的工作空间,StoreInfo#getWorkspace()
方法。反之,则可以通过工作空间获取所有包含的指定类型数据仓库,getStoresByWorkspace(WorkspaceInfo, Class)
方法。例如,可以通过如下代码获取某个工作空间下所有矢量数据仓库
//获取特定工作空间
WorkspaceInfo workspace = catalog.getWorkspace( "myWorkspace" );
//获取该工作空间下所有矢量数据仓库
List<DataStoreInfo> dataStores = catalog.getStoresByWorkspace( workspace, DataStoreInfo.class );
Resources–数据资源
数据资源(resources)是指数据仓库中的实际数据。数据资源包括两大类,矢量数据资源(FeatureTypeInfo)和栅格数据资源(CoverageInfo)。
可以通过getResources(Class)
获取指定类型的数据资源。例如:通过以下代码可以获取所有矢量数据资源
List<FeatureTypeInfo> featureTypes = catalog.getResources( FeatureTypeInfo.class );
同样,catalog提供了两个直接获取特定数据资源的方法getFeatureTypes()
和getCoverages()
,来获取所有矢量数据资源和栅格数据资源。
一个数据资源归属于某一个命名空间,因此可以通过一个命名空间、资源名称对来进行定位和获取。如getResourceByName(String, String, Class)
方法可以用来获取指定命名空间、资源名称对(workspace+’:’+name)、资源类型来获取对应的资源。
也可不指定命名空间获取所有命名空间下某个资源名称对、资源类型对应的资源- –getResourceByName(String, Class)
。这个方法会查找所有命名空间下,该资源名称对和类型的资源,非常耗时。直到找到符合条件的资源后,返回。
//get a feature type by its qualified name
FeatureTypeInfo ft = catalog.getResourceByName(
"http://myNamespace.org", "myFeatureType", FeatureTypeInfo.class );
//get a feature type by its unqualified name
ft = catalog.getResourceByName( "myFeatureType", FeatureTypeInfo.class );
//get all feature types in a namespace
NamespaceInfo ns = catalog.getNamespaceByURI( "http://myNamespace.org" );
List<FeatureTypeInfo> featureTypes = catalog.getResourcesByNamespace( ns, FeatureTypeINfo.class );
layer–图层
图层在geoserver中是用来发布资源的,可以用来处理已经发布的资源。
getLayers()
可以获取catalog中所有图层。也可以通过唯一名称直接获取某个图层getLayerByName(String)
。getLayers(ResourceInfo)
方法可以获取指定类型的所有图层。
//get a layer by its name
LayerInfo layer = catalog.getLayer( "myLayer" );
//get all the layers for a particualr feature type
FeatureTypeInfo ft = catalog.getFeatureType( "http://myNamespace", "myFeatureType" );
List<LayerInfo> layers = catalog.getLayers( ft );
转载自:https://blog.csdn.net/cauyahui/article/details/78030596