我是新来的 shapefile 处理。请指导我如何实现下面的查询。
shapefile
我正在使用这个形状文件 TL_2018_US_aiannh.shp公司 从 人口普查网:Tiger-Line . 我要获得 人口普查分组 类实体 街区 , 束 , 县分部 和 县 形状文件的详细信息基于 经纬度 由用户提供。
我的要求是通过 Shape文件 单独使用,而不是通过任何API。
Shape文件
有人能帮助我实现这个框架吗?
到目前为止我所尝试/使用的 :
GeoTools
人口普查局分配一个代码,这些代码显示在以下字段中: __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(); }
但我收到的是空值。
任何帮助都会很有帮助。
我找到了解决办法。希望这对有需要的人有帮助。
SimpleFeature 具有形状文件属性的类型,在运行时尝试调试或打印行时可以检查这些属性。你可以使用 简单特征 获取属性。这些属性可以通过以下方式实现:
SimpleFeature
简单特征
try { while (iterator.hasNext()) { SimpleFeature feature = iterator.next(); Property intptlat = feature.getProperty("TRACTCE"); } }
确保您正在选择 块组 作为下载的层类型 Tiger-Line 或者你下载形状文件的站点。
Tiger-Line