int main(int argc, char **argv) { Args args(argc, argv, "PATH"); const char *map_path = args.ExpectNext(); args.ExpectEnd(); char jp2_path[4096]; strcpy(jp2_path, map_path); strcat(jp2_path, DIR_SEPARATOR_S "terrain.jp2"); TCHAR j2w_path[4096]; _tcscpy(j2w_path, PathName(map_path)); _tcscat(j2w_path, _T(DIR_SEPARATOR_S) _T("terrain.j2w")); NullOperationEnvironment operation; RasterTileCache rtc; if (!rtc.LoadOverview(jp2_path, j2w_path, operation)) { fprintf(stderr, "LoadOverview failed\n"); return EXIT_FAILURE; } GeoBounds bounds = rtc.GetBounds(); printf("bounds = %f|%f - %f|%f\n", (double)bounds.GetWest().Degrees(), (double)bounds.GetNorth().Degrees(), (double)bounds.GetEast().Degrees(), (double)bounds.GetSouth().Degrees()); do { rtc.UpdateTiles(jp2_path, rtc.GetWidth() / 2, rtc.GetHeight() / 2, 1000); } while (rtc.IsDirty()); return EXIT_SUCCESS; }
void RasterProjection::Set(const GeoBounds &bounds, unsigned width, unsigned height) { x_scale = double(width) / bounds.GetWidth().Native(); left = AngleToWidth(bounds.GetWest()); y_scale = double(height) / bounds.GetHeight().Native(); top = AngleToHeight(bounds.GetNorth()); }
void RasterProjection::Set(const GeoBounds &bounds, unsigned width, unsigned height) { x_scale = fixed(width) / bounds.GetWidth().Native(); left = int(bounds.GetWest().Native() * x_scale); y_scale = fixed(height) / bounds.GetHeight().Native(); top = int(bounds.GetNorth().Native() * y_scale); }
gcc_pure static inline rectObj ConvertRect(const GeoBounds &br) { rectObj dest; dest.minx = (double)br.GetWest().Degrees(); dest.maxx = (double)br.GetEast().Degrees(); dest.miny = (double)br.GetSouth().Degrees(); dest.maxy = (double)br.GetNorth().Degrees(); return dest; }
int main(int argc, char **argv) { Args args(argc, argv, "PATH"); const auto map_path = args.ExpectNext(); args.ExpectEnd(); ZZIP_DIR *dir = zzip_dir_open(map_path, nullptr); if (dir == nullptr) { fprintf(stderr, "Failed to open %s\n", map_path); return EXIT_FAILURE; } NullOperationEnvironment operation; RasterTileCache rtc; if (!LoadTerrainOverview(dir, rtc, operation)) { fprintf(stderr, "LoadOverview failed\n"); zzip_dir_close(dir); return EXIT_FAILURE; } GeoBounds bounds = rtc.GetBounds(); printf("bounds = %f|%f - %f|%f\n", (double)bounds.GetWest().Degrees(), (double)bounds.GetNorth().Degrees(), (double)bounds.GetEast().Degrees(), (double)bounds.GetSouth().Degrees()); SharedMutex mutex; do { UpdateTerrainTiles(dir, rtc, mutex, rtc.GetWidth() / 2, rtc.GetHeight() / 2, 1000); } while (rtc.IsDirty()); zzip_dir_close(dir); return EXIT_SUCCESS; }
int main(int argc, char **argv) { plan_tests(38); GeoPoint g(Angle::Degrees(2), Angle::Degrees(4)); GeoBounds b(g); ok1(equals(b.GetEast(), 2)); ok1(equals(b.GetWest(), 2)); ok1(equals(b.GetNorth(), 4)); ok1(equals(b.GetSouth(), 4)); ok1(b.IsEmpty()); g.latitude = Angle::Degrees(6); g.longitude = Angle::Degrees(8); b.Extend(g); ok1(equals(b.GetEast(), 8)); ok1(equals(b.GetWest(), 2)); ok1(equals(b.GetNorth(), 6)); ok1(equals(b.GetSouth(), 4)); ok1(!b.IsEmpty()); g = b.GetCenter(); ok1(equals(g.latitude, 5)); ok1(equals(g.longitude, 5)); ok1(b.IsInside(Angle::Degrees(7), Angle::Degrees(4.5))); ok1(!b.IsInside(Angle::Degrees(9), Angle::Degrees(4.5))); ok1(!b.IsInside(Angle::Degrees(7), Angle::Degrees(1))); ok1(!b.IsInside(Angle::Degrees(9), Angle::Degrees(1))); b = b.Scale(2); ok1(equals(b.GetEast(), 11)); ok1(equals(b.GetWest(), -1)); ok1(equals(b.GetNorth(), 7)); ok1(equals(b.GetSouth(), 3)); b = b.Scale(0.5); ok1(equals(b.GetEast(), 8)); ok1(equals(b.GetWest(), 2)); ok1(equals(b.GetNorth(), 6)); ok1(equals(b.GetSouth(), 4)); GeoBounds c = MakeGeoBounds(2, 6, 8, 4); ok1(c.Overlaps(b)); ok1(c.IntersectWith(b)); ok1(equals(c.GetWest(), 2)); ok1(equals(c.GetNorth(), 6)); ok1(equals(c.GetEast(), 8)); ok1(equals(c.GetSouth(), 4)); GeoBounds d = MakeGeoBounds(2, 6, 7, 5); ok1(c.Overlaps(d)); ok1(c.IntersectWith(d)); ok1(equals(c.GetWest(), 2)); ok1(equals(c.GetNorth(), 6)); ok1(equals(c.GetEast(), 7)); ok1(equals(c.GetSouth(), 5)); d = MakeGeoBounds(8, 6, 1, 5); ok1(!c.Overlaps(d)); ok1(!c.IntersectWith(d)); return exit_status(); }