引入依赖

  <!-- JSON 库用于处理 GeoJSON -->
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20231013</version>
        </dependency>

        <!-- Proj4j 库用于坐标系转换 -->
        <dependency>
            <groupId>org.locationtech.proj4j</groupId>
            <artifactId>proj4j</artifactId>
            <version>1.1.0</version>

进行文件的读取,然后分别对Geojson不同格式进行坐标转换

   for (int i = 0; i < features.length(); i++) {
                JSONObject feature = features.getJSONObject(i);
                JSONObject geometry = feature.getJSONObject("geometry");
                String type = geometry.getString("type");

                if (type.equals("Point")) {
                    JSONArray coordinates = geometry.getJSONArray("coordinates");
                    double[] transformedPoint = convertCoordinates(coordinates, transform);
                    geometry.put("coordinates", new JSONArray(transformedPoint));
                } else if (type.equals("LineString") || type.equals("MultiPoint")) {
                    JSONArray coordinates = geometry.getJSONArray("coordinates");
                    geometry.put("coordinates", transformCoordinatesArray(coordinates, transform));
                } else if (type.equals("Polygon") || type.equals("MultiLineString")) {
                    JSONArray rings = geometry.getJSONArray("coordinates");
                    for (int j = 0; j < rings.length(); j++) {
                        rings.put(j, transformCoordinatesArray(rings.getJSONArray(j), transform));
                    }
                    geometry.put("coordinates", rings);
                } else if (type.equals("MultiPolygon")) {
                    JSONArray polygons = geometry.getJSONArray("coordinates");
                    for (int j = 0; j < polygons.length(); j++) {
                        JSONArray rings = polygons.getJSONArray(j);
                        for (int k = 0; k < rings.length(); k++) {
                            rings.put(k, transformCoordinatesArray(rings.getJSONArray(k), transform));
                        }
                        polygons.put(j, rings);
                    }
                    geometry.put("coordinates", polygons);
                }
            }

其中convertCoordinates为自定义的单个坐标转换方法

transformCoordinatesArray为自定义数组转换方法 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