#pragma once
#include <string>
#include <vector>
#include <map>

#include "CivPoint.h"
#include "pandaWaterCore.h"

typedef std::string String;
/**
    空间几何体对象
*/
class PANDAWATERCORELIB_API CivGeometry
{
public:   
    // 几何体类型
    enum GeometryType
    {
        SingleLine, // 单线
        MultiLine, // 多线
        Point, // 点
        Polygon // 面
    };

    CivGeometry(GeometryType type);
    ~CivGeometry();

    /**
     * @brief 根据文本生成集合体对象
     * @param [text] 根据文本文件生成集合体对象
     */
    static CivGeometry fromWktext(const std::string& text);

    // 几何体类型
    GeometryType type() const { return mGeometryType; }

    /**
     * @brief 几何体对象序列化
     * @param [text] 根据文本文件生成集合体对象
     */
    String toJson() const;

private:
    GeometryType mGeometryType;
    std::vector<CivPoint> mPoints;
};
