代码之家  ›  专栏  ›  技术社区  ›  Mike

基于LaTLIN输入的SabFEFLE的人口普查块组

  •  0
  • Mike  · 技术社区  · 6 年前

    我是新来的 shapefile 处理。请指导我如何实现下面的查询。

    我正在使用这个形状文件 TL_2018_US_aiannh.shp公司 人口普查网:Tiger-Line . 我要获得 人口普查分组 类实体 街区 , , 县分部 形状文件的详细信息基于 经纬度 由用户提供。

    我的要求是通过 Shape文件 单独使用,而不是通过任何API。

    有人能帮助我实现这个框架吗?

    到目前为止我所尝试/使用的 :

    • 我已经用过 GeoTools 阅读 Shape文件 . 我能继续用这个吗?这个工具能满足我的要求吗?
    • 我已经查阅了 审查机构 哪些状态:

    人口普查局分配一个代码,这些代码显示在以下字段中: __tracce_157;,其中__ce_157;表示人口普查。最后,提交状态 代码以__st__结尾,例如__sldlst__和当地教育机构代码 以__lea__结尾,如__elsdlea__所示。

    我在代码中尝试过 :

    File file = new File("D:\\tl_2018_us_aiannh.shp");
    
            try {
                Map<String, String> connect = new HashMap();
                connect.put("url", file.toURI().toString());
    
                DataStore dataStore = DataStoreFinder.getDataStore(connect);
                String[] typeNames = dataStore.getTypeNames();
                String typeName = typeNames[0];
    
                System.out.println("Reading content " + typeName);
    
                SimpleFeatureSource featureSource = dataStore
                        .getFeatureSource(typeName);
                SimpleFeatureCollection collection = featureSource.getFeatures();
                SimpleFeatureIterator iterator = collection.features();
    
                try {
                    while (iterator.hasNext()) {
                        SimpleFeature feature = iterator.next();
                        GeometryAttribute sourceGeometry = feature
                                .getDefaultGeometryProperty();
                        String name = (String) (feature).getAttribute("TRACTCE");
                        Property property = feature.getProperty("TRACTCE");
                        System.out.println(property);
                    }
                } finally {
                    iterator.close();
                }
    
            } catch (Throwable e) {
                e.getMessage();
            }
    

    但我收到的是空值。

    任何帮助都会很有帮助。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Mike    6 年前

    我找到了解决办法。希望这对有需要的人有帮助。

    SimpleFeature 具有形状文件属性的类型,在运行时尝试调试或打印行时可以检查这些属性。你可以使用 简单特征 获取属性。这些属性可以通过以下方式实现:

      try {
         while (iterator.hasNext()) {
             SimpleFeature feature = iterator.next();
             Property intptlat = feature.getProperty("TRACTCE");
         }
     }
    

    确保您正在选择 块组 作为下载的层类型 Tiger-Line 或者你下载形状文件的站点。

    推荐文章