자바 GeoTools 를 사용 하여 shp 파일 을 읽 고 그림 을 그 리 는 작업 코드

GeoTools 는 ArcGis 지도 와 자바 대상 의 교량 으로 jdbc 가 Oacle 과 자바 와 같다.
shp 파일 자 체 는 지리 적 대상 경계 좌표,대상 중심 도시 및 도시 번호 가 저 장 된 다 다각형 문자열 입 니 다.
사용 할 의존 도 는 다음 과 같 습 니 다.

 <!--   GeoTools   -->
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-shapefile</artifactId>
            <version>${geotools.version}</version>
        </dependency>

        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-swing</artifactId>
            <version>${geotools.version}</version>
        </dependency>
        
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
대상:

public class CutProperty {

    private String province;
    private int x;
    private int y;

    /**
     *    
     * */
    private int width;

    /**
     *    
     * */
    private int height;

    /**
     *        
     * */
    private float weight;

    /**
     *        
     * */
    private int rightborder;

    /**
     *         
     * */
    private int bei;

    /**
     *     
     * */
    private int stringsize;
[email protected]의 도구 클래스,shp 파일 읽 기:

package com.gwhn.geotools;

import org.geotools.data.FeatureWriter;
import org.geotools.data.FileDataStoreFactorySpi;
import org.geotools.data.Transaction;
import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.data.shapefile.ShapefileDataStoreFactory;
import org.geotools.data.simple.SimpleFeatureIterator;
import org.geotools.data.simple.SimpleFeatureSource;
import org.geotools.feature.FeatureCollection;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.referencing.crs.DefaultGeographicCRS;
import org.junit.Test;
import org.locationtech.jts.geom.*;
import org.opengis.feature.Property;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;

import java.io.File;
import java.io.Serializable;
import java.nio.charset.Charset;
import java.util.*;

public class ShapeUtil {

    // shp  【    +    】
    public List<Property> SHPRead(String path) throws Exception {
        List<Property> propertyList = new ArrayList<>();
        //       shapfile  ,    

        //  shapefile       
        ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();

        //          
        File file = new File(path);

        //        shapfile   
        //ShapefileDataStore:      ,   Shapefiles     
        ShapefileDataStore ds = (ShapefileDataStore) dataStoreFactory.createDataStore(file.toURI().toURL());

        //    ,        
        ds.setCharset(Charset.forName("UTF-8"));

        //getFeatureSource():ContentFeatureSource
        //       FeatureCollection        。              :
        //SimpleFeatureSource         FeatureCollection【  】,   
        SimpleFeatureSource featureSource = ds.getFeatureSource();

        //getFeatures(): FeatureCollection         。
        //      FeatureCollection      。      FeatureCollection     
        FeatureCollection<SimpleFeatureType, SimpleFeature> result = featureSource.getFeatures();

        System.out.println("       :" + result.size());
        //features():    FeatureIterator   
        SimpleFeatureIterator it = (SimpleFeatureIterator) result.features();

        while (it.hasNext()) {
            SimpleFeature feature = it.next();
            //    【                    ,               】
            Iterator<Property> ip = feature.getProperties().iterator();
//            System.out.println("========================");
            //   while
            while (ip.hasNext()) {
                Property pro = ip.next();
//                System.out.println(pro.getName()+" = "+pro.getValue());
                propertyList.add(pro);
            }//end     
        }
        it.close();
        return propertyList;
    }
   
}
[email protected] 에서 가 져 온 문자열 을 다 중 다각형 대상 MultiPolygon 으로 변환 하 는 도구 클래스 입 니 다.

package com.gwhn.geotools;


import org.locationtech.jts.geom.*;
import org.locationtech.jts.io.ParseException;
import org.locationtech.jts.io.WKTReader;

import java.util.List;

/**
 *        
 *
 * @author [email protected]
 * @version V1.0.1
 * @blob http://blog.csdn.net/appleyk
 * @date 2017 12 8 10:38:49
 */

//    
public class GeometryCreator {

    public static GeometryCreator geometryCreator = null;

