This is an automated email from the git hooks/post-receive script. sf pushed a commit to annotated tag v1.40 in repository mapcode.
commit 2d8e47b0bfe3968dce7e68353143bddd2659d970 Author: Rijn Buve <[email protected]> Date: Thu Sep 18 15:36:48 2014 +0200 Added std basics.h and added XYZ option --- example/mapcode.cpp | 80 ++++++++++++++++++++++++++++------------------------- mapcodelib/basics.h | 18 ++++++------ 2 files changed, 52 insertions(+), 46 deletions(-) diff --git a/example/mapcode.cpp b/example/mapcode.cpp index 4319a76..68983ae 100644 --- a/example/mapcode.cpp +++ b/example/mapcode.cpp @@ -88,9 +88,9 @@ static void usage(const char* appName) { printf(" Encode a lat/lon to a Mapcode. If the territory code is specified, the\n"); printf(" encoding will only succeeed if the lat/lon is located in the territory.\n"); printf("\n"); - printf(" %s [-b | --boundaries] [<extraDigits>]\n", appName); - printf(" %s [-g | --grid] <nrOfPoints> [<extraDigits>]\n", appName); - printf(" %s [-r | --random] <nrOfPoints> [<extraDigits>] [<seed>]\n", appName); + printf(" %s [-b[XYZ] | --boundaries[XYZ]] [<extraDigits>]\n", appName); + printf(" %s [-g[XYZ] | --grid[XYZ]] <nrOfPoints> [<extraDigits>]\n", appName); + printf(" %s [-r[XYZ] | --random[XYZ]] <nrOfPoints> [<extraDigits>] [<seed>]\n", appName); printf("\n"); printf(" Create a test set of lat/lon pairs based on the Mapcode boundaries database\n"); printf(" as a fixed 3D grid or random uniformly distributed set of lat/lons with their\n"); @@ -101,7 +101,7 @@ static void usage(const char* appName) { printf(" (You may wish to specify a specific seed to regenerate test cases).\n"); printf("\n"); printf(" The output format is:\n"); - printf(" <number-of-aliases> <lat-deg> <lon-deg> <x> <y> <z>\n"); + printf(" <number-of-aliases> <lat-deg> <lon-deg> [<x> <y> <z>]\n"); printf(" <territory> <mapcode> (repeated 'number-of-aliases' times)\n"); printf(" (empty lines and next record)\n"); printf(" Ranges:\n"); @@ -287,7 +287,7 @@ static const char* asCoordinate(double coord, char* target) * If iShowError != 0, then encoding errors are output to stderr, otherwise they * are ignored. */ -static void generateAndOutputMapcodes(double lat, double lon, int iShowError, int extraDigits) { +static void generateAndOutputMapcodes(double lat, double lon, int iShowError, int extraDigits, int useXYZ) { char* results[MAX_NR_OF_MAPCODE_RESULTS]; int context = 0; @@ -313,11 +313,16 @@ static void generateAndOutputMapcodes(double lat, double lon, int iShowError, in } } - double x; - double y; - double z; - convertLatLonToXYZ(lat, lon, &x, &y, &z); - printf("%d %s %s %lf %lf %lf\n", nrResults, asCoordinate(lat, 0), asCoordinate(lon, 0), x, y, z); + if (useXYZ) { + double x; + double y; + double z; + convertLatLonToXYZ(lat, lon, &x, &y, &z); + printf("%d %s %s %lf %lf %lf\n", nrResults, asCoordinate(lat, 0), asCoordinate(lon, 0), x, y, z); + } + else { + printf("%d %s %s\n", nrResults, asCoordinate(lat, 0), asCoordinate(lon, 0)); + } for (int j = 0; j < nrResults; ++j) { const char* foundMapcode = results[(j * 2)]; const char* foundTerritory = results[(j * 2) + 1]; @@ -392,6 +397,9 @@ int main(const int argc, const char** argv) // Assume no extra digits (unless overridden later. int extraDigits = 0; + // If XYZ is added to -b, -r or -g, print x, y, z coordinates + int useXYZ = 0; + // Provide usage message if no arguments specified. const char* appName = argv[0]; if (argc < 2) { @@ -486,7 +494,8 @@ int main(const int argc, const char** argv) } } } - else if ((strcmp(cmd, "-b") == 0) || (strcmp(cmd, "--boundaries") == 0)) { + else if ((strcmp(cmd, "-b") == 0) || (strcmp(cmd, "-bXYZ") == 0) || + (strcmp(cmd, "--boundaries") == 0) || (strcmp(cmd, "--boundariesXYZ") == 0)) { // ------------------------------------------------------------------ // Generate a test set based on the Mapcode boundaries. @@ -499,6 +508,7 @@ int main(const int argc, const char** argv) if (argc == 3) { extraDigits = atoi(argv[2]); } + useXYZ = (strstr(cmd, "XYZ") != 0); resetStatistics(NR_BOUNDARY_RECS); for (int i = 0; i < totalNrOfPoints; ++i) { @@ -522,33 +532,26 @@ int main(const int argc, const char** argv) // Try center. lat = (maxLat - minLat ) / 2.0; lon = (maxLon - minLon ) / 2.0; - - // Try center. - generateAndOutputMapcodes(lat, lon, 0, extraDigits); + generateAndOutputMapcodes(lat, lon, 0, extraDigits, useXYZ); // Try corners. - generateAndOutputMapcodes(minLat, minLon, 0, extraDigits); - generateAndOutputMapcodes(minLat, maxLon, 0, extraDigits); - generateAndOutputMapcodes(maxLat, minLon, 0, extraDigits); - generateAndOutputMapcodes(maxLat, maxLon, 0, extraDigits); + generateAndOutputMapcodes(minLat, minLon, 0, extraDigits, useXYZ); + generateAndOutputMapcodes(minLat, maxLon, 0, extraDigits, useXYZ); + generateAndOutputMapcodes(maxLat, minLon, 0, extraDigits, useXYZ); + generateAndOutputMapcodes(maxLat, maxLon, 0, extraDigits, useXYZ); // Try JUST inside. - double factor = 10.0; - for (int j = 1; j < 2; ++j) { - - double d = 1.0 / factor; - generateAndOutputMapcodes(minLat + d, minLon + d, 0, extraDigits); - generateAndOutputMapcodes(minLat + d, maxLon - d, 0, extraDigits); - generateAndOutputMapcodes(maxLat - d, minLon + d, 0, extraDigits); - generateAndOutputMapcodes(maxLat - d, maxLon - d, 0, extraDigits); - - // Try JUST outside. - generateAndOutputMapcodes(minLat - d, minLon - d, 0, extraDigits); - generateAndOutputMapcodes(minLat - d, maxLon + d, 0, extraDigits); - generateAndOutputMapcodes(maxLat + d, minLon - d, 0, extraDigits); - generateAndOutputMapcodes(maxLat + d, maxLon + d, 0, extraDigits); - factor = factor * 10.0; - } + const double d = 0.000001; + generateAndOutputMapcodes(minLat + d, minLon + d, 0, extraDigits, useXYZ); + generateAndOutputMapcodes(minLat + d, maxLon - d, 0, extraDigits, useXYZ); + generateAndOutputMapcodes(maxLat - d, minLon + d, 0, extraDigits, useXYZ); + generateAndOutputMapcodes(maxLat - d, maxLon - d, 0, extraDigits, useXYZ); + + // Try JUST outside. + generateAndOutputMapcodes(minLat - d, minLon - d, 0, extraDigits, useXYZ); + generateAndOutputMapcodes(minLat - d, maxLon + d, 0, extraDigits, useXYZ); + generateAndOutputMapcodes(maxLat + d, minLon - d, 0, extraDigits, useXYZ); + generateAndOutputMapcodes(maxLat + d, maxLon + d, 0, extraDigits, useXYZ); if ((i % SHOW_PROGRESS) == 0) { showProgress(i); @@ -556,8 +559,10 @@ int main(const int argc, const char** argv) } outputStatistics(); } - else if ((strcmp(cmd, "-g") == 0) || (strcmp(cmd, "--grid") == 0) || - (strcmp(cmd, "-r") == 0) || (strcmp(cmd, "--random") == 0)) { + else if ((strcmp(cmd, "-g") == 0) || (strcmp(cmd, "-gXYZ") == 0) || + (strcmp(cmd, "--grid") == 0) || (strcmp(cmd, "--gridXYZ") == 0) || + (strcmp(cmd, "-r") == 0) || (strcmp(cmd, "-rXYZ") == 0) || + (strcmp(cmd, "--random") == 0) || (strcmp(cmd, "--randomXYZ") == 0)) { // ------------------------------------------------------------------ // Generate grid test set: [-g | --grid] <nrOfPoints> [<extradigits>] @@ -592,6 +597,7 @@ int main(const int argc, const char** argv) extraDigits = atoi(argv[3]); } } + useXYZ = (strstr(cmd, "XYZ") != 0); // Statistics. resetStatistics(nrOfPoints); @@ -624,7 +630,7 @@ int main(const int argc, const char** argv) } unitToLatLonDeg(unit1, unit2, &lat, &lon); - generateAndOutputMapcodes(lat, lon, 1, extraDigits); + generateAndOutputMapcodes(lat, lon, 1, extraDigits, useXYZ); if ((i % SHOW_PROGRESS) == 0) { showProgress(i); diff --git a/mapcodelib/basics.h b/mapcodelib/basics.h index 47ca841..4040e4a 100644 --- a/mapcodelib/basics.h +++ b/mapcodelib/basics.h @@ -1,6 +1,6 @@ /* * Copyright (C) 2014 Stichting Mapcode Foundation (http://www.mapcode.com) - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -115,7 +115,7 @@ static const char *entity_iso = "" -static UWORD xdivider19[172] = { +static const UWORD xdivider19[172] = { 360, 360, 360, 360, 360, 360, 361, 361, 361, 361, 362, 362, 362, 363, 363, 363, 364, 364, 365, 366, 366, 367, 367, 368, 369, 370, 370, 371, 372, 373, @@ -136,13 +136,13 @@ static UWORD xdivider19[172] = { 23681,59485 }; -static long nc[MAXFITLONG+1] = { 1, 31, 961, 29791, 923521, 28629151, 887503681 }; +static const long nc[MAXFITLONG+1] = { 1, 31, 961, 29791, 923521, 28629151, 887503681 }; -static long xside[MAXWIDE] = { 0, 5, 31, 168, 961, 168*31, 29791, 165869, 923521, 5141947}; +static const long xside[MAXWIDE] = { 0, 5, 31, 168, 961, 168*31, 29791, 165869, 923521, 5141947}; -static long yside[MAXWIDE] = { 0, 6, 31, 176, 961, 176*31, 29791, 165869, 923521, 5141947}; +static const long yside[MAXWIDE] = { 0, 6, 31, 176, 961, 176*31, 29791, 165869, 923521, 5141947}; -static signed char decode_chars[256] = { +static const signed char decode_chars[256] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -161,14 +161,14 @@ static signed char decode_chars[256] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; -static char encode_chars[31] = { +static const char encode_chars[31] = { '0','1','2','3','4','5','6','7','8','9', 'B','C','D','F','G','H','J','K','L','M', 'N','P','Q','R','S','T','V','W','X','Y','Z' }; -static UWORD data_start[MAX_CCODE+1] = { +static const UWORD data_start[MAX_CCODE+1] = { 0, 3, 6, 9, 13, 16, 18, 19, 30, 31, 33, 35, 37, 42, 44, 47, 51, 54, 56, 58, 60, 62, 64, 68, 71, 79, 81, 116, 121, 131, @@ -232,7 +232,7 @@ static UWORD data_start[MAX_CCODE+1] = { typedef struct { long minx; long miny; long maxx; long maxy; unsigned long flags; } mminforec; #ifndef MAKE_SOURCE_DIGITAL -static mminforec mminfo[NR_RECS+1] = { +static const mminforec mminfo[NR_RECS+1] = { { 12433114, 41851944, 12548434, 41938434,0x001002b}, { 5850000, 35450000, 18560000, 55080000,0x50a0636}, { 12444000, 41899000, 12460000, 41908000,0x003063c}, -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/mapcode.git _______________________________________________ Pkg-grass-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel

