重命名形状文件,该文件使用Geotools - JAVA保存为表名



我正在尝试保存一个工作正常的形状文件,如下所述 这个问题链接:

将新的列属性添加到 shapefile 并使用 Geotools Java 将其保存到数据库

我面临的问题是 shapefile 的文件名,其中包含一个空格,结果它保存为%20等效于空格 n db。

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

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

编辑

使用地理工具 我使用以下代码来存储表名称:

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。

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

代码片段如下:

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 中的 renameTo 更改文件名,但这会导致更改 shapefile 中的另一个文件,如果您像这样扩展应用程序,这不是一个好主意。

最新更新