住宅価格とその場所 (緯度と経度の値) の非常に大きな Excel シート (約 30,000 以上) のレコードがあります。現時点では、Apache POI を使用して、Excel シートの一部を Eclipse のコンソールに解析できます。しかし、ユーザーが特定の緯度と経度の半径 x KM 以内にある場合、特定の行とその住宅価格のみを返すことは可能でしょうか?
私は、harsine 式を使用してこのようなものを計算できると信じていますが、このようなプログラムにそれをどのように実装し始めるかについて、レンガの壁にぶつかりました。
public class ExcelReader {
public static final String SAMPLE_XLSX_FILE_PATH = "./LatLongPrice.xlsx";
public static void main(String[] args) throws IOException, InvalidFormatException {
Workbook workbook = WorkbookFactory.create(new File(SAMPLE_XLSX_FILE_PATH));
// Retrieving the number of sheets in the Workbook
System.out.println("Workbook has " + workbook.getNumberOfSheets() + " Sheets : ");
// obtain a sheetIterator and iterate over it
Iterator<Sheet> sheetIterator = workbook.sheetIterator();
System.out.println("Retrieving Sheets using Iterator");
while (sheetIterator.hasNext()) {
Sheet sheet = sheetIterator.next();
System.out.println("=> " + sheet.getSheetName());
}
// Getting the Sheet at index zero
Sheet sheet = workbook.getSheetAt(0);
// Create a DataFormatter to format and get each cell's value as String
DataFormatter dataFormatter = new DataFormatter();
// Obtain a rowIterator and columnIterator and iterate over them
System.out.println("\n\nIterating over Rows and Columns using Iterator\n");
Iterator<Row> rowIterator = sheet.rowIterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
// Iteratating over the columns of the current row
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
String cellValue = dataFormatter.formatCellValue(cell);
System.out.print(cellValue + "\t");
}
System.out.println();
}
});
// Closing the workbook
workbook.close();
}