Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人知道Java中有一个可以解析ESRI形状文件的库吗?_Java_Shapefile_Geotools - Fatal编程技术网

有人知道Java中有一个可以解析ESRI形状文件的库吗?

有人知道Java中有一个可以解析ESRI形状文件的库吗?,java,shapefile,geotools,Java,Shapefile,Geotools,我感兴趣的是为道路数据编写一个可视化程序。我想绘制线条数据来显示我所在县的所有道路 ESRI形状文件或简单的 shapefile是一种流行的地理空间文件 地理信息的矢量数据格式 信息系统软件。它是 由ESRI作为 (主要是)数据的开放规范 ESRI与其他应用程序之间的互操作性 软件产品。“形状文件” 通常指的是 包含“.shp”、“.shx”、“.dbf”和 通用前缀上的其他扩展 名称(例如,“lakes.*”)。实际的 shapefile专门与 扩展名为“.shp”的文件, 但是,仅此文件是不

我感兴趣的是为道路数据编写一个可视化程序。我想绘制线条数据来显示我所在县的所有道路

ESRI形状文件或简单的 shapefile是一种流行的地理空间文件 地理信息的矢量数据格式 信息系统软件。它是 由ESRI作为 (主要是)数据的开放规范 ESRI与其他应用程序之间的互操作性 软件产品。“形状文件” 通常指的是 包含“.shp”、“.shx”、“.dbf”和 通用前缀上的其他扩展 名称(例如,“lakes.*”)。实际的 shapefile专门与 扩展名为“.shp”的文件, 但是,仅此文件是不完整的 为了分配,就像另一个一样 支持文件是必需的

有人知道用于解析和读取行内数据的现有库吗?

有,或者更确切地说,这个类。

有一个提供对ESRI文件的读写访问权限的库。

可以。有很多罐子,你不需要它们中的大部分。然而,读取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) {}
File File=new文件(“mayshapefile.shp”);
试一试{
Map connect=new HashMap();
connect.put(“url”,file.toURI().toString());
DataStore DataStore=DataStoreFinder.getDataStore(connect);
String[]typeNames=dataStore.getTypeNames();
字符串typeName=typeNames[0];
System.out.println(“读取内容”+类型名);
FeatureSource FeatureSource=数据存储。getFeatureSource(typeName);
FeatureCollection集合=featureSource.getFeatures();
FeatureIterator迭代器=collection.features();
试一试{
while(iterator.hasNext()){
Feature=iterator.next();
GeometryAttribute sourceGeometry=feature.getDefaultGeometryProperty();
}
}最后{
iterator.close();
}
}捕获(可丢弃的e){}
您可以尝试使用库。它体积小,易于安装,并且具有非常简单的API。
唯一的缺点是它不读取形状文件通常附带的其他强制性和可选文件(.shx、.dbf等)。

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

我使用QGIS进行所有操作(甚至比GeoTools更多)


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

如果使用Maven编译程序,它将为您处理所有JAR。Geotools提供了关于如何开始开发的精彩教程。这是一个用于可视化地图的Swing应用程序。这个示例非常好,省去了我深入了解API文档的时间。虽然BBN的OpenMap是开源的,但它使用了一个奇怪的BBN特定许可证。这是非常允许的,但它不是标准许可证这一事实可能会在尝试将其与其他软件结合时(或在尝试获得您的合法beagles的批准时)引起问题。您能否提供一个如何使用所述API读取ESRI文件的示例?OpenMap的API是不透明的,我完全搞不懂。你知道有没有其他适合这种情况的小型易用库-reading.shx和.dbf?