我不熟悉shapefile
处理。请指导我如何实现下面的查询。
我正在使用 census.gov:TIGER-LINE 中的这个shapefile tl_2018_us_aiannh.shp 。我要获取人口普查区组实体,例如 Block , Tract , County细分细分和 County < / em>根据用户提供的纬度和经度从shapefile中获取详细信息。
我的要求是仅通过shapefile
而不是通过任何API来实现这一目标。
有人可以帮助我实现这一目标吗?
到目前为止我一直在尝试/使用的内容:
GeoTools
来阅读shapefile
。我可以继续使用吗?我的要求可以通过此工具实现吗?人口普查局分配了一个代码,这些代码出现在诸如 “ TRACTCE”,其中“ CE”代表人口普查。最后,国家提交 代码以“ ST”结尾,例如“ SLDLST”,以及当地的教育机构代码 和“ ELSDLEA”一样,以“ LEA”结尾。
我在代码中尝试过的方式:
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();
}
但是我收到的是空值。
任何帮助都会很有帮助。
答案 0 :(得分:0)
我已经找到解决方案。希望这对有需要的人有帮助。
SimpleFeature
是具有形状文件属性的类型,当您尝试在运行时调试或打印行时可以检查这些形状文件。您可以使用SimpleFeature
来获取属性。这些属性可以通过以下方式实现:
try {
while (iterator.hasNext()) {
SimpleFeature feature = iterator.next();
Property intptlat = feature.getProperty("TRACTCE");
}
}
请确保选择块组作为要在Tiger-Line
中下载的图层类型,或者要从哪个相关站点下载形状文件。