|
|
#pragma once
|
|
|
#include "afxcoll.h"
|
|
|
#include <vector>
|
|
|
#include <string>
|
|
|
#include "DrawOperator/Xy.h"
|
|
|
#include "geos_c.h"
|
|
|
|
|
|
namespace NItem
|
|
|
{
|
|
|
class GenerateSECReserve
|
|
|
{
|
|
|
public:
|
|
|
GenerateSECReserve();
|
|
|
~GenerateSECReserve();
|
|
|
|
|
|
/**
|
|
|
* @brief 计算 PDP(已开发生产)储量面积边界线
|
|
|
* @param wells 井位点坐标集合
|
|
|
* @param width 单井控制单元的宽度
|
|
|
* @param height 单井控制单元的高度
|
|
|
* @param angle_deg 控制单元的旋转角度
|
|
|
* @param gap 去缝合并参数
|
|
|
* @param boundaryPoints 用于裁剪的外部约束边界点集合
|
|
|
* @param useClip 是否执行边界裁剪逻辑
|
|
|
* @return PDP面积
|
|
|
*/
|
|
|
std::vector<std::vector<CPoint2D>> CalculatePDP(
|
|
|
const std::vector<CPoint2D>& wells,
|
|
|
double width, double height, double angle_deg, double gap,
|
|
|
const std::vector<CPoint2D>& boundaryPoints,
|
|
|
bool useClip);
|
|
|
|
|
|
/**
|
|
|
* @brief 计算 PDNP 和 PUD 储量面积线
|
|
|
* @param wells 井位点坐标集合
|
|
|
* @param width 单井控制单元的宽度
|
|
|
* @param height 单井控制单元的高度
|
|
|
* @param angle_deg 控制单元的旋转角度
|
|
|
* @param gap 去缝合并参数
|
|
|
* ¶m pud_mult PUD外扩
|
|
|
* @param boundaryPoints 用于裁剪的外部约束边界点集合
|
|
|
* @param useClip 是否执行边界裁剪逻辑
|
|
|
* @param pdnpLines pdnp面积
|
|
|
* @param pudLines pud面积
|
|
|
*/
|
|
|
void CalculateExpansion(
|
|
|
const std::vector<CPoint2D>& wells,
|
|
|
double width, double height, double angle_deg, double gap, double pud_mult,
|
|
|
const std::vector<CPoint2D>& boundaryPoints,
|
|
|
bool useClip,
|
|
|
std::vector<std::vector<CPoint2D>>& pdnpLines,
|
|
|
std::vector<std::vector<CPoint2D>>& pudLines);
|
|
|
|
|
|
/**
|
|
|
* @brief 计算 PDNP 储量面积线
|
|
|
* @param wells 井位点坐标集合
|
|
|
* @param width 单井控制单元的宽度
|
|
|
* @param height 单井控制单元的高度
|
|
|
* @param angle_deg 控制单元的旋转角度
|
|
|
* @param gap 去缝合并参数
|
|
|
* @param useClip 是否执行边界裁剪逻辑
|
|
|
* @param boundaryPoints 用于裁剪的外部约束边界点集合
|
|
|
* @param pdnpLines pdnp面积
|
|
|
*/
|
|
|
void CalculatePDNP(
|
|
|
const std::vector<CPoint2D>& wells, double width, double height, double angle_deg, double gap,
|
|
|
bool useClip, const std::vector<CPoint2D>& boundaryPoints,
|
|
|
std::vector<std::vector<CPoint2D>>& pdnpLines);
|
|
|
|
|
|
/**
|
|
|
* @brief 计算 PUD 储量面积线
|
|
|
* @param wells 井位点坐标集合
|
|
|
* @param width 单井控制单元的宽度
|
|
|
* @param height 单井控制单元的高度
|
|
|
* @param angle_deg 控制单元的旋转角度
|
|
|
* @param gap 去缝合并参数
|
|
|
* ¶m pud_mult PUD外扩
|
|
|
* @param useClip 是否执行边界裁剪逻辑
|
|
|
* @param boundaryPoints 用于裁剪的外部约束边界点集合
|
|
|
* @param pudLines pud面积
|
|
|
*/
|
|
|
void CalculatePUD(
|
|
|
const std::vector<CPoint2D>& wells, double width, double height, double angle_deg, double gap, double pud_mult,
|
|
|
bool useClip, const std::vector<CPoint2D>& boundaryPoints,
|
|
|
std::vector<std::vector<CPoint2D>>& pudLines);
|
|
|
protected:
|
|
|
void Init();
|
|
|
|
|
|
void InternalClipAndExport(
|
|
|
GEOSGeometry* geom,
|
|
|
const std::vector<CPoint2D>& boundaryPoints,
|
|
|
bool useClip,
|
|
|
std::vector<std::vector<CPoint2D>>& outLines);
|
|
|
private:
|
|
|
|
|
|
};
|
|
|
}
|