    private GeometryFactory geometryFactory = new GeometryFactory();

    public GeometryCreator() {
    }

    /**
     *          
     *
     * @return
     */
    public static GeometryCreator getInstance() {
        if (geometryCreator == null) {
            return new GeometryCreator();
        }
        return geometryCreator;
    }


    /**
     * 1.   
     */

    /**
     * 1.1  X,Y          :   【Point】
     *
     * @param x
     * @param y
     * @return
     */
    public Point createPoint(double x, double y) {
        Coordinate coord = new Coordinate(x, y);
        Point point = geometryFactory.createPoint(coord);
        return point;
    }

    /**
     * 1.2       WKT  【String】      :   【Point】
     *
     * @return
     * @throws ParseException
     */
    public Point createPointByWKT(String PointWKT) throws ParseException {
        WKTReader reader = new WKTReader(geometryFactory);
        Point point = (Point) reader.read(PointWKT);
        return point;
    }

    /**
     * 1.3       WKT  【String】      :   【MultiPoint】
     *
     * @return
     * @throws ParseException
     */
    public MultiPoint createMulPointByWKT(String MPointWKT) throws ParseException {
        WKTReader reader = new WKTReader(geometryFactory);
        MultiPoint mpoint = (MultiPoint) reader.read(MPointWKT);
        return mpoint;
    }


    /**
     * 2.   
     */


    /**
     * 2.1           :  【LineString】
     *
     * @param ax
     * @param ay
     * @param bx
     * @param by
     * @return
     */
    public LineString createLine(double ax, double ay, double bx, double by) {
        Coordinate[] coords = new Coordinate[]{new Coordinate(ax, ay), new Coordinate(bx, by)};
        LineString line = geometryFactory.createLineString(coords);
        return line;
    }

    /**
     * 2.2    WKT        :  【LineString】
     *
     * @param LineStringWKT
     * @return
     * @throws ParseException
     */
    public LineString createLineByWKT(String LineStringWKT) throws ParseException {
        WKTReader reader = new WKTReader(geometryFactory);
        LineString line = (LineString) reader.read("LINESTRING(0 0, 2 0)");
        return line;
    }

    /**
     * 2.3         ,      :   【MultiLineString】
     *
     * @param list
     * @return
     */
    public MultiLineString createMLine(List<Coordinate[]> list) {

        MultiLineString ms = null;


        if (list == null) {
            return ms;
        }

        LineString[] lineStrings = new LineString[list.size()];


//      Coordinate[] coords1  = new Coordinate[] {new Coordinate(2, 2), new Coordinate(2, 2)};    
//      LineString line1 = geometryFactory.createLineString(coords1);    
//       
//      Coordinate[] coords2  = new Coordinate[] {new Coordinate(2, 2), new Coordinate(2, 2)};    
//      LineString line2 = geometryFactory.createLineString(coords2);    

        int i = 0;
        for (Coordinate[] coordinates : list) {
            lineStrings[i] = geometryFactory.createLineString(coordinates);
        }

        ms = geometryFactory.createMultiLineString(lineStrings);

        return ms;
    }


    /**
     * 2.4       WKT  【String】       :   【MultiLineString】
     *
     * @param MLineStringWKT
     * @return
     * @throws ParseException
     */
    public MultiLineString createMLineByWKT(String MLineStringWKT) throws ParseException {
        WKTReader reader = new WKTReader(geometryFactory);
        MultiLineString line = (MultiLineString) reader.read(MLineStringWKT);
        return line;
    }


    /**
     * 3.     
     */


    /**
     * 3.1        WKT  【String】      :    【Polygon】
     *
     * @param PolygonWKT
     * @return
     * @throws ParseException
     */
    public Polygon createPolygonByWKT(String PolygonWKT) throws ParseException {
        WKTReader reader = new WKTReader(geometryFactory);
        Polygon polygon = (Polygon) reader.read(PolygonWKT);
        return polygon;
    }

