目录
1、插入数据
/**
* 保存图片
*
* @param db 数据库对象
* @param imageId 图片ID 使用UUID
* @param bitmap 位图
* @param angle 图片的旋转角度
* @param width 图片的宽度
* @param height 图片的高度
* @param dpiWidth 设备的分辨率宽度
* @param dpiHeight 设备的分辨率高度
* @param geoMap 地图提供者
* @param longitude 经度
* @param latitude 纬度
* @param altitude 海拔
* @param createdBy 创建者
* @param creationDate 创建时间
* @param lastUpdateBy 最近更新者
* @param lastUpdateDate 最近更新时间
* @param street 图片的街道信息
* @param address 图片的详细地址信息
*/
private static void insertImage(SQLiteDatabase db, String imageId, Bitmap bitmap,
double angle, double width, double height, double dpiWidth,
double dpiHeight, String geoMap, double longitude, double latitude,
double altitude, int createdBy, long creationDate, int lastUpdateBy,
long lastUpdateDate, String street, String address) {
ContentValues contentValues = new ContentValues();
contentValues.put(Constant.IMAGE_ID, imageId);
contentValues.put(Constant.IMAGE, BitmapUtils.bitmapToBytes(bitmap));//图片转为二进制
contentValues.put(Constant.ANGLE, angle);
contentValues.put(Constant.WIDTH, width);
contentValues.put(Constant.HEIGHT, height);
contentValues.put(Constant.DPI_WIDTH, dpiWidth);
contentValues.put(Constant.DPI_HEIGHT, dpiHeight);
contentValues.put(Constant.GEO_MAP_INFO, geoMap);
contentValues.put(Constant.LONGITUDE, longitude);
contentValues.put(Constant.LATITUDE, latitude);
contentValues.put(Constant.ALTITUDE, altitude);
contentValues.put(Constant.CREATED_BY, createdBy);
contentValues.put(Constant.CREATION_DATE, creationDate);
contentValues.put(Constant.LAST_UPDATED_BY, lastUpdateBy);
contentValues.put(Constant.LAST_UPDATED_DATE, lastUpdateDate);
contentValues.put(Constant.STREET, street);
contentValues.put(Constant.ADDRESS, address);
contentValues.put(Constant.IS_UPLOADED, 0);
contentValues.put(Constant.CAPTURE_TIME, creationDate);
// LogUtils.e("image: " + BitmapUtils.bitmapToBytes(context, bitmap));
db.insert(Constant.TABLE_RDD_IMAGES, null, contentValues);
}
2、删除数据
/**
* 从表 rdd_images 中根据 imageId 删除数据
*/
public static void deleteFromRddImage(SQLiteDatabase db, String imageId) {
String delSql = "DELETE FROM " + Constant.TABLE_RDD_IMAGES +
" WHERE " + Constant.IMAGE_ID + " = \"" + imageId + "\"";
db.execSQL(delSql);
LogUtils.e("deleteFromRddImage");
}
3、查询数据的个数
/**
* 根据 imageId 从表 rdd_image_damages 查询出信息 的个数
*
* @param db 数据库对象
* @param imageId imageId
* @return
*/
public static int queryGetCount(SQLiteDatabase db, String imageId) {
// String sql = "SELECT COUNT(image_id) FROM rdd_image_damages WHERE image_id = \"imageId\" ";
String sql = "SELECT COUNT(" + Constant.IMAGE_ID + ") " +
"FROM " + Constant.TABLE_RDD_IMAGE_DAMAGES +
" WHERE " + Constant.IMAGE_ID + " = \"" + imageId + "\"";
Cursor cursor = db.rawQuery(sql, null);
cursor.moveToFirst();
int count = cursor.getInt(0);
cursor.close();
LogUtils.e("count:" + count);
return count;
}
4、查询 5公里矩形范围内的病害信息的经纬度
/**
* 根据地图当前中心点的经纬度 查询 5公里矩形范围内的病害信息的经纬度
*
* @param db 数据库对象
* @param longitude 经度
* @param latitude 纬度
*/
public static List<LatLng> queryLonLatInCertainArea(SQLiteDatabase db,
double longitude, double latitude) {
List<LatLng> list = new ArrayList<>();
double longitude1 = longitude + DistanceUtil.oneKM2Lon * 5;
double longitude2 = longitude - DistanceUtil.oneKM2Lon * 5;
double latitude1 = latitude + DistanceUtil.oneKM2Lat(latitude) * 5;
double latitude2 = latitude - DistanceUtil.oneKM2Lat(latitude) * 5;
String sql = "SELECT " + Constant.LONGITUDE + " , " + Constant.LATITUDE +
" FROM " + Constant.TABLE_RDD_IMAGES +
" WHERE " + Constant.LONGITUDE + " BETWEEN " + longitude2 + " AND " + longitude1 +
" AND " + Constant.LATITUDE + " BETWEEN " + latitude1 + " AND " + latitude2;
Cursor cursor = db.rawQuery(sql, null);
while (cursor.moveToNext()) {
double longitudeReturn = cursor.getDouble(cursor.getColumnIndex(Constant.LONGITUDE));
double latitudeReturn = cursor.getDouble(cursor.getColumnIndex(Constant.LATITUDE));
LatLng bean = new LatLng(latitudeReturn, longitudeReturn);
list.add(bean);
}
return list;
}
5、查询并返回一个数据列表
/**
* 从本地数据库查询十条未上传的数据,放到一个列表中
*
* @param db 数据库对象
* @return list
*/
public static ArrayList<CaptureImage> queryRddImageList(SQLiteDatabase db) {
String sql = "SELECT " + Constant.IMAGE_ID + " , " + Constant.IMAGE + " , " +
Constant.ANGLE + " , " + Constant.WIDTH + " , " + Constant.HEIGHT + " , " +
Constant.DPI_WIDTH + " , " + Constant.DPI_HEIGHT + " , " + Constant.GEO_MAP_INFO + " , " +
Constant.LONGITUDE + " , " + Constant.LATITUDE + " , " + Constant.STREET + " , " +
Constant.ADDRESS + " , " + Constant.ALTITUDE + " , " + Constant.CAPTURE_TIME +
" FROM " + Constant.TABLE_RDD_IMAGES +
" WHERE " + Constant.IS_UPLOADED + " = 0 " +
" LIMIT 10";
Cursor cursor = db.rawQuery(sql, null);
ArrayList<CaptureImage> list = new ArrayList<>();
while (cursor.moveToNext()) {
String imageId = cursor.getString(cursor.getColumnIndex(Constant.IMAGE_ID));
byte[] image = cursor.getBlob(cursor.getColumnIndex(Constant.IMAGE));
double angle = cursor.getDouble(cursor.getColumnIndex(Constant.ANGLE));
double width = cursor.getDouble(cursor.getColumnIndex(Constant.WIDTH));
double height = cursor.getDouble(cursor.getColumnIndex(Constant.HEIGHT));
double dpiWidth = cursor.getDouble(cursor.getColumnIndex(Constant.DPI_WIDTH));
double dpiHeight = cursor.getDouble(cursor.getColumnIndex(Constant.DPI_HEIGHT));
String geoMapInfo = cursor.getString(cursor.getColumnIndex(Constant.GEO_MAP_INFO));
double longitude = cursor.getDouble(cursor.getColumnIndex(Constant.LONGITUDE));
double latitude = cursor.getDouble(cursor.getColumnIndex(Constant.LATITUDE));
double altitude = cursor.getDouble(cursor.getColumnIndex(Constant.ALTITUDE));
String address = cursor.getString(cursor.getColumnIndex(Constant.ADDRESS));
String street = cursor.getString(cursor.getColumnIndex(Constant.STREET));
long captureTime = cursor.getLong(cursor.getColumnIndex(Constant.CAPTURE_TIME));
String imageDataBase64 = BitmapUtils.byteArrayToBase64(image);
CaptureImage captureImage = new CaptureImage();
captureImage.setImageId(imageId);
captureImage.setImage(imageDataBase64);
captureImage.setAngle(angle);
captureImage.setWidth(width);
captureImage.setHeight(height);
captureImage.setDpiWidth(dpiWidth);
captureImage.setDpiHeight(dpiHeight);
captureImage.setGeoMapInfo(geoMapInfo);
captureImage.setLongitude(longitude);
captureImage.setLatitude(latitude);
captureImage.setAltitude(altitude);
captureImage.setStreet(street);
captureImage.setAddress(address);
captureImage.setCaptureTime(String.valueOf(captureTime));
list.add(captureImage);
// LogUtils.d(rddImage.toString());
LogUtils.d(list.size() + "");
}
cursor.close();
return list;
}