我正在尝试保存一个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。
答案 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中的另一个文件,如果您要像这样缩放应用程序,则不是一个好主意。