    /**
     * 3.2        WKT  【String】      :      【MultiPolygon】
     *
     * @param MPolygonWKT
     * @return
     * @throws ParseException
     */
    public MultiPolygon createMulPolygonByWKT(String MPolygonWKT) throws ParseException {
        WKTReader reader = new WKTReader(geometryFactory);
        MultiPolygon mpolygon = (MultiPolygon) reader.read(MPolygonWKT);
        return mpolygon;
    }

    /**
     *                  
     *
     * @param polygons
     * @return
     * @throws ParseException
     */
    public MultiPolygon createMulPolygonByPolygon(Polygon[] polygons) throws ParseException {

        return geometryFactory.createMultiPolygon(polygons);
    }

    /**
     * 4.        
     */


    /**
     * 4.1         ,        :【GeometryCollection】
     *
     * @return
     * @throws ParseException
     */
    public GeometryCollection createGeoCollect(Geometry[] geoArray) throws ParseException {
//            LineString line = createLine(125.12,25.4,85.63,99.99);    
//            Polygon poly    =  createPolygonByWKT("POLYGON((20 10, 30 0, 40 10, 30 20, 20 10))");    
//            Geometry g1     = geometryFactory.createGeometry(line);    
//            Geometry g2     = geometryFactory.createGeometry(poly);    
//            Geometry[] geoArray = new Geometry[]{g1,g2};    
        GeometryCollection gc = geometryFactory.createGeometryCollection(geoArray);
        return gc;
    }


    /**
     * 5.   
     */

    /**
     * 5.1               :      --  【Polygon】
     *
     * @param x
     * @param y
     * @param RADIUS
     * @return
     */
    public Polygon createCircle(double x, double y, final double RADIUS) {

        final int SIDES = 32;//       

        Coordinate coords[] = new Coordinate[SIDES + 1];
        for (int i = 0; i < SIDES; i++) {
            double angle = ((double) i / (double) SIDES) * Math.PI * 2.0;
            double dx = Math.cos(angle) * RADIUS;
            double dy = Math.sin(angle) * RADIUS;
            coords[i] = new Coordinate((double) x + dx, (double) y + dy);
        }
        coords[SIDES] = coords[0];
        //   
        LinearRing ring = geometryFactory.createLinearRing(coords);
        Polygon polygon = geometryFactory.createPolygon(ring, null);
        return polygon;
    }


    /**
     *  6.   
     */

    /**
     * 6.1   WKT   
     *
     * @param ringWKT
     * @return
     * @throws ParseException
     */
    public LinearRing createLinearRingByWKT(String ringWKT) throws ParseException {
        WKTReader reader = new WKTReader(geometryFactory);
        LinearRing ring = (LinearRing) reader.read(ringWKT);
        return ring;
    }

}
xml 는 다음 과 같 습 니 다:

<?xml version="1.0" encoding="UTF-8"?>
<application>
    <!--     -->
    <module name="Http">

        <group name="FileExport">
            <configValue key="ShapePath">D:/testspace/spd/rain/</configValue>
            <configValue key="ProvinceShapePath">D:/testspace/spd/Provinces_shp/</configValue>
            <configValue key="ProvincePath">D:\testspace\spd\output\</configValue>
            <configValue key="ExportPath">D:\testspace\spd\Export\</configValue>
            <configValue key="PropertyPath">D:\testspace\spd\Export\</configValue>
        </group>
        
    </module>
</application>
shp 파일 위치 와 그림 출력 위 치 를 가 져 오기 위해 xml 읽 기:

package com.gwhn.Util;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Text;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.Iterator;

/**
 * @author banxian
 * @date 2021/1/21 15:56
 */
public class YereeXmlContext {

