既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
@Slf4j
public class SortResource {
private String tableName;
private JdbcTemplate jdbcTemplate;
public SortResource(String tableName,JdbcTemplate jdbcTemplate){
this.tableName=tableName;
this.jdbcTemplate=jdbcTemplate;
}
public void process(Map<String, Object> map,List<Map<String, Object>> gridList){
log.info(“入库表:”+tableName);
double x=Double.parseDouble(map.get(“经度”).toString());
double y=Double.parseDouble(map.get(“纬度”).toString());
for(Map<String, Object> gridMap:gridList){
String gridId=gridMap.get(“ID”).toString();
List<List> lists=lonLatInfoHandle(gridMap.get(“经纬度信息”).toString());
//log.info(“网格ID”+gridId);
if(check(lists,x,y)){
insert(map,gridId);
break;
}
}
}
/**
-
判断点是否在区域内
-
@param lists
-
@param x
-
@param y
-
@return
*/
public boolean check(List<List> lists,double x,double y){
if(lists.isEmpty()){
return false;
}
// 多多边型,有一个为true 就可以
for(List list:lists){
if(checkHbracketsComma(list,x,y)){
return true;
}
}
return false;
}
/**
-
检测镂空的
-
@param list
-
@return
*/
public boolean checkHbracketsComma(List list,double x,double y){
RegionExtern regExt = new RegionExtern(list.get(0));
boolean flag=regExt.checkPointInRegion(x,y);
if(list.size()>1 && flag){
for(int i=1;i<list.size();i++){
RegionExtern regExtTemp = new RegionExtern(list.get(i));
if(regExt.checkPointInRegion(x,y)){
//如果存在镂空的区域内,则返回false;
flag=false;
}
}
}
return flag;
}
/**
-
经纬度信息范围处理
-
@param lonLatInfo
*/
public static List<List> lonLatInfoHandle(String lonLatInfo){
List<List> lists=new ArrayList<>();
if(lonLatInfo==null || lonLatInfo.isEmpty()){
return lists;
}
//多多边型
if(lonLatInfo.contains(ConstantPool.SEPARATORRIGHTRIGHTBRACKETSCOMMA)){
String[] arr=lonLatInfo.split(“\)\),”);
for(int i=0;i<arr.length;i++){
lists.add(rightHbracketsComma(arr[i]));
}
}else{
List list=rightHbracketsComma(lonLatInfo);
lists.add(list);
}
return lists;
}
/**
-
镂空或者多边形
-
@param lonLatInfo
-
@return
*/
public static List rightHbracketsComma(String lonLatInfo){
List list=new ArrayList<>();
if(lonLatInfo.contains(ConstantPool.SEPARATORRIGHTBRACKETSCOMMA)){
String[] arr=lonLatInfo.split(“\),”);
for(int i=0;i<arr.length;i++){
String temp=arr[i].replace(ConstantPool.MULTIPOLYGON,ConstantPool.SEPARATORNULL).replace(ConstantPool.POLYGON,ConstantPool.SEPARATORNULL).trim();
arr[i]=temp.replace(ConstantPool.SEPARATORLEFTBRACKETS,ConstantPool.SEPARATORNULL).replace(ConstantPool.SEPARATORRIGHTBRACKETS,ConstantPool.SEPARATORNULL).replace(ConstantPool.SEPARATORCOMMA,ConstantPool.SEPARATORBranch).replace(ConstantPool.SEPARATORSPACE,ConstantPool.SEPARATORCOMMA);
}
list= Arrays.asList(arr);
}else {
String temp=lonLatInfo.replace(ConstantPool.MULTIPOLYGON,ConstantPool.SEPARATORNULL).replace(ConstantPool.POLYGON,ConstantPool.SEPARATORNULL).trim();
list.add(temp.replace(ConstantPool.SEPARATORLEFTBRACKETS,ConstantPool.SEPARATORNULL).replace(ConstantPool.SEPARATORRIGHTBRACKETS,ConstantPool.SEPARATORNULL).replace(ConstantPool.SEPARATORCOMMA,ConstantPool.SEPARATORBranch).replace(ConstantPool.SEPARATORSPACE,ConstantPool.SEPARATORCOMMA));
}
return list;
}
/**
-
入库
-
@param map
-
@param gridId
*/
public void insert(Map<String, Object> map,String gridId){
String sql=String.format(“insert [%s] select %s,%s,‘%s’,‘%s’”,tableName,map.get(“流水号”).toString(),gridId,map.get(“名称”).toString(),map.get(“详细地址”).toString());
log.info(sql);
jdbcTemplate.execute(sql);
}
===============================================================================
/**
-
将一个list均分成n个list,主要通过偏移量来实现的
-
@param source
-
@return
*/
public static List<List> averageAssign(List source,int n){
List<List> result=new ArrayList<List>();
int remaider=source.size()%n; //(先计算出余数)
int number=source.size()/n; //然后是商
int offset=0;//偏移量
for(int i=0;i<n;i++){
List value=null;
if(remaider>0){
value=source.subList(i*number+offset, (i+1)*number+offset+1);
remaider–;
offset++;
}else{
value=source.subList(i*number+offset, (i+1)*number+offset);
}
result.add(value);
}
return result;
}
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
存中…(img-YTlBX0ze-1715582972900)]
[外链图片转存中…(img-aJC5FnIj-1715582972901)]
[外链图片转存中…(img-w2hfh3GJ-1715582972901)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新