mysql的linestring、point從jdbc讀入爲byte[] 類型,下面的java代碼實現逐次讀取經緯度數據,返回double數組:
public static double[] bytestoPoints(byte[] arr){
if(arr==null){
return null;
}
if(arr.length==25){
return bytesToOnePoint(arr);
}
return bytesToMutiPoints(arr);
}
private static double bytes2Double(byte[] arr,int start) {
long value = 0;
for (int i = 0; i < 8; i++) {
value |= ((long) (arr[start+i] & 0xff)) << (8 * i);
}
return Double.longBitsToDouble(value);
}
private static double[] bytesToOnePoint(byte[] arr){
return new double[]{bytes2Double(arr,9),bytes2Double(arr,17)};
}
private static double[] bytesToMutiPoints(byte[] arr){
int len=(arr.length-13)/8;
double[] result=new double[len];
for(int i=0;i<len;++i){
result[i]=bytes2Double(arr,13+i*8);
}
return result;
}