    /**
     *           key,            key   
     * <!--     -->
     * <module name="Http">
     *    <group name="FileUpload">
     *        <configValue key="TempDir">D:\\temp\\upload\\</configValue>
     *    </group>
     * </module>
     *
     * @param key1
     * @param key2
     * @param key3
     * @return
     * @author banxian
     * @date: 2021/1/21 19:51
     */
    public String getXmlValue(String key1, String key2, String key3) {
        try {
            //1.  Reader  
            SAXReader reader = new SAXReader();
            //2.  xml
            String directoryPath = Thread.currentThread().getContextClassLoader().getResource("config.xml").getPath();//       
            Document document = reader.read(new File(directoryPath));
            //3.     
            Element rootElement = document.getRootElement();
            Element moduleElement = getTargetElement(key1, rootElement);
            Element groupElement = getTargetElement(key2, moduleElement);
            Element configElement = getTargetElement(key3, groupElement);
            Attribute attribute = (Attribute) configElement.attributes().get(0);
            String key = attribute.getValue();
            Text text3 = (Text) configElement.content().get(0);
            String value = text3.getText();
            return value;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     *    targetKey        
     *
     * @param targetKey
     * @param parentElement
     * @return
     * @author banxian
     * @date: 2021/1/21 19:53
     */
    public Element getTargetElement(String targetKey, Element parentElement) {
        Iterator iterator = parentElement.elementIterator();
        Element childElement = null;
        while (iterator.hasNext()) {
            Element element = (Element) iterator.next();
            Attribute attribute = (Attribute) element.attributes().get(0);
            String key = attribute.getValue();
            if (key.equals(targetKey) || key == targetKey) {
                childElement = element;
                break;
            }
        }
        return childElement;
    }
}
핵심 클래스:다각형 으로 그림 그리 기

package com.gwhn.Util;

import com.gwhn.entity.CutProperty;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.MultiPolygon;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.List;

/**
 * @author banxian
 * @date 2021/6/28 12:37
 */
public class PolygonUtil {

    ImageUtils imageUtils = new ImageUtils();
    TxtUtil txtUtil = new TxtUtil();

    /**
     *         
     * @param path
     * @param cutProperty
     * @param multiPolygonList
     * @return
     * @author banxian
     * @date: 2021/6/30 15:31
     */
    public void graphicsByMultiPolygon(String path, List<MultiPolygon> multiPolygonList, CutProperty cutProperty) {
        try {
            int imageWidth = cutProperty.getWidth();//      
            int imageHeight = cutProperty.getHeight();//      
            BufferedImage image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);
            Graphics2D graphics = (Graphics2D) image.getGraphics();
            graphics.setColor(Color.white);
            graphics.fillRect(0, 0, imageWidth, imageHeight);
            graphics.setColor(Color.black);
            int m = cutProperty.getBei() / 100;
            graphics.setStroke(new BasicStroke(cutProperty.getWeight() * m));//    
            Font font = new Font("  ", Font.BOLD, 1200);
            graphics.setFont(font);
            graphics.drawString(cutProperty.getProvince(),  12500, 1500);
            for (MultiPolygon multiPolygon : multiPolygonList) {
                int num = multiPolygon.getNumGeometries();
                for (int i = 0; i < num; i++) {
                    Geometry geometry = multiPolygon.getGeometryN(i);
                    drawPolygon(geometry, cutProperty, graphics);
                }
            }
            imageUtils.createImage(path, image);
            System.out.println(path + ":" + font.getSize());
        } catch (
                Exception e) {
            e.printStackTrace();
        }

    }

    /**
     *        
     * @param geometry
     * @param cutProperty
     * @param graphics2D
     * @return
     * @author banxian
     * @date: 2021/6/28 12:37
     */
    public void drawPolygon(Geometry geometry, CutProperty cutProperty, Graphics2D graphics2D) {
        int m = cutProperty.getBei() / 100;
        Double xtemp = Double.valueOf(cutProperty.getX() * m);
        Double ytemp = Double.valueOf(cutProperty.getY() * m);

        //    
        if (geometry.toString().contains("),")) {
            String geoStr = geometry.toString();
            String tempStr = geoStr.substring(9, geoStr.length() - 1) + ",";
            while (tempStr.contains("),")) {
                String temp = tempStr.substring(0, tempStr.indexOf("),") + 2);
                tempStr = tempStr.substring(temp.length()).trim();
                Polygon polygon = txtUtil.getPolygonByStr(temp,cutProperty);
                graphics2D.drawPolygon(polygon);
            }
        } else {
            Coordinate[] coordinates = geometry.getCoordinates();
            Polygon polygon = new Polygon();
            Double x, y;
            for (int j = 0; j < coordinates.length; j++) {
                Coordinate coordinate = coordinates[j];
                x = coordinate.getX() * cutProperty.getBei() - xtemp;
                y = cutProperty.getRightborder() * m - coordinate.getY() * cutProperty.getBei() - ytemp;
                polygon.addPoint(x.intValue(), y.intValue());
            }
            graphics2D.drawPolygon(polygon);
        }
    }
}
도구 류:특수 한 경 계 를 처리 하고 보통 비행 지,섬 으로 구성 된다.

package com.gwhn.Util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.gwhn.entity.CutProperty;

import java.awt.*;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author banxian
 * @date 2021/5/10 15:57
 */
public class TxtUtil {

