#java #shapefile #geotools
#java #шейп-файл #геоинструменты
Вопрос:
Shapefilereader из Vivisolutions отлично работает в Windows, но в нескольких экземплярах ubuntu я получаю эту ошибку:
java.lang.Исключение StringIndexOutOfBoundsException: строковый индекс вне диапазона: 438 в java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:906) в java.lang.StringBuffer.substring(StringBuffer.java:482) в файле org.geotools.dbffile.DbfFile.ParseRecordColumn(DbfFile.java:247) в com.vividsolutions.jump.io.ShapefileReader.read(ShapefileReader.java:175)
Код для чтения шейп-файла:
public static FeatureCollection readShapefile(String shpFile)
{
File file = new File(shpFile);
if (!file.exists())
Application.logError("File does not exist " file.getName());
ShapefileReader reader = new ShapefileReader();
FeatureCollection collection = null;
try {
collection = reader.read(new DriverProperties(shpFile));
} catch (IllegalParametersException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return collection;
}
Я убедился, что на компьютере с Windows и на компьютере с Ubuntu установлена одна и та же версия java.
В ubuntu java-версия дает
java версии «1.8.0_60» Java (TM) SE Среда выполнения (сборка 1.8.0_60-b27) Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 25.60-b23, смешанный режим)
В Windows java-версия дает
java версии «1.8.0_60» Java (TM) SE Среда выполнения (сборка 1.8.0_60-b27) Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 25.60-b23, смешанный режим)
Есть ли какая-либо причина, по которой они будут вести себя по-другому? При чтении ошибки анализатор файлов geotools dbffile сталкивается с проблемой. Я провел много поисков и тестов, файл DBF, похоже, в порядке и может быть прочитан в нескольких программах, включая эту, при запуске под Windows.
Комментарии:
1. можете ли вы поделиться шейп-файлом?
2. что произойдет, если вы используете хранилище шейп-файлов GeoTools напрямую?