有没有人知道Java中的库可以解析ESRI Shapefiles?

时间:2010-01-11 20:57:40

标签: java shapefile geotools

我有兴趣在2009 Tiger/Line Shapefiles中为道路数据编写可视化程序。我想绘制线数据来显示我县的所有道路。

  

ESRI Shapefile或简单地说   shapefile是一种流行的地理空间   地理的矢量数据格式   信息系统软件。它是   由ESRI开发和监管的   (主要)开放数据规范   ESRI与其他方面的互操作性   软件产品。1一个“shapefile”   通常指的是一个集合   带有“.shp”,“。shx”,“。dbf”和的文件   公共前缀上的其他扩展名   名称(例如,“lakes。*”)。实际上   shapefile具体涉及到   扩展名为“.shp”的文件,   但是这个文件本身并不完整   作为分配,作为另一个   支持文件是必需的。

是否有人知道用于解析和读取Shapefiles的行数据的现有库?

5 个答案:

答案 0 :(得分:62)

GeoTools会这样做。有大量的罐子,你不需要大多数罐子。但是,读取shapefile只需几行。

File file = new File("mayshapefile.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);

  FeatureSource featureSource = dataStore.getFeatureSource(typeName);
  FeatureCollection collection = featureSource.getFeatures();
  FeatureIterator iterator = collection.features();


  try {
    while (iterator.hasNext()) {
      Feature feature = iterator.next();
      GeometryAttribute sourceGeometry = feature.getDefaultGeometryProperty();
    }
  } finally {
    iterator.close();
  }

} catch (Throwable e) {}

答案 1 :(得分:8)

OpenmapJava API,提供对ESRI文件的读写访问权。

答案 2 :(得分:5)

GeoTools,或者更确切地说是此类ShapefileDataStore

答案 3 :(得分:3)

您可以尝试使用Java ESRI Shape File Reader库。它体积小,易于安装,并且API非常简单。 唯一的缺点是它不会读取通常附带形状文件的其他强制和可选文件(.shx,.dbf等)。

答案 4 :(得分:0)

您可以直接使用GUI GIS工具,这样就无需更改GeoTools的源代码。

我使用QGIS来完成所有操作(甚至更多),而不是GeoTools。

Quantum GIS - 一个开源地理信息系统,用于编辑,合并和简化shapefile地图。另请参阅:使用Quantum GIS创建具有多个图层的地图。