//--------------------------------------------------------- size_t CSG_PRQuadTree::_Select_Nearest_Points(CSG_Array &Selection, double x, double y, size_t maxPoints, double Radius, int iQuadrant) const { if( Selection.Get_Value_Size() != sizeof(TLeaf) ) { Selection.Create(sizeof(TLeaf), 0, SG_ARRAY_GROWTH_3); } else { Selection.Set_Array(0, false); } if( m_pRoot ) { double Distance; if( maxPoints < 1 ) { maxPoints = m_nPoints; } if( iQuadrant != 4 ) { _Select_Nearest_Points(Selection, m_pRoot, x, y, Distance = 0.0, Radius, maxPoints, iQuadrant); } else // if( iQuadrant == 4 ) // quadrant-wise search { for(iQuadrant=0; iQuadrant<4; iQuadrant++) { _Select_Nearest_Points(Selection, m_pRoot, x, y, Distance = 0.0, Radius, maxPoints, iQuadrant); } } } return( Selection.Get_Size() ); }
//--------------------------------------------------------- bool CPresence_Prediction::Get_Features(CSG_Array &Features) { CSG_Parameter_Grid_List *pNum = Parameters("FEATURES_NUM")->asGridList(); CSG_Parameter_Grid_List *pCat = Parameters("FEATURES_CAT")->asGridList(); m_Features = (TFeature *)Features.Create(sizeof(TFeature), m_nFeatures = pNum->Get_Grid_Count() + pCat->Get_Grid_Count()); for(int i=0; i<m_nFeatures; i++) { if( i < pNum->Get_Grid_Count() ) { m_Features[i].bNumeric = true; m_Features[i].pGrid = pNum->Get_Grid(i); } else { m_Features[i].bNumeric = false; m_Features[i].pGrid = pCat->Get_Grid(i - pNum->Get_Grid_Count()); } CSG_String Name(m_Features[i].pGrid->Get_Name()); strncpy(m_Features[i].Name, Name.b_str(), 255); m_Features[i].Name[255] = '\0'; } return( m_nFeatures > 0 ); }
//--------------------------------------------------------- void CSG_Network::_On_Construction(void) { m_Nodes.Create(sizeof(CSG_Network_Node **), 0, SG_ARRAY_GROWTH_1); m_Edges.Create(SHAPE_TYPE_Line , SG_T("EDGES")); m_Edges.Add_Field(SG_T("ID") , SG_DATATYPE_Int); m_Edges.Add_Field(SG_T("NODE_A") , SG_DATATYPE_Int); m_Edges.Add_Field(SG_T("NODE_B") , SG_DATATYPE_Int); m_Edges.Add_Field(SG_T("SHAPE_TYPE"), SG_DATATYPE_Int); m_Edges.Add_Field(SG_T("PROCESSED") , SG_DATATYPE_Int); }