1.介绍

        我已将相关依赖包上传至CSDN资源平台,标题为「2025多边形三角化工具库推荐:支持带孔洞多边形」。所有代码均由本人独立开发完成,因此设置了少量下载费用。如有需要,欢迎前往下载使用。

2.使用方式

        将依赖包下载完成后,解压至本地Maven仓库目录中,具体操作步骤如下图所示,

图 1 解压依赖

        接着要在你的项目中引入。大家都是做开发的,废话不多说了,直接上图,

图 2 引入依赖

        我的包版本是2.2.2,注意不要引错了哦!!!

3.函数说明

public static void convert(String geoJsonPath, String stlPath , String srid , Integer scaling) throws IOException {

        ObjectMapper mapper = new ObjectMapper();
        FeatureCollection featureCollection = mapper.readValue(new File(geoJsonPath), FeatureCollection.class);
        processFeatureCollection(featureCollection, stlPath , srid , scaling);
    }


public static void convert(JSONObject geoJsonObj, String stlPath , String srid , Integer scaling) throws IOException {

        // Convert JSONObject to FeatureCollection
        ObjectMapper mapper = new ObjectMapper();
        FeatureCollection featureCollection = mapper.readValue(geoJsonObj.toString(), FeatureCollection.class);
        processFeatureCollection(featureCollection, stlPath , srid , scaling);
    }
  1. GeoJson输入源
    第一个参数支持两种输入方式:

    • 可直接传入GeoJson对象
    • 可传入GeoJson文件的绝对路径,系统将自动读取文件内容
  2. 输出路径
    第二个参数指定生成的STL文件存储位置,需提供绝对路径

  3. 坐标格式(可选)
    第三个参数控制STL文件的坐标输出格式:

    • 默认使用"相对坐标"(相对于模型中心点)
    • 可指定"epsg:3857"坐标系
    • 传入null时将采用默认设置
  4. 缩放比例(可选)
    第四个参数仅在第三个参数为null时生效:

    • 默认值1表示原始尺寸
    • 传入数值将实现等比例缩放
    • 传0或省略时按默认值处理

4.使用示例

直接上代码,

public RespBase createSTL(ReqCreateSTLVo reqCreateSTLVo) {

        JSONObject result = new JSONObject();

        try{

            //todo 获取当前时间
            long time = new Date().getTime();
            //todo 生成文件名
            String fileName = time + ".stl";
            //todo 生成文件路径
            String filePath = Paths.get(resourcePath, "3d_model", fileName).toString();
            //todo 生成stl文件
            Earcut4j.convert(reqCreateSTLVo.getGeoJson() , filePath , reqCreateSTLVo.getSrid() , reqCreateSTLVo.getScaling());

            //todo 设置返回值
            result.put("fileName" , fileName);

            return RespBase.create(Resp.Code.Common.OK[0], result , Resp.Code.Common.OK[1]);
        }catch(IOException e){

            e.printStackTrace();
            return RespBase.create(Resp.Code.Common.ERROR[0], result , "生成stl文件失败");
        }
    }

@Data
public class ReqCreateSTLVo {

    //todo 生成STL用的GeoJson
    private JSONObject geoJson;
    //todo 模型缩放比例
    private Integer scaling;
    //todo 生成模型的坐标系
    private String srid;
}

        在我的接口中,我将“坐标系”和“缩放比例”这两个参数暴露给前端,大家可以按需调整,若不想暴露参数,可在代码中写死即可!

5.查看结果

        模型生成完后,查看一下效果吧,

5.1.相对坐标生成的模型

图 3 效果图
图 4 换个角度看
图 5 文件中的坐标值展示,当前为相对坐标

5.2.EPSG:3857坐标生成的模型

        该坐标生成的模型样貌与相对坐标一样,仅文件内容不一样,我只展示文件内容了,

图 6 文件中的坐标值展示,当前为3857坐标
Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