61

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

ESRI Shapefile 或简称 shapefile 是一种流行的地理信息系统软件的地理空间矢量数据格式。它由 ESRI 开发和监管,作为 ESRI 和其他软件产品之间数据互操作性的(主要)开放规范。1 “shapefile”通常是指具有“.shp”、“.shx”、“.dbf”和其他扩展名的文件的集合(例如,“lakes.*”)。实际的 shapefile 与扩展名为“.shp”的文件特别相关,但是仅此文件对于分发来说是不完整的,因为需要其他支持文件。

有谁知道用于解析和读取Shapefile行数据的现有库?

4

5 回答 5

73

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) {}
于 2010-01-11T21:11:22.403 回答
9

Openmap有一个Java API,提供对 ESRI 文件的读写访问。

于 2010-01-11T21:05:38.483 回答
6

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

于 2010-01-11T21:02:43.467 回答
3

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

于 2013-06-01T15:15:08.670 回答
0

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

我使用 QGIS,它比 GeoTools 完成所有操作(甚至更多)。

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

于 2014-06-27T10:22:37.393 回答