#pragma once
#include "CivAttributes.h"
#include "CivGeometry.h"
#include "pandaWaterCore.h"

/**
     要素类
*/
class PANDAWATERCORELIB_API CivFeature
{
public:
    typedef int FeatureId;

    explicit CivFeature(const CivGeometry& geom );
    CivFeature() = default;
    ~CivFeature();

    /**
    * @brief 要素的几何体
    * @param [geo] 几何体
    */
    void setGeometry(const CivGeometry& geo);
    
    // 返回几何体对象
    CivGeometry geometry() const;

    /**
     * @brief 属性集合
     * @param [attributes] 属性对象
     */
    void addAttributes(const CivAttributes& attributes);

    /**
    * @brief 按属性拼接字符串
    * @param 
    */
    std::string params() const;

private:
    FeatureId mFeaId; // 要素id
    CivGeometry mGeometry; // 几何体类型
    CivAttributes mAttributes; // 属性集合
};