    public Polygon getPolygonByStr(String polygonStr,CutProperty cutProperty) {
        polygonStr = polygonStr.substring(1, polygonStr.length() - 2) + ",";
        List<String> polygonStrList = new ArrayList<>();
        while (polygonStr.contains(",")) {
            String pointStr = polygonStr.substring(0, polygonStr.indexOf(",")).trim();
            polygonStrList.add(pointStr);
            polygonStr = polygonStr.substring(polygonStr.indexOf(",") + 1);
        }
        return transPointStrToPolygon(polygonStrList, cutProperty);
    }

    public Polygon transPointStrToPolygon(List<String> polygonStrList,CutProperty cutProperty) {
        int m = cutProperty.getBei() / 100;
        Double xtemp = Double.valueOf(cutProperty.getX() * m);
        Double ytemp = Double.valueOf(cutProperty.getY() * m);
        Polygon polygon = new Polygon();
        for (String pointStr : polygonStrList) {
            Double x = Double.parseDouble(pointStr.substring(0, pointStr.indexOf(" ")));
            Double y = Double.parseDouble(pointStr.substring(pointStr.indexOf(" ")).trim());
            x = x * cutProperty.getBei() - xtemp;
            y = cutProperty.getRightborder()*m - y * cutProperty.getBei()-ytemp;
            polygon.addPoint(x.intValue(), y.intValue());
        }
        return polygon;
    }

