重命名使用Geotools保存为TableName的形状文件-JAVA

时间:2018-10-19 18:35:44

标签: java geotools

我正在尝试保存一个shapefile,该文件可以正常工作,下面是此问题链接:

Add new column attribute to the shapefile and save it to database using Geotools Java

我面临的问题是shapefile的 fileName ,其中包含空格,结果另存为%20,相当于空格n db。

例如: New File abc.shp ==> New%20File%20abc(表名)

我知道我们可以重命名filePath,但就我而言,我想重命名所选的文件,而不是在文件系统上重命名文件。

编辑

使用Geotools我正在使用以下代码存储tableName:

  File FilePath = new File("/users/New File abc.shp");
 FileDataStore ds = FileDataStoreFinder.getDataStore(new File(FilePath.toString()));
    SimpleFeatureType schema = ds.getSchema();
    // create new schema
    SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
    builder.setName(schema.getName());
    builder.setSuperType((SimpleFeatureType) schema.getSuper());
    builder.addAll(schema.getAttributeDescriptors());

    // build new schema
    SimpleFeatureType nSchema = builder.buildFeatureType();
    System.out.println("Shapefile table info : " + nSchema);

是否可以使用Java进行任何操作,或者是否可以使用Geotools解决方案。我正在使用的数据库是PostGIS。

1 个答案:

答案 0 :(得分:1)

答案似乎很简单,因为我只专注于更改filePath。但是根据Ian的评论,一个简单的解决方案给了我这个主意。加载文件后,我只需要重命名架构名称。

代码段如下:

 File FilePath = new File("/users/New File abc.shp");
 FileDataStore ds = FileDataStoreFinder.getDataStore(new File(FilePath.toString()));
    SimpleFeatureType schema = ds.getSchema();
    // create new schema
    SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
    builder.setName(schema.getName().toString().replaceAll("%20", "_").replaceAll(" ", "_"));
    builder.setSuperType((SimpleFeatureType) schema.getSuper());
    builder.addAll(schema.getAttributeDescriptors());

    // build new schema
    SimpleFeatureType nSchema = builder.buildFeatureType();
    System.out.println("Shapefile table info : " + nSchema);

仅需注意,我们也可以使用java中的namedTo更改fileName,但这会导致更改shapefile中的另一个文件,如果您要像这样缩放应用程序,则不是一个好主意。