一、基础数据介绍及生成方法简介
本节将对设计的基础数据和格网生成算法进行简单介绍,让大家在最开始的时候对实现过程有一个基本的思路。
1、矢量数据处理
这里我们需要对湖南省及其相邻地市的范围数据进行后端的格网生成。首先需要准备的是一份面状的基础数据。大家可以在 Qgis 中打开这份数据,如下图所示:
为了能更清晰的展示各地市的基本信息,我们使用分类样式对当前的矢量数据进行分类标绘,这是可以清晰的看到各地市的空间分布情况。

2、格网生成算法
本文中说明的根据矢量文件自动生成格网的算法流程表示如下:
流程步骤说明如下:
- 使用 GeoTools 读取矢量数据。
- 提取矢量数据的边界框(BBox)。
- 创建要素集合。
- 生成经纬线格网(根据 BBox 计算格网大小与分辨率)。
- 写入到 Shp 矢量文件中。
- 文件写入。 以上就是格网生成的具体实现步骤。熟悉了生成的算法步骤之后,下面就一起来一步一步的进行实现上面的经纬网生成实现。
二、代码实现
本节将按照前面的流程步骤说明,进一步的完成经纬格网的数据自动生成。本段的内容包含具体的实例代码,可以作为重点参考部分。
1、根据 Shp 计算 Bounds
读取矢量数据并提取 BBox 的关键代码如下:
// 1. 读取源 SHP 文件
File sourceFile = new File("F:/vector_data/2021 年 7 月中国乡镇行政区划 shp-(乡镇信息有点旧)/2021 湖南省乡镇行政区划/湖南省/湖南省/湖南省_市界.shp");
ShapefileDataStore dataStore = new ShapefileDataStore(sourceFile.toURI().toURL());
ReferencedEnvelope bounds = dataStore.getFeatureSource().getBounds();
double minLon bounds.getMinX();
bounds.getMaxX();
bounds.getMinY();
bounds.getMaxY();
System.out.println(minLon);
System.out.println(maxLon);
System.out.println(minLat);
System.out.println(maxLat);



表名需要的文件已经成功的生成到我们的目标磁盘中。
为了验证当前生成的经纬网线数据是否是符合目标的文件 bbox 范围的,我们再叠加原始的数据图层来校验一下。
可以看到生成的格网数据是完全按照我们的预期来生成,需求得到了满足。