    //  json  
    public String readJsonFile(String fileName) {
        String jsonStr = "";
        try {
            File jsonFile = new File(fileName);
            FileReader fileReader = new FileReader(jsonFile);
            Reader reader = new InputStreamReader(new FileInputStream(jsonFile), "utf-8");
            int ch = 0;
            StringBuffer sb = new StringBuffer();
            while ((ch = reader.read()) != -1) {
                sb.append((char) ch);
            }
            fileReader.close();
            reader.close();
            jsonStr = sb.toString();
            return jsonStr;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     *   json        
     *
     * @param
     * @return
     * @author banxian
     * @date: 2021/6/25 8:16
     */
    public Map<String, CutProperty> getCutPropertyMap() {
        String path = Thread.currentThread().getContextClassLoader().getResource("property.json").getPath();//       
        String s = readJsonFile(path);
        JSONObject jsonObject = JSON.parseObject(s);
        JSONArray jsonArray = jsonObject.getJSONArray("properties");//  JSONArray  
        List<CutProperty> cutPropertyList = jsonArray.toJavaList(CutProperty.class);
        Map<String, CutProperty> cutPropertyMap = new HashMap();
        for (CutProperty cutProperty : cutPropertyList) {
            cutPropertyMap.put(cutProperty.getProvince(), cutProperty);
        }
        return cutPropertyMap;
    }
    
}
핵심 클래스:읽 은 shp 파일 데이터 에서 문자열 을 추출 하여 다 다각형 으로 변환 하고 그림 을 그립 니 다.

package com.gwhn.controller;

import com.gwhn.Util.PolygonUtil;
import com.gwhn.Util.TxtUtil;
import com.gwhn.Util.YereeXmlContext;
import com.gwhn.entity.CutProperty;
import com.gwhn.geotools.GeometryCreator;
import com.gwhn.geotools.ShapeUtil;
import org.locationtech.jts.geom.MultiPolygon;
import org.opengis.feature.Property;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @author banxian
 * @date 2021/6/1 8:12
 */
public class ShpPictureController {
    PolygonUtil polygonUtil = new PolygonUtil();
    TxtUtil txtUtil = new TxtUtil();
    Map<String, CutProperty> cutPropertyMap = txtUtil.getCutPropertyMap();

    /**
     *     shp        
     * @param
     * @return
     * @author banxian
     * @date: 2021/6/28 12:35
     */
    public void doNation() {
        YereeXmlContext yereeXmlContext = new YereeXmlContext();
        GeometryCreator geometryCreator = new GeometryCreator();
        String shapePath = yereeXmlContext.getXmlValue("Http", "FileExport", "ProvincePath") + "province.shp";
        ShapeUtil shapeUtil = new ShapeUtil();
        try {
            List<Property> propertyList = shapeUtil.SHPRead(shapePath);
            List<MultiPolygon> multiPolygonList = new ArrayList<>();
            for (int i = 0; i * 8 < propertyList.size(); i++) {
                Property property = propertyList.get(i * 8);
                String valueStr = property.getValue().toString();
                MultiPolygon multiPolygon = geometryCreator.createMulPolygonByWKT(valueStr);
                multiPolygonList.add(multiPolygon);
            }
            String path = yereeXmlContext.getXmlValue("Http", "FileExport", "ExportPath");
            File newFileDir = new File(path);
            //         
            if (!newFileDir.exists()) {
                newFileDir.mkdirs();
            }
//            String picturName = imageUtils.genImageName() + ".jpg";
            String picturName = "  .jpg";
            CutProperty cutProperty = cutPropertyMap.get("  ");
            polygonUtil.graphicsByMultiPolygon(path + picturName, multiPolygonList, cutProperty);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("  ");
    }

    /**
     *     shp      
     * @param
     * @return
     * @author banxian
     * @date: 2021/6/28 12:35
     */
    public void doProvince() {
        YereeXmlContext yereeXmlContext = new YereeXmlContext();
        GeometryCreator geometryCreator = new GeometryCreator();
        ShapeUtil shapeUtil = new ShapeUtil();
        String shapeDirPath = yereeXmlContext.getXmlValue("Http", "FileExport", "ProvinceShapePath");

        List<File> fileList = new ArrayList<>();
        fileList = getFileList(shapeDirPath, fileList);
        for (int j = 0; j < fileList.size(); j++) {
            File file = fileList.get(j);
            if (file.getName().contains(".shp")) {
                File parentFile = file.getParentFile();
                String province = parentFile.getName();
                System.out.println(province);
                int size = 7;
                if (province.equals("  ") || province == "  " || province.equals("  ") || province == "  ") {
                    size = 10;
                }
                CutProperty cutProperty = cutPropertyMap.get(province);
                try {
                    List<Property> propertyList = shapeUtil.SHPRead(file.getPath());
                    List<MultiPolygon> multiPolygonList = new ArrayList<>();
                    for (int i = 0; i * size < propertyList.size(); i++) {
                        String valueStr = propertyList.get(i * size).getValue().toString();
                        MultiPolygon multiPolygon = geometryCreator.createMulPolygonByWKT(valueStr);
                        multiPolygonList.add(multiPolygon);
                    }
                    String path = yereeXmlContext.getXmlValue("Http", "FileExport", "ExportPath");
                    ;
                    File newFileDir = new File(path);
                    //         
                    if (!newFileDir.exists()) {
                        newFileDir.mkdirs();
                    }
                    String picturName = province + ".jpg";
                    polygonUtil.graphicsByMultiPolygon(path + picturName, multiPolygonList, cutProperty);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        System.out.println("  ");
    }

    /**
     *   shp    
     * @param dirPath
     * @param fileList
     * @return
     * @author banxian
     * @date: 2021/6/28 12:36
     */
    public List<File> getFileList(String dirPath, List<File> fileList) {
        File dir = new File(dirPath);
        if (!dir.exists()) {
            dir.mkdirs();
        }
        for (File file : dir.listFiles()) {
            if (!file.isDirectory()) {
                fileList.add(file);
            } else {
                getFileList(file.getPath(), fileList);
            }
        }
        return fileList;
    }

}
지도 좌표 캡 처 매개 변수

{
  "properties": [
    {
      "province": "  ",
      "x": 8000,
      "y": 18600,
      "width": 25000,
      "height": 15000,
      "weight": 5.0,
      "bei":350,
      "rightborder": 25000,
      "stringsize": 500
    },
    {
      "province": "  ",
      "x": 12050,
      "y": 21800,
      "width": 23000,
      "height": 16000,
      "weight": 0.8,
      "bei": 10000,
      "rightborder": 25000,
      "stringsize": 500
    },
    {
      "province": "  ",
      "x": 9700,
      "y": 22000,
      "width": 25000,
      "height": 25000,
      "weight": 2.0,
      "bei": 2500,
      "rightborder": 25000,
      "stringsize": 50
    },
    {
      "province": "   ",
      "x": 9000,
      "y": 19000,
      "width": 25000,
      "height": 15000,
      "weight": 3.0,
      "bei": 600,
      "rightborder": 25000,
      "stringsize": 180
    },
    {
      "province": "  ",
      "x": 11515,
      "y": 20830,
      "width": 25000,
      "height": 25000,
      "weight": 1.0,
      "bei": 10000,
      "rightborder": 25000,
      "stringsize": 600
    },
    {
      "province": "  ",
      "x": 12100,
      "y": 20200,
      "width": 25000,
      "height": 17000,
      "weight": 2.0,
      "bei": 2100,
      "rightborder": 25000,
      "stringsize": 40
    },
    {
      "province": "  ",
      "x": 9600,
      "y": 21500,
      "width": 25000,
      "height": 20000,
      "weight": 2.0,
      "bei": 1900,
      "rightborder": 25000,
      "stringsize": 40
    },
    {
      "province": "  ",
      "x": 11600,
      "y": 20920,
      "width": 25000,
      "height": 25000,
      "weight": 1.0,
      "bei": 10000,
      "rightborder": 25000,
      "stringsize": 600
    },
    {
      "province": "  ",
      "x": 10400,
      "y": 20960,
      "width": 20000,
      "height": 25000,
      "weight": 1.0,
      "bei": 4210,
      "rightborder": 25000,
      "stringsize": 40
    },
    {
      "province": "  ",
      "x": 11350,
      "y": 21500,
      "width": 25000,
      "height": 22000,
      "weight": 1.0,
      "bei": 3300,
      "rightborder": 25000,
      "stringsize": 25
    },
    {
      "province": "  ",
      "x": 11430,
      "y": 21050,
      "width": 25000,
      "height": 20000,
      "weight": 1.0,
      "bei": 2900,
      "rightborder": 25000,
      "stringsize": 35
    },
    {
      "province": "  ",
      "x": 10900,
      "y": 20850,
      "width": 25000,
      "height": 25000,
      "weight": 1.0,
      "bei": 3500,
      "rightborder": 25000,
      "stringsize": 25
    },
    {
      "province": "  ",
      "x": 10750,
      "y": 22400,
      "width": 25000,
      "height": 15000,
      "weight": 1.0,
      "bei": 2200,
      "rightborder": 25000,
      "stringsize": 40
    },
    {
      "province": "  ",
      "x": 10400,
      "y": 22200,
      "width": 25000,
      "height": 18000,
      "weight": 1.0,
      "bei": 2600,
      "rightborder": 25000,
      "stringsize": 35
    },
    {
      "province": "  ",
      "x": 7200,
      "y": 19800,
      "width": 25000,
      "height": 20000,
      "weight": 2.0,
      "bei": 900,
      "rightborder": 25000,
      "stringsize": 150
    },
    {
      "province": "  ",
      "x": 11550,
      "y": 21400,
      "width": 25000,
      "height": 25000,
      "weight": 1.0,
      "bei": 4000,
      "rightborder": 25000,
      "stringsize": 25
    },
    {
      "province": "  ",
      "x": 11250,
      "y": 21950,
      "width": 25000,
      "height": 25000,
      "weight": 1.0,
      "bei": 4000,
      "rightborder": 25000,
      "stringsize": 25
    },
    {
      "province": "  ",
      "x": 11250,
      "y": 20600,
      "width": 25000,
      "height": 25000,
      "weight": 1.0,
      "bei": 3000,
      "rightborder": 25000,
      "stringsize": 40
    },
    {
      "province": "  ",
      "x": 10900,
      "y": 21200,
      "width": 25000,
      "height": 23000,
      "weight": 1.0,
      "bei": 2700,
      "rightborder": 25000,
      "stringsize": 25
    },
    {
      "province": "  ",
      "x": 11800,
      "y": 21800,
      "width": 25000,
      "height": 25000,
      "weight": 1.0,
      "bei": 5000,
      "rightborder": 25000,
      "stringsize": 25
    },
    {
      "province": "  ",
      "x": 10800,
      "y": 21500,
      "width": 25000,
      "height": 20000,
      "weight": 1.0,
      "bei": 3000,
      "rightborder": 25000,
      "stringsize": 30
    },
    {
      "province": "  ",
      "x": 10800,
      "y": 21900,
      "width": 25000,
      "height": 25000,
      "weight": 1.0,
      "bei": 3500,
      "rightborder": 25000,
      "stringsize": 25
    },
    {
      "province": "  ",
      "x": 9000,
      "y": 20300,
      "width": 25000,
      "height": 25000,
      "weight": 2.0,
      "bei": 1200,
      "rightborder": 25000,
      "stringsize": 70
    },
    {
      "province": "  ",
      "x": 11550,
      "y": 22050,
      "width": 25000,
      "height": 25000,
      "weight": 1.0,
      "bei": 4000,
      "rightborder": 25000,
      "stringsize": 25
    },
    {
      "province": "  ",
      "x": 7500,
      "y": 21000,
      "width": 25000,
      "height": 15000,
      "weight": 1.5,
      "bei": 1000,
      "rightborder": 25000,
      "stringsize": 100
    },
    {
      "province": "  ",
      "x": 10350,
      "y": 21900,
      "width": 25000,
      "height": 25000,
      "weight": 1.0,
      "bei": 3200,
      "rightborder": 25000,
      "stringsize": 35
    },
    {
      "province": "  ",
      "x": 11850,
      "y": 20500,
      "width": 25000,
      "height": 25000,
      "weight": 1.0,
      "bei": 3300,
      "rightborder": 25000,
      "stringsize": 25
    },
    {
      "province": "  ",
      "x": 10500,
      "y": 21700,
      "width": 25000,
      "height": 25000,
      "weight": 1.0,
      "bei": 4700,
      "rightborder": 25000,
      "stringsize": 20
    },
    {
      "province": "  ",
      "x": 10450,
      "y": 21000,
      "width": 25000,
      "height": 25000,
      "weight": 1.0,
      "bei": 2900,
      "rightborder": 25000,
      "stringsize": 25
    },
    {
      "province": "  ",
      "x": 8700,
      "y": 20900,
      "width": 25000,
      "height": 15000,
      "weight": 2.0,
      "bei": 1500,
      "rightborder": 25000,
      "stringsize": 70
    },
    {
      "province": "   ",
      "x": 12000,
      "y": 19500,
      "width": 25000,
      "height": 18000,
      "weight": 1.0,
      "bei": 1500,
      "rightborder": 25000,
      "stringsize": 60
    }
  ]
}
테스트 클래스

public static void main(String[] args) {
        try {
            ShpPictureController shpPictureController = new ShpPictureController();
//            shpPictureController.doProvince();
            shpPictureController.doNation();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
마지막 으로 그린 그림 의 효 과 는 다음 과 같다.
百度百度百度百度百度百度百度百度
자바 가 GeoTools 를 사용 하여 shp 파일 을 읽 고 그림 을 그 리 는 조작 코드 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 가 shp 파일 을 읽 고 그림 을 그 리 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기