第06章-要素类型与图层管理

第06章:要素类型与图层管理

6.1 要素类型和图层的关系

在 GeoServer 中:

  • 要素类型(FeatureType):数据存储中的实际数据表或数据集
  • 图层(Layer):发布的地图服务,可以配置样式、缓存等

关系:要素类型 → 图层 → OGC 服务(WMS、WFS、WCS)

6.2 FeatureTypeService 核心功能

// 获取要素类型列表
var featureTypes = await featureTypeService.GetFeatureTypesAsync("workspace", "datastore");

// 发布要素类型为图层
var featureType = new FeatureType
{
    Name = "cities",
    NativeName = "cities",
    Title = "世界城市",
    Abstract = "世界主要城市数据",
    Enabled = true,
    SRS = "EPSG:4326"
};
await featureTypeService.CreateFeatureTypeAsync("workspace", "datastore", featureType);

6.3 图层管理

// 获取所有图层
var layers = await layerService.GetLayersAsync();

// 获取特定图层
var layer = await layerService.GetLayerAsync("workspace:cities");

// 更新图层配置
layer.DefaultStyle = new StyleReference { Name = "custom_style" };
await layerService.UpdateLayerAsync("workspace:cities", layer);

// 删除图层
await layerService.DeleteLayerAsync("workspace:cities", recurse: true);

6.4 图层发布完整流程

public class LayerPublisher
{
    private readonly WorkspaceService _workspaceService;
    private readonly DataStoreService _dataStoreService;
    private readonly FeatureTypeService _featureTypeService;

    public async Task<bool> PublishLayerAsync(
        string workspaceName,
        string dataStoreName,
        string tableName,
        string layerTitle)
    {
        // 1. 确保工作空间存在
        if (!await _workspaceService.WorkspaceExistsAsync(workspaceName))
        {
            await _workspaceService.CreateWorkspaceAsync(workspaceName);
        }

        // 2. 发布要素类型
        var featureType = new FeatureType
        {
            Name = tableName,
            NativeName = tableName,
            Title = layerTitle,
            Enabled = true,
            SRS = "EPSG:4326",
            ProjectionPolicy = "FORCE_DECLARED"
        };

        await _featureTypeService.CreateFeatureTypeAsync(
            workspaceName, dataStoreName, featureType);

        Console.WriteLine($"图层 {layerTitle} 发布成功!");
        return true;
    }
}

6.5 本章小结

学习了:

  1. 要素类型与图层的区别和联系
  2. 如何发布数据为图层
  3. 图层属性配置
  4. 完整的图层发布流程

相关资源

posted @ 2025-12-11 09:28  我才是银古  阅读(0)  评论(0)    收藏  举报