Переименовать файл формы, который сохраняется как TableName с помощью Geotools - JAVA - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь сохранить шейп-файл, который отлично работает, как следует из этой ссылки на вопрос здесь:

Добавить новый атрибут столбца в шейп-файл и сохранить его в базе данных, используя Geotools Java

Проблема, с которой я сталкиваюсь, связана с fileName шейп-файла, который содержит пробел , и получается, что %20 эквивалентен пробелу n дБ.

Например: New File abc.shp ==> New%20File%20abc (TableName)

Я знаю, что мы можем переименовать 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);

Есть ли способ сделать это с помощьюЯва или есть какое-то решение с использованием Geotools.Используемая мной БД - PostGIS.

1 Ответ

0 голосов
/ 22 октября 2018

Ответ кажется довольно простым, потому что я сосредоточился только на изменении 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);

Просто обратите внимание, мы могли бы также изменить fileName, используя renameTo в Java,но это приводит к изменению другого файла в шейп-файле, что не очень хорошая идея, если вы масштабируете такое приложение.

...