• gis:读取shp文件


    public static void readShpFile(String shpPath) {
        File shpFile = new File(shpPath);
        try {
            // 通过给定的shapefile路径创建ShapefileDataStore对象
            ShapefileDataStore shapefileDataStore = new ShapefileDataStore(shpFile.toURI().toURL());
            
            // 设置编码为UTF-8,以防止属性中的中文字符出现乱码
            shapefileDataStore.setCharset(Charset.forName("UTF-8"));
            
            // 获取FeatureSource对象,用于获取要素集合并进行操作
            FeatureSource featuresource = shapefileDataStore.getFeatureSource(shapefileDataStore.getTypeNames()[0]);
            
            // 读取边界框(bbox)
            ReferencedEnvelope bbox = featuresource.getBounds();
            
            // 读取投影(坐标参考系统)
            CoordinateReferenceSystem crs = featuresource.getSchema().getCoordinateReferenceSystem();
            
            // 获取总要素数量
            int count = featuresource.getCount(Query.ALL);
            
            // 获取要素集合的几何类型(点、线、面等)
            GeometryType geometryType = featuresource.getSchema().getGeometryDescriptor().getType();
            
            // 读取要素集合
            SimpleFeatureCollection simpleFeatureCollection = (SimpleFeatureCollection) featuresource.getFeatures();
            
            // 获取属性字段列表
            List<AttributeDescriptor> attributes = simpleFeatureCollection.getSchema().getAttributeDescriptors();
            
            // 获取要素迭代器
            SimpleFeatureIterator simpleFeatureIterator = simpleFeatureCollection.features();
            
            // 遍历每一个要素
            while(simpleFeatureIterator.hasNext()) {
                SimpleFeature simpleFeature = simpleFeatureIterator.next();
                
                // 使用Java 8的流API遍历每一个属性值,并处理其他业务逻辑
                attributes.stream().forEach((a) -> {
                    // 依次读取shapefile中每一个属性的值
                    System.out.println(a.getLocalName() + ":" + simpleFeature.getAttribute(a.getLocalName()));
                });
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("读取完成!");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    以上代码是一个用于读取 Shapefile 文件的方法。该方法的主要功能包括:

    1. 创建 ShapefileDataStore 对象,用于读取 Shapefile 文件的数据源。
    2. 设置编码为 UTF-8 避免属性中的中文字符乱码。
    3. 获取 FeatureSource 对象,用于获取要素集合和元数据。
    4. 读取边界框(bbox)和投影(坐标参考系统)信息。
    5. 获取要素集合的总数量和几何类型。
    6. 读取要素集合,并获取属性字段列表。
    7. 遍历每一个要素,并打印每个属性字段的值。
      最后,输出读取完成的提示信息。

    这段代码提供了一个简单的方式来读取 Shapefile 文件,并获取其中要素和属性的信息。你可以根据需要进一步处理和使用这些数据。

  • 相关阅读:
    ACM MM 2022视频理解挑战赛视频分类赛道冠军AutoX团队技术分享
    购物网站系统
    用visual studio该安装哪个qt版本?
    在网络攻击之前、期间和之后应采取的步骤
    useragent识别访问设备
    Nacos使用实践
    整数分组(冬季每日一题 16)
    初探富文本之富文本概述
    JavaScript charCodeAt() 方法
    软件测试/测试开发丨探索AI与测试报告的完美结合,提升工作效率
  • 原文地址:https://blog.csdn.net/qq_34748010/article/details/132677589