12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /*
- * @file
- * @brief
- * @version
- * @author
- * @date
- * @note
- * @warning
- * @bug
- * @copyright
- * */
- #ifndef AREA_BUSINESS_GEOFAULT
- #define AREA_BUSINESS_GEOFAULT
- #include"area_business.h"
- #include <unordered_map>
- #include<vector>
- struct config_file;
- struct point;
- struct area;
- /**
- * @brief 当采煤机和掘进机有数据点过来的时候,判断当前点与地址断层坐标点的距离d。如d<设置的阈值,则告警,d>阈值则取消。
- */
- class area_business_geofault:public area_business
- {
- public:
- void on_load_his(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data>&ptr);
- void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data>&ptr);
- void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr);
- void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr);
- static void init(config_file& config);
- static void init_geofault_from_db();
- private:
- static bool _is_near(std::shared_ptr<area>& area_ptr, double x, double y, double& out_dist);
- static std::vector<std::string> split(const std::string& str, char tag)
- {
- std::vector<std::string> arr;
- std::string subStr;
- for(size_t i = 0; i < str.length(); i++)
- {
- if(tag == str[i])
- {
- if(!subStr.empty())
- {
- arr.push_back(subStr);
- subStr.clear();
- }
- }
- else
- {
- subStr.push_back(str[i]);
- }
- }
- if(!subStr.empty())
- {
- arr.push_back(subStr);
- }
- return arr;
- }
- static std::string _points2str(std::vector<point>& points);
- private:
- //area_id: points
- static std::unordered_map<int, std::vector<point>> _area_geofault_map;
- static int _geofault_count_limit;
- };
- #endif // AREA_BUSINESS_GEOFAULT
|