|
@@ -71,88 +71,88 @@ bool area::in_area(const point & p)
|
|
|
area_list::area_list()
|
|
|
{
|
|
|
}
|
|
|
+#if 0
|
|
|
+void area_list::init_monkeycar_area()
|
|
|
+{
|
|
|
+ std::unordered_map<int,std::shared_ptr<area>> map;
|
|
|
+ const char *sql = "SELECT a.area_id, a.name, a.map_id, a.area_type_id, a.path, c.scale,\
|
|
|
+ over_count_person, over_count_vehicle, over_time_person, over_time_vehicle, over_speed_vehicle, is_attendance ,b.monkeycar_coordinate,b.monkeycar_speed \
|
|
|
+ FROM dat_area a ,dat_monkeycar_base_info b ,dat_map c\
|
|
|
+ where a.area_id = b.monkeycar_base_info_id and a.map_id = c.map_id;";
|
|
|
+ std::string Error;
|
|
|
+ YADB::CDBResultSet DBRes;
|
|
|
+ sDBConnPool.Query(sql,DBRes,Error);
|
|
|
+ if(!Error.empty())
|
|
|
+ log_error("monkeycar area init Error,%s",Error.c_str());
|
|
|
+ int nCount = DBRes.GetRecordCount( Error );
|
|
|
+ if (nCount > 0)
|
|
|
+ {
|
|
|
+ log_info( "init_monkey area. The record count=%d", nCount );
|
|
|
|
|
|
-//void area_list::init_monkeycar_area()
|
|
|
-//{
|
|
|
-// std::unordered_map<int,std::shared_ptr<area>> map;
|
|
|
-// const char *sql = "SELECT a.area_id, a.name, a.map_id, a.area_type_id, a.path, c.scale,\
|
|
|
-// over_count_person, over_count_vehicle, over_time_person, over_time_vehicle, over_speed_vehicle, is_attendance ,b.monkeycar_coordinate,b.monkeycar_speed \
|
|
|
-// FROM dat_area a ,dat_monkeycar_base_info b ,dat_map c\
|
|
|
-// where a.area_id = b.monkeycar_areaid and a.map_id = c.map_id;";
|
|
|
-// std::string Error;
|
|
|
-// YADB::CDBResultSet DBRes;
|
|
|
-// sDBConnPool.Query(sql,DBRes,Error);
|
|
|
-// if(!Error.empty())
|
|
|
-// log_error("monkeycar area init Error,%s",Error.c_str());
|
|
|
-// int nCount = DBRes.GetRecordCount( Error );
|
|
|
-// if (nCount > 0)
|
|
|
-// {
|
|
|
-// log_info( "init_monkey area. The record count=%d", nCount );
|
|
|
-
|
|
|
-// while ( DBRes.GetNextRecod(Error) )
|
|
|
-// {
|
|
|
-// int area_id = 0;
|
|
|
-// DBRes.GetField( "area_id",area_id, Error );
|
|
|
-
|
|
|
-// int map_id = 0;
|
|
|
-// DBRes.GetField( "map_id",map_id, Error );
|
|
|
-
|
|
|
-// unsigned int area_type_id = 0;
|
|
|
-// DBRes.GetField( "area_type_id",area_type_id, Error );
|
|
|
-
|
|
|
-// int over_count_person = 0;
|
|
|
-// DBRes.GetField( "over_count_person",over_count_person, Error );
|
|
|
-
|
|
|
-// int over_count_vehicle = 0;
|
|
|
-// DBRes.GetField( "over_count_vehicle",over_count_vehicle, Error );
|
|
|
-
|
|
|
-// int over_time_person = 0;
|
|
|
-// DBRes.GetField( "over_time_person",over_time_person, Error );
|
|
|
-
|
|
|
-// int over_time_vehicle = 0;
|
|
|
-// DBRes.GetField( "over_time_vehicle",over_time_vehicle, Error );
|
|
|
-
|
|
|
-// std::string path;
|
|
|
-// DBRes.GetField( "path",path, Error );
|
|
|
-
|
|
|
-// float monkeycar_speed = 0;
|
|
|
-// DBRes.GetField( "monkeycar_speed",monkeycar_speed, Error );
|
|
|
-
|
|
|
-// std::string monkeycar_coor;
|
|
|
-// DBRes.GetField( "monkeycar_coordinate",monkeycar_coor, Error );
|
|
|
-
|
|
|
-// float scale=0;
|
|
|
-// DBRes.GetField( "scale",scale, Error );
|
|
|
-
|
|
|
-
|
|
|
-// log_info("init_area : id:%d,path:%s",area_id, path.c_str());
|
|
|
-
|
|
|
-// std::shared_ptr<db_area> da = std::make_shared<db_area>();
|
|
|
-// da->m_default_speed = monkeycar_speed;
|
|
|
-// da->m_point = init_path(monkeycar_coor);
|
|
|
-
|
|
|
-// std::shared_ptr<area> ap = std::make_shared<monkey_area>(da,area_id,over_count_person,over_time_person,scale,map_id,area_type_id);
|
|
|
+ while ( DBRes.GetNextRecod(Error) )
|
|
|
+ {
|
|
|
+ int area_id = 0;
|
|
|
+ DBRes.GetField( "area_id",area_id, Error );
|
|
|
+
|
|
|
+ int map_id = 0;
|
|
|
+ DBRes.GetField( "map_id",map_id, Error );
|
|
|
+
|
|
|
+ unsigned int area_type_id = 0;
|
|
|
+ DBRes.GetField( "area_type_id",area_type_id, Error );
|
|
|
+
|
|
|
+ int over_count_person = 0;
|
|
|
+ DBRes.GetField( "over_count_person",over_count_person, Error );
|
|
|
+
|
|
|
+ int over_count_vehicle = 0;
|
|
|
+ DBRes.GetField( "over_count_vehicle",over_count_vehicle, Error );
|
|
|
+
|
|
|
+ int over_time_person = 0;
|
|
|
+ DBRes.GetField( "over_time_person",over_time_person, Error );
|
|
|
|
|
|
-// ap->m_bound=init_path(path);
|
|
|
-// for(const auto &p : ap->m_bound)
|
|
|
-// log_info("point:monkey:area_id:%d--x:%.2f,y:%.2f",area_id,p.x,p.y);
|
|
|
-// for(const auto &p : da->m_point)
|
|
|
-// log_info("point:monkey_coor:area_id:%d--x:%.2f,y:%.2f",area_id,p.x,p.y);
|
|
|
+ int over_time_vehicle = 0;
|
|
|
+ DBRes.GetField( "over_time_vehicle",over_time_vehicle, Error );
|
|
|
|
|
|
-// map.insert({area_id,ap});
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// area_list::instance()->add(map);
|
|
|
-//}
|
|
|
+ std::string path;
|
|
|
+ DBRes.GetField( "path",path, Error );
|
|
|
+
|
|
|
+ float monkeycar_speed = 0;
|
|
|
+ DBRes.GetField( "monkeycar_speed",monkeycar_speed, Error );
|
|
|
|
|
|
+ std::string monkeycar_coor;
|
|
|
+ DBRes.GetField( "monkeycar_coordinate",monkeycar_coor, Error );
|
|
|
+
|
|
|
+ float scale=0;
|
|
|
+ DBRes.GetField( "scale",scale, Error );
|
|
|
+
|
|
|
+
|
|
|
+ log_info("init_area : id:%d,path:%s",area_id, path.c_str());
|
|
|
+
|
|
|
+ std::shared_ptr<db_area> da = std::make_shared<db_area>();
|
|
|
+ da->m_default_speed = monkeycar_speed;
|
|
|
+ da->m_point = init_path(monkeycar_coor);
|
|
|
+
|
|
|
+ std::shared_ptr<area> ap = std::make_shared<monkey_area>(da,area_id,over_count_person,over_time_person,scale,map_id,area_type_id);
|
|
|
+
|
|
|
+ ap->m_bound=init_path(path);
|
|
|
+ for(const auto &p : ap->m_bound)
|
|
|
+ log_info("point:monkey:area_id:%d--x:%.2f,y:%.2f",area_id,p.x,p.y);
|
|
|
+ for(const auto &p : da->m_point)
|
|
|
+ log_info("point:monkey_coor:area_id:%d--x:%.2f,y:%.2f",area_id,p.x,p.y);
|
|
|
+
|
|
|
+ map.insert({area_id,ap});
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ area_list::instance()->add(map);
|
|
|
+}
|
|
|
+#endif
|
|
|
void area_list::init_monkeycar_area(int id)
|
|
|
{
|
|
|
std::string sql = "SELECT a.area_id, a.name, a.map_id, a.area_type_id, a.path, c.scale,\
|
|
|
over_count_person, over_count_vehicle, over_time_person, over_time_vehicle,\
|
|
|
over_speed_vehicle, is_attendance ,b.monkeycar_coordinate,b.monkeycar_speed \
|
|
|
FROM dat_area a ,dat_monkeycar_base_info b ,dat_map c\
|
|
|
- where a.area_id = b.monkeycar_areaid and a.map_id = c.map_id";
|
|
|
+ where a.area_id = b.monkeycar_base_info_id and a.map_id = c.map_id";
|
|
|
|
|
|
if(-1 == id)
|
|
|
{
|
|
@@ -274,14 +274,14 @@ void area_list::init_monkeycar_area(int id)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void area_list::init_from_db(int id)
|
|
|
+void area_list::init_from_db(int id/*=-1*/)
|
|
|
{
|
|
|
std::string sql = "SELECT a.area_id, a.name, a.map_id, a.area_type_id, a.path,b.scale, \
|
|
|
over_count_person, over_count_vehicle, over_time_person, over_time_vehicle, \
|
|
|
over_speed_vehicle, is_attendance \
|
|
|
FROM dat_area a,dat_map b\
|
|
|
where a.map_id = b.map_id and area_id not in \
|
|
|
- (select monkeycar_areaid from dat_monkeycar_base_info)";
|
|
|
+ (select monkeycar_base_info_id from dat_monkeycar_base_info)";
|
|
|
|
|
|
if(-1 == id)
|
|
|
{
|
|
@@ -303,7 +303,7 @@ void area_list::init_from_db(int id)
|
|
|
int nCount = DBRes.GetRecordCount( Error );
|
|
|
if (nCount < 1)
|
|
|
{
|
|
|
- log_error("基础数据 增加或修改失败,数据库中找不到: area_id=%d", id);
|
|
|
+ log_error("基础数据 增加或修改失败,数据库中找不到: area_id=%d:%s", id,sql.c_str());
|
|
|
return ;
|
|
|
}
|
|
|
|
|
@@ -393,75 +393,76 @@ void area_list::init_from_db(int id)
|
|
|
log_info( "init_area. The record count=%d\n", nCount );
|
|
|
area_list::instance()->add(map);
|
|
|
|
|
|
- init_monkeycar_area(-1);
|
|
|
+ init_monkeycar_area();
|
|
|
}
|
|
|
}
|
|
|
+#if 0
|
|
|
+void area_list::init_from_db()
|
|
|
+{
|
|
|
+ std::unordered_map<int,std::shared_ptr<area>> map;
|
|
|
+ const char *sql = "SELECT a.area_id, a.name, a.map_id, a.area_type_id, a.path,b.scale, \
|
|
|
+ over_count_person, over_count_vehicle, over_time_person, over_time_vehicle, over_speed_vehicle, is_attendance \
|
|
|
+ FROM dat_area a,dat_map b\
|
|
|
+ where a.map_id = b.map_id and area_id not in (select monkeycar_base_info_id from dat_monkeycar_base_info);";
|
|
|
+ std::string Error;
|
|
|
+ YADB::CDBResultSet DBRes;
|
|
|
+ sDBConnPool.Query(sql,DBRes,Error);
|
|
|
+ if(!Error.empty())
|
|
|
+ log_error("monkeycar area init Error,%s",Error.c_str());
|
|
|
+ int nCount = DBRes.GetRecordCount( Error );
|
|
|
+ if (nCount > 0)
|
|
|
+ {
|
|
|
+ log_info( "init_area. The record count=%d\n", nCount );
|
|
|
|
|
|
-//void area_list::init_from_db()
|
|
|
-//{
|
|
|
-// std::unordered_map<int,std::shared_ptr<area>> map;
|
|
|
-// const char *sql = "SELECT a.area_id, a.name, a.map_id, a.area_type_id, a.path,b.scale, \
|
|
|
-// over_count_person, over_count_vehicle, over_time_person, over_time_vehicle, over_speed_vehicle, is_attendance \
|
|
|
-// FROM dat_area a,dat_map b\
|
|
|
-// where a.map_id = b.map_id and area_id not in (select monkeycar_areaid from dat_monkeycar_base_info);";
|
|
|
-// std::string Error;
|
|
|
-// YADB::CDBResultSet DBRes;
|
|
|
-// sDBConnPool.Query(sql,DBRes,Error);
|
|
|
-// if(!Error.empty())
|
|
|
-// log_error("monkeycar area init Error,%s",Error.c_str());
|
|
|
-// int nCount = DBRes.GetRecordCount( Error );
|
|
|
-// if (nCount > 0)
|
|
|
-// {
|
|
|
-// log_info( "init_area. The record count=%d\n", nCount );
|
|
|
-
|
|
|
-// while ( DBRes.GetNextRecod(Error) )
|
|
|
-// {
|
|
|
-// int area_id = 0;
|
|
|
-// DBRes.GetField( "area_id",area_id, Error );
|
|
|
-
|
|
|
-// int map_id = 0;
|
|
|
-// DBRes.GetField( "map_id",map_id, Error );
|
|
|
-
|
|
|
-// unsigned int area_type_id = 0;
|
|
|
-// DBRes.GetField( "area_type_id",area_type_id, Error );
|
|
|
-
|
|
|
-// int over_count_person = 0;
|
|
|
-// DBRes.GetField( "over_count_person",over_count_person, Error );
|
|
|
-
|
|
|
-// int over_count_vehicle = 0;
|
|
|
-// DBRes.GetField( "over_count_vehicle",over_count_vehicle, Error );
|
|
|
-
|
|
|
-// int over_time_person = 0;
|
|
|
-// DBRes.GetField( "over_time_person",over_time_person, Error );
|
|
|
-
|
|
|
-// int over_time_vehicle = 0;
|
|
|
-// DBRes.GetField( "over_time_vehicle",over_time_vehicle, Error );
|
|
|
-
|
|
|
-// std::string path;
|
|
|
-// DBRes.GetField( "path",path, Error );
|
|
|
-
|
|
|
-// double scale = 0;
|
|
|
-// DBRes.GetField( "scale",scale, Error );
|
|
|
+ while ( DBRes.GetNextRecod(Error) )
|
|
|
+ {
|
|
|
+ int area_id = 0;
|
|
|
+ DBRes.GetField( "area_id",area_id, Error );
|
|
|
+
|
|
|
+ int map_id = 0;
|
|
|
+ DBRes.GetField( "map_id",map_id, Error );
|
|
|
+
|
|
|
+ unsigned int area_type_id = 0;
|
|
|
+ DBRes.GetField( "area_type_id",area_type_id, Error );
|
|
|
+
|
|
|
+ int over_count_person = 0;
|
|
|
+ DBRes.GetField( "over_count_person",over_count_person, Error );
|
|
|
+
|
|
|
+ int over_count_vehicle = 0;
|
|
|
+ DBRes.GetField( "over_count_vehicle",over_count_vehicle, Error );
|
|
|
|
|
|
-// log_info("init_area : id:%d,path:%s",area_id, path.c_str());
|
|
|
-
|
|
|
-// std::shared_ptr<area> ap = std::make_shared<area>(area_id,over_count_person,over_time_person,scale,map_id,area_type_id);
|
|
|
+ int over_time_person = 0;
|
|
|
+ DBRes.GetField( "over_time_person",over_time_person, Error );
|
|
|
|
|
|
-// ap->m_limit_vehicle_second = over_time_vehicle;
|
|
|
-// ap->m_limit_vehicle_count = over_count_vehicle;
|
|
|
+ int over_time_vehicle = 0;
|
|
|
+ DBRes.GetField( "over_time_vehicle",over_time_vehicle, Error );
|
|
|
|
|
|
-// ap->m_bound=init_path(path);
|
|
|
-// for(const auto &p : ap->m_bound)
|
|
|
-// log_info("point:area_id:%d--x:%.2f,y:%.2f",area_id,p.x,p.y);
|
|
|
+ std::string path;
|
|
|
+ DBRes.GetField( "path",path, Error );
|
|
|
+
|
|
|
+ double scale = 0;
|
|
|
+ DBRes.GetField( "scale",scale, Error );
|
|
|
|
|
|
-// map.insert({area_id,ap});
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// area_list::instance()->add(map);
|
|
|
+ log_info("init_area : id:%d,path:%s",area_id, path.c_str());
|
|
|
+
|
|
|
+ std::shared_ptr<area> ap = std::make_shared<area>(area_id,over_count_person,over_time_person,scale,map_id,area_type_id);
|
|
|
|
|
|
-// init_monkeycar_area();
|
|
|
-//}
|
|
|
+ ap->m_limit_vehicle_second = over_time_vehicle;
|
|
|
+ ap->m_limit_vehicle_count = over_count_vehicle;
|
|
|
+
|
|
|
+ ap->m_bound=init_path(path);
|
|
|
+ for(const auto &p : ap->m_bound)
|
|
|
+ log_info("point:area_id:%d--x:%.2f,y:%.2f",area_id,p.x,p.y);
|
|
|
+
|
|
|
+ map.insert({area_id,ap});
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ area_list::instance()->add(map);
|
|
|
+
|
|
|
+ init_monkeycar_area();
|
|
|
+}
|
|
|
+#endif
|
|
|
std::vector<point> area_list::init_path(std::string &str)
|
|
|
{
|
|
|
if(str.empty())
|