xieb
2023-06-14 eda40fb5b350ac23a4f2346816c76e88954b025c
乡镇geoJson数据处理
6 files added
221 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/geoJson/controller/TownsGeoJsonController.java 121 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/geoJson/entity/TownsGeoJson.java 52 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/geoJson/mapper/TownsGeoJsonMapper.java 13 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/geoJson/mapper/TownsGeoJsonMapper.xml 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/geoJson/service/ITownsGeoJsonService.java 13 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/geoJson/service/impl/TownsGeoJsonServiceImpl.java 17 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/geoJson/controller/TownsGeoJsonController.java
New file
@@ -0,0 +1,121 @@
package cn.gistack.sm.geoJson.controller;
import cn.gistack.sm.geoJson.entity.TownsGeoJson;
import cn.gistack.sm.geoJson.service.ITownsGeoJsonService;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION:
 * @USER: aix
 * @DATE: 2023/6/13 19:50
 */
@Slf4j
@Api(tags="乡镇geoJson数据")
@RestController
@RequestMapping("/town/geoJson")
@AllArgsConstructor
public class TownsGeoJsonController extends BladeController {
    private ITownsGeoJsonService townsGeoJsonService;
    @GetMapping(value = "/findGeoJsonByCode")
    public R findGeoJsonByCode(@ApiIgnore @RequestParam Map<String, Object> obj) {
        QueryWrapper<TownsGeoJson> queryWrapper = new QueryWrapper<>();
        if (null == obj.get("level") || null == obj.get("code"))
            return R.fail("参数不正确");
        String level = obj.get("level").toString();
        String code = obj.get("code").toString();
        Map<String, Object> ret = new HashMap<>();
        ret.put("type", "FeatureCollection");
        if (level.equals("1")) {
            ret.put("features", townsGeoJsonService.list());
        } else if (level.equals("2")) {
            code = code.substring(0,4);
            ret.put("features", townsGeoJsonService.list(queryWrapper.lambda().likeRight(TownsGeoJson::getCityId,code)));
        } else if (level.equals("3")) {
            code = code.substring(0,6);
            ret.put("features", townsGeoJsonService.list(queryWrapper.lambda().likeRight(TownsGeoJson::getCountyId,code)));
        } else {
            ret.put("features", townsGeoJsonService.list(queryWrapper.lambda().eq(TownsGeoJson::getAreaId,code)));
        }
        return R.data(ret);
    }
    /**
     * 本地初始化执行一次就可以
     * @return
     */
//    @GetMapping(value = "/initData")
    public R queryPageList() {
        initData();
        return R.data(200, null, "初始化成功");
    }
    private void initData() {
        //解析JSON文件的内容
        try {
            // 流读
            File file=new File("D:\\汇图信息\\湖北水利研究院\\开发文档\\geojson\\towns.json");
            FileReader fr=new FileReader(file);
            char[] cbuf=new char[5];
            int len;
            StringBuffer sb = new StringBuffer();
            while((len=fr.read(cbuf))!=-1){
                String str=new String(cbuf,0,len);
                sb.append(str);
            }
            // 关闭流
            fr.close();
            // 开始操作json
            JSONObject obj = JSONObject.parseObject(sb.toString());
//            //删除除features以外其它对象,方便下面所需的geojson字符串
            obj.remove("type");
            obj.remove("name");
            obj.remove("crs");
            JSONArray array = obj.getJSONArray("features");
            for (int i = 0; i < array.size(); i++) {
                JSONObject feature = array.getJSONObject(i);
                TownsGeoJson townsGeoJson = new TownsGeoJson();
                townsGeoJson.setName(feature.getJSONObject("properties").get("NAME").toString());
                townsGeoJson.setAreaId(feature.getJSONObject("properties").get("area_id").toString());
                townsGeoJson.setCityId(feature.getJSONObject("properties").get("city_id").toString());
                townsGeoJson.setCityName(feature.getJSONObject("properties").get("city_nm").toString());
                townsGeoJson.setCountyId(feature.getJSONObject("properties").get("county_id").toString());
                townsGeoJson.setCountyName(feature.getJSONObject("properties").get("county_nm").toString());
                townsGeoJson.setGeometry(feature.getJSONObject("geometry"));
                townsGeoJson.setProperties(feature.getJSONObject("properties"));
                townsGeoJsonService.save(townsGeoJson);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/geoJson/entity/TownsGeoJson.java
New file
@@ -0,0 +1,52 @@
package cn.gistack.sm.geoJson.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springblade.core.mp.base.BaseEntity;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION: 乡镇geoJson对象
 * @USER: aix
 * @DATE: 2023/6/13 18:59
 */
@Data
@TableName(value = "sm_towns_geo_json",autoResultMap = true)
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="乡镇geoJson对象", description="乡镇geoJson对象")
public class TownsGeoJson extends BaseEntity {
    @ApiModelProperty("市")
    private String cityId;
    @ApiModelProperty("市名称")
    private String cityName;
    @ApiModelProperty("区县")
    private String countyId;
    @ApiModelProperty("区县名称")
    private String countyName;
    @ApiModelProperty("乡")
    private String areaId;
    @ApiModelProperty("乡名称")
    private String name;
    private String type = "Feature";
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private Object geometry;
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private Object properties;
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/geoJson/mapper/TownsGeoJsonMapper.java
New file
@@ -0,0 +1,13 @@
package cn.gistack.sm.geoJson.mapper;
import cn.gistack.sm.geoJson.entity.TownsGeoJson;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION:
 * @USER: aix
 * @DATE: 2023/6/13 19:14
 */
public interface TownsGeoJsonMapper extends BaseMapper<TownsGeoJson> {
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/geoJson/mapper/TownsGeoJsonMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.gistack.sm.geoJson.mapper.TownsGeoJsonMapper">
    <!--namespace根据自己需要创建的的mapper的路径和名称填写-->
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/geoJson/service/ITownsGeoJsonService.java
New file
@@ -0,0 +1,13 @@
package cn.gistack.sm.geoJson.service;
import cn.gistack.sm.geoJson.entity.TownsGeoJson;
import org.springblade.core.mp.base.BaseService;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION:
 * @USER: aix
 * @DATE: 2023/6/13 19:16
 */
public interface ITownsGeoJsonService extends BaseService<TownsGeoJson> {
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/geoJson/service/impl/TownsGeoJsonServiceImpl.java
New file
@@ -0,0 +1,17 @@
package cn.gistack.sm.geoJson.service.impl;
import cn.gistack.sm.geoJson.entity.TownsGeoJson;
import cn.gistack.sm.geoJson.mapper.TownsGeoJsonMapper;
import cn.gistack.sm.geoJson.service.ITownsGeoJsonService;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.stereotype.Service;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION:
 * @USER: aix
 * @DATE: 2023/6/13 19:16
 */
@Service
public class TownsGeoJsonServiceImpl extends BaseServiceImpl<TownsGeoJsonMapper, TownsGeoJson> implements ITownsGeoJsonService {
}