public ReadFile.POI[] SearchQuiry(ReadFile.Crime[] crimedata, ReadFile.POI[] pointinterest, double threshold) { Parallel.For(0, pointinterest.Length, i => // for (int i = 0; i < pointinterest.Length; i++) { string[] array = new string[crimedata.Length]; List <string> array1 = new List <string>(); pointinterest[i].crimeinfor = new List <CrimeCount>(); pointinterest[i].number = 0; Parallel.For(0, crimedata.Length, j => { double distance = calculatedistance(pointinterest[i].X, pointinterest[i].Y, crimedata[j].X, crimedata[j].Y); if (distance < threshold) { if (contain(array1, crimedata[j].type) == 0) { array1.Add(crimedata[j].type); } array[j] = crimedata[j].type; pointinterest[i].number++; } }); //Parallel.For(0, array1.Count, k => for (int k = 0; k < array1.Count; k++) { CrimeCount T = new CrimeCount(); T.type = array1[k]; T.number = calculate(array1[k], array); pointinterest[i].crimeinfor.Add(T); } //); } ); return(pointinterest); }
public ReadFile.POI[] Countpoicrime(ReadFile.POI[] pointinterest) { List <string> type_poi = new List <string>(); for (int i = 0; i < pointinterest.Length; i++) { if (contain(type_poi, pointinterest[i].type) == 0) { type_poi.Add(pointinterest[i].type); } } ReadFile.POI[] countpoicrime = new ReadFile.POI[type_poi.Count]; int[] num_poi = new int[type_poi.Count]; for (int j = 0; j < countpoicrime.Length; j++) { countpoicrime[j].type = type_poi[j]; countpoicrime[j].crimeinfor = new List <CrimeCount>(); num_poi[j] = 0; } for (int i = 0; i < pointinterest.Length; i++) { /* for(int ) * for(int k=0;k<pointinterest[i].crimeinfor.Count;k++) * { * for(int j=0;) * if(((crimecount)pointinterest[i].crimeinfor[j]).type==countpoicrime[]) * }*/ for (int j = 0; j < countpoicrime.Length; j++) { // countpoicrime[j].type=(string)type_poi[j]; if (pointinterest[i].type == countpoicrime[j].type) { num_poi[j] = num_poi[j] + 1; countpoicrime[j].number = countpoicrime[j].number + pointinterest[i].number; if (countpoicrime[j].crimeinfor.Count == 0) { // crimecount P = new crimecount(); // P.type = ((crimecount)pointinterest[i].crimeinfor[k]).type; // P.number = ((crimecount)pointinterest[i].crimeinfor[k]).number; countpoicrime[j].crimeinfor.Add(pointinterest[i].crimeinfor[0]); } for (int k = 1; k < pointinterest[i].crimeinfor.Count; k++) { int ss = 0; for (int m = 0; m < countpoicrime[j].crimeinfor.Count; m++) { if (pointinterest[i].crimeinfor[k].type == countpoicrime[j].crimeinfor[m].type) { ss = 1; CrimeCount T = new CrimeCount(); T.type = countpoicrime[j].crimeinfor[m].type; T.number = countpoicrime[j].crimeinfor[m].number + pointinterest[i].crimeinfor[k].number; countpoicrime[j].crimeinfor[m] = T; break; } } if (ss == 0) { countpoicrime[j].crimeinfor.Add(pointinterest[i].crimeinfor[k]); } } } } } for (int i = 0; i < type_poi.Count; i++) { countpoicrime[i].number = countpoicrime[i].number / num_poi[i]; for (int j = 0; j < countpoicrime[i].crimeinfor.Count; j++) { CrimeCount N = new CrimeCount(); N.type = countpoicrime[i].crimeinfor[j].type; N.number = countpoicrime[i].crimeinfor[j].number / num_poi[i]; countpoicrime[i].crimeinfor[j] = N; } } return(countpoicrime); }