public Location[] GetHexCoords() { double h_lat = this.latitude; double h_lon = this.longitude; XY h_xy = GEOHEX.Location2XY(h_lon, h_lat); double h_x = h_xy.x; double h_y = h_xy.y; double h_deg = Math.Tan(Math.PI * (60.0 / 180.0)); double h_size = this.GetHexSize(); double h_top = GEOHEX.XY2Location(h_x, h_y + h_deg * h_size).latitude; double h_btm = GEOHEX.XY2Location(h_x, h_y - h_deg * h_size).latitude; double h_l = GEOHEX.XY2Location(h_x - 2 * h_size, h_y).longitude; double h_r = GEOHEX.XY2Location(h_x + 2 * h_size, h_y).longitude; double h_cl = GEOHEX.XY2Location(h_x - 1 * h_size, h_y).longitude; double h_cr = GEOHEX.XY2Location(h_x + 1 * h_size, h_y).longitude; return(new Location[] { new Location(h_lat, h_l), new Location(h_top, h_cl), new Location(h_top, h_cr), new Location(h_lat, h_r), new Location(h_btm, h_cr), new Location(h_btm, h_cl) }); }
public void ZoneGetHexSize() { foreach (String[] v in ParseCsv(GetTestFilePath("resources/GetHexSize_v3.2.csv"))) { double lat = double.Parse(v[0]); double lon = double.Parse(v[1]); int level = int.Parse(v[2]); double expected_hex_size = double.Parse(v[3]); Zone z = GEOHEX.GetZoneByLocation(lat, lon, level); Assert.AreEqual(expected_hex_size, z.GetHexSize(), LOCATION_PRECISION); } }
public void GetZoneByLocation() { foreach (string[] v in ParseCsv(GetTestFilePath("resources/GetZoneByLocation_v3.2.csv"))) { double lat = double.Parse(v[0]); double lon = double.Parse(v[1]); int level = int.Parse(v[2]); String code = v[3]; Zone zone = GEOHEX.GetZoneByLocation(lat, lon, level); Assert.AreEqual(code, zone.code); } }
public void AdjustXY() { foreach (string[] v in ParseCsv(GetTestFilePath("resources/AdjustXY_v3.2.csv"))) { long x = long.Parse(v[0]); long y = long.Parse(v[1]); int level = int.Parse(v[2]); double ex = double.Parse(v[3]); double ey = double.Parse(v[4]); XY resultXY = GEOHEX.AdjustXY(x, y, level); Assert.AreEqual(ex, resultXY.x, 0); Assert.AreEqual(ey, resultXY.y, 0); } }
public void GetXYByLocation() { foreach (String[] v in ParseCsv(GetTestFilePath("resources/GetXYByLocation_v3.2.csv"))) { double lat = double.Parse(v[0]); double lon = double.Parse(v[1]); int level = int.Parse(v[2]); double x = double.Parse(v[3]); double y = double.Parse(v[4]); XY xy = GEOHEX.GetXYByLocation(lat, lon, level); Assert.AreEqual(x, xy.x, LOCATION_PRECISION); Assert.AreEqual(y, xy.y, LOCATION_PRECISION); } }
public void GetZoneByCode() { foreach (string[] v in ParseCsv(GetTestFilePath("resources/GetZoneByCode_v3.2.csv"))) { double lat = double.Parse(v[0]); double lon = double.Parse(v[1]); int level = int.Parse(v[2]); string code = v[3]; Zone zone = GEOHEX.GetZoneByCode(code); Assert.AreEqual(zone.code, code); AssertLatitude(zone.latitude, lat); AssertLongitude(zone.longitude, lon); Assert.AreEqual(zone.GetLevel(), level); } }
public void GetZoneByXY() { foreach (string[] v in ParseCsv(GetTestFilePath("resources/GetZoneByXY_v3.2.csv"))) { double x = double.Parse(v[0]); double y = double.Parse(v[1]); double lat = double.Parse(v[2]); double lon = double.Parse(v[3]); int level = int.Parse(v[4]); String code = v[5]; Zone zone = GEOHEX.GetZoneByXY(x, y, level); AssertLatitude(lat, zone.latitude); AssertLongitude(lon, zone.longitude); Assert.AreEqual(level, zone.GetLevel()); Assert.AreEqual(code, zone.code); } }
public void GetZoneByCode() { const int MaxRepeat = 100000; TimeWatch.Reset(); { string code = "XM"; TimeWatch.Resume(); for (int repeat = 0; repeat < MaxRepeat; repeat++) { GEOHEX.GetZoneByCode(code); } TimeWatch.Pause(MaxRepeat); } TimeWatch.OutputResult("GetZoneByCode"); }
public void ZoneGetHexCoordsTest() { TimeWatch.Reset(); const int MaxReat = 1000000; { double lat = 33.35137950146622; double lon = 135.6104480957031; int level = 0; Zone z = GEOHEX.GetZoneByLocation(lat, lon, level); TimeWatch.Resume(); for (int repeat = 0; repeat < MaxReat; repeat++) { z.GetHexCoords(); } TimeWatch.Pause(MaxReat); } TimeWatch.OutputResult("GetHexCoords"); }
public void AdjustXY() { const int MaxRepeat = 10000000; TimeWatch.Reset(); { int x = -10; int y = -10; int level = 0; TimeWatch.Resume(); for (int repeat = 0; repeat < MaxRepeat; repeat++) { GEOHEX.AdjustXY(x, y, level); } TimeWatch.Pause(MaxRepeat); } TimeWatch.OutputResult("AdjustXY"); }
public void GetZoneByXY() { const int MaxRepeat = 100000; TimeWatch.Reset(); { double x = 5; double y = -2; int level = 0; TimeWatch.Resume(); for (int repeat = 0; repeat < MaxRepeat; repeat++) { GEOHEX.GetZoneByXY(x, y, level); } TimeWatch.Pause(MaxRepeat); } TimeWatch.OutputResult("GetZoneByXY"); }
public void GetXYByLocation() { const int MaxRepeat = 1000000; TimeWatch.Reset(); { double lat = 33.35137950146622; double lon = 135.6104480957031; int level = 0; TimeWatch.Resume(); for (int repeat = 0; repeat < MaxRepeat; repeat++) { GEOHEX.GetXYByLocation(lat, lon, level); } TimeWatch.Pause(MaxRepeat); } TimeWatch.OutputResult("GetXYByLocation"); }
public void ZoneGetHexCoordsTest() { foreach (string[] v in ParseCsv(GetTestFilePath("resources/GetHexCoords_v3.2.csv"))) { double lat = double.Parse(v[0]); double lon = double.Parse(v[1]); int level = int.Parse(v[2]); Zone z = GEOHEX.GetZoneByLocation(lat, lon, level); double[][] expectedPolygon = { new double[] { double.Parse(v[3]), double.Parse(v[4]) }, new double[] { double.Parse(v[5]), double.Parse(v[6]) }, new double[] { double.Parse(v[7]), double.Parse(v[8]) }, new double[] { double.Parse(v[9]), double.Parse(v[10]) }, new double[] { double.Parse(v[11]), double.Parse(v[12]) }, new double[] { double.Parse(v[13]), double.Parse(v[14]) }, }; AssertPolygon(expectedPolygon, z.GetHexCoords()); } }
public double GetHexSize() { return(GEOHEX.CalcHexSize(this.GetLevel())); }