. else 32. { 33. if (coords[k] < ymin) ymin = coords[k]; 34. if (coords[k] > ymax) ymax = coords[k]; 35. } 36. } 37. //将最大最小值写入Collection 38. var tmpQuery = Query.EQ("_id", id); 39. var tmpUpdate = MongoDB.Driver.Builders.Update.Set("xmax", xmax); 40. var tmpres = col02c.Update(tmpQuery, tmpUpdate); 41. tmpUpdate = MongoDB.Driver.Builders.Update.Set("xmin", xmin); 42. tmpres = col02c.Update(tmpQuery, tmpUpdate); 43. tmpUpdate = MongoDB.Driver.Builders.Update.Set("ymax", ymax); 44. tmpres = col02c.Update(tmpQuery, tmpUpdate); 45. tmpUpdate = MongoDB.Driver.Builders.Update.Set("ymin", ymin); 46. tmpres = col02c.Update(tmpQuery, tmpUpdate); 47. } 48. } //获取Collection MongoDatabase db = server.GetDatabase("aa"); MongoCollection colsheng= db.GetCollection("sheng"); //查询所有记录 var cur = colsheng.FindAllAs(); long totalCount = cur.Count(); //遍历所有记录 for (int i = 0; i <= totalCount/1000; i++) { if (i * 1000 >= totalCount) continue; int skip = i * 1000; var cur2 = cur.Clone().SetSkip(skip).SetLimit(1000); var lst = cur2.ToArray(); for (int j = 0; j < lst.Count(); j++) { //获取一条记录对应的BsonDocument BsonDocument doc = lst[j]; var id = doc["_id"]; //该记录对应的ID BsonDocument geo = doc["geo"].ToBsonDocument(); string geostr = geo[1].ToString(); //该记录对应空间信息的Json字符串 List coords = GetCoordLstFromString(geostr); //解析Json串,获得所有点的坐标(这里子函数就省略了) double xmin = 181, xmax = -181, ymin = 91, ymax = -91; //四个边界值,由于图层为经纬度,所以初值设为这些值 //计算最大最小值 for (int k = 0; k < coords.Count; k++) { if (k % 2 == 0) { if (coords[k] < xmin) xmin = coords[k]; if (coords[k] > xmax) xmax = coords[k]; } else { if (coords[k] < ymin) ymin = coords[k]; if (coords[k] > ymax) ymax = coords[k]; } } //将最大最小值写入Collection var tmpQuery = Query.EQ("_id", id); var tmpUpdate = MongoDB.Driver.Builders.Update.Set("xmax", xmax); var tmpres = col02c.Update(tmpQuery, tmpUpdate); tmpUpdate = MongoDB.Driver.Builders.Update.Set("xmin", xmin); tmpres = col02c.Update(tmpQuery, tmpUpdate); tmpUpdate = MongoDB.Driver.Builders.Update.Set("ymax", ymax); |