No.8 计算航道划分+计算周边航道划分+查询周边船舶
项目开发内容:计算船舶经纬度坐标的航道划分,并得到周边航道划分,查询周边船舶。
一、计算船舶经纬度坐标的航道划分
新建工具类ChannelDivisionIDUtil ,建立静态全局变量 static String[][] arrayCD; (存放读到excel的航道划分表)
方法有:读取excel放入数组readExcelInputArray、计算航道划分getChannelDivisionID、计算周边航道划分getNearbyChannelDivisionID
1.读取excel放入数组readExcelInputArray
见上一篇文章,
https://blog.csdn.net/kingsirvince/article/details/98501675
在主程序application中调用,得到全局变量arrayCD,(存放读到excel的航道划分表)
2.计算航道划分getChannelDivisionID
这里可以调用,下一步,读进来经纬度,调用计算,存在ship_upload中,
/**
* 计算经纬度,得到航道划分ID
* ChannelDivision 简写CD,arrayChannelDivision简写arrayCD
*
* @param coordinate
* @return channelDivisionID
*/
public static String getChannelDivisionID(Coordinate coordinate) {
String channelDivisionID = "";
BigDecimal longitude = coordinate.getLongitude();
BigDecimal latitude = coordinate.getLatitude();
Double longitudeDouble = longitude.doubleValue();//bigdecimal转double
Double latitudeDouble = latitude.doubleValue();
System.out.println( "******************开始计算航道划分***********************************************");
for (int j = 0; j < 255; j++) {
Double longitude_max, longitude_min, latitude_max, latitude_min;
longitude_max = Double.valueOf(arrayCD[1][j]);
longitude_min = Double.valueOf(arrayCD[2][j]);
latitude_max = Double.valueOf(arrayCD[3][j]);
latitude_min = Double.valueOf(arrayCD[4][j]);
if (!(longitude_min > longitudeDouble || longitudeDouble > longitude_max)
&& !(latitude_min > latitudeDouble || latitudeDouble > latitude_max)) {
channelDivisionID = arrayCD[0][j];
}
}
if (channelDivisionID.isEmpty()){
channelDivisionID = "NoMatch";
}
return channelDivisionID