2023-02-22 18:41:45 -05:00
|
|
|
#include <iostream>
|
2023-02-22 19:14:26 -05:00
|
|
|
#include <fstream>
|
|
|
|
#include <string>
|
2023-02-22 18:41:45 -05:00
|
|
|
|
|
|
|
#include "s2/s2earth.h"
|
2023-02-22 19:14:26 -05:00
|
|
|
#include "s2/s2cell_id.h"
|
2023-02-22 18:41:45 -05:00
|
|
|
#include "s2/s1angle.h"
|
|
|
|
|
2023-02-22 19:14:26 -05:00
|
|
|
using namespace std;
|
2023-02-22 18:41:45 -05:00
|
|
|
|
2023-02-22 19:14:26 -05:00
|
|
|
uint64 latLonStringsToCellId(string latString, string lonString) {
|
|
|
|
S1Angle lat = S1Angle::Degrees(atof(latString.c_str()));
|
|
|
|
S1Angle lon = S1Angle::Degrees(atof(lonString.c_str()));
|
2023-02-22 18:41:45 -05:00
|
|
|
|
2023-02-22 19:14:26 -05:00
|
|
|
S2LatLng latLng = S2LatLng(lat, lon).Normalized();
|
|
|
|
|
|
|
|
S2CellId s2CellId = S2CellId(latLng);
|
|
|
|
|
|
|
|
return s2CellId.id();
|
2023-02-22 18:41:45 -05:00
|
|
|
}
|
|
|
|
|
2023-02-22 19:14:26 -05:00
|
|
|
int main(int argc, char **argv) {
|
|
|
|
fstream file;
|
|
|
|
file.open("./sample-lat-lon.csv", fstream::in);
|
|
|
|
|
|
|
|
if (!file) {
|
|
|
|
cerr << "Could not open input file" << endl;
|
|
|
|
exit(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
string latString = "";
|
|
|
|
string lonString = "";
|
|
|
|
|
|
|
|
string header;
|
|
|
|
getline(file, header, '\n');
|
|
|
|
|
|
|
|
cout << header << ",cellid" << "\n";
|
|
|
|
|
|
|
|
while (getline(file, latString, ',')) {
|
|
|
|
getline(file, lonString, '\n') ;
|
|
|
|
uint64 generatedCellId = latLonStringsToCellId(latString, lonString);
|
|
|
|
|
|
|
|
cout << latString << "," << lonString << "," << generatedCellId << "\n";
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
2023-02-22 18:41:45 -05:00
|
|
|
}
|