Geoff McLane: Enhance testarray UI
This commit is contained in:
parent
5768581c10
commit
c366f25021
1 changed files with 95 additions and 9 deletions
|
@ -1,38 +1,124 @@
|
||||||
|
// testarray.cxx
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <simgear/compiler.h>
|
#include <simgear/compiler.h>
|
||||||
#include <simgear/bucket/newbucket.hxx>
|
#include <simgear/bucket/newbucket.hxx>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "array.hxx"
|
#include "array.hxx"
|
||||||
|
|
||||||
using std::cout;
|
using std::cout;
|
||||||
using std::endl;
|
using std::endl;
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#define M_ISDIR _S_IFDIR
|
||||||
|
#else
|
||||||
|
#define M_ISDIR __S_IFDIR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void give_help( char * name )
|
||||||
|
{
|
||||||
|
cout << "Usage: " << name << " longitude latitude work_dir" << endl;
|
||||||
|
cout << "example: " << name << " 151.18 -33.94 your\\work\\dir, for YSSY (Sydney)" << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void check_for_help( int argc, char **argv )
|
||||||
|
{
|
||||||
|
for(int i = 1; i < argc; i++)
|
||||||
|
{
|
||||||
|
char * parg = argv[i];
|
||||||
|
if(( strcmp(parg,"-h") == 0 )||
|
||||||
|
( strcmp(parg,"--help") == 0 ))
|
||||||
|
{
|
||||||
|
give_help( argv[0] );
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int is_file_or_directory( char * cur_item )
|
||||||
|
{
|
||||||
|
struct stat buf;
|
||||||
|
if( stat( cur_item, &buf ) == 0 ) {
|
||||||
|
if ( buf.st_mode & M_ISDIR )
|
||||||
|
return 1; // is directory
|
||||||
|
else
|
||||||
|
return 2; // is file
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int main( int argc, char **argv ) {
|
int main( int argc, char **argv ) {
|
||||||
double lon, lat;
|
double lon, lat;
|
||||||
|
|
||||||
if ( argc != 2 ) {
|
check_for_help(argc, argv);
|
||||||
cout << "Usage: " << argv[0] << " work_dir" << endl;
|
|
||||||
exit(-1);
|
if ( argc != 4 ) {
|
||||||
|
cout << "ERROR: Needs 3 arguments!" << endl;
|
||||||
|
give_help( argv[0] );
|
||||||
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
string work_dir = argv[1];
|
//lon = -146.248360; lat = 61.133950; // PAVD (Valdez, AK)
|
||||||
|
//lon = -110.664244; lat = 33.352890; // P13
|
||||||
lon = -146.248360; lat = 61.133950; // PAVD (Valdez, AK)
|
//lon = 150.156; lat = -38.474; // Lithgow, NSW, Australia
|
||||||
lon = -110.664244; lat = 33.352890; // P13
|
//lat = -33.943392; lon = 151.179773; // YSSY Sydney Intl tile=e150s30
|
||||||
|
|
||||||
|
// get arguments
|
||||||
|
lon = atof( argv[1] );
|
||||||
|
lat = atof( argv[2] );
|
||||||
|
string work_dir = argv[3];
|
||||||
|
|
||||||
|
if ( is_file_or_directory((char *) work_dir.c_str() ) != 1 ) {
|
||||||
|
cout << "ERROR: '" << work_dir << "' is not a valid directory!" << endl;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
if( ( lon > 180.0 ) || ( lon < -180.0 ) ) {
|
||||||
|
cout << "ERROR: logitude '" << lon << "' not in world range! -180.0 to 180.0" << endl;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
if( ( lat > 90.0 ) || ( lat < -90.0 ) ) {
|
||||||
|
cout << "ERROR: latitude '" << lat << "' not in world range! -90.0 to 90.0" << endl;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
SGBucket b( lon, lat );
|
SGBucket b( lon, lat );
|
||||||
|
cout << "input: lon=" << lon << ", lat=" << lat <<
|
||||||
|
", gives Bucket = " << b << endl;
|
||||||
|
|
||||||
string base = b.gen_base_path();
|
string base = b.gen_base_path();
|
||||||
string path = work_dir + "/" + base;
|
string path = work_dir + "/" + base;
|
||||||
|
|
||||||
|
if ( is_file_or_directory((char *) path.c_str() ) != 1 ) {
|
||||||
|
cout << "ERROR: '" << path << "' is not a valid directory!" << endl;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
string arraybase = path + "/" + b.gen_index_str();
|
string arraybase = path + "/" + b.gen_index_str();
|
||||||
cout << "arraybase = " << arraybase << endl;
|
cout << "arraybase = " << arraybase << endl;
|
||||||
|
|
||||||
|
path = arraybase + ".arr";
|
||||||
|
if ( is_file_or_directory((char *) path.c_str() ) != 2 ) {
|
||||||
|
path += ".gz";
|
||||||
|
if ( is_file_or_directory((char *) path.c_str() ) != 2 ) {
|
||||||
|
cout << "WARNING: can not locate " << arraybase << ".arr, nor .arr.gz!" << endl;
|
||||||
|
cout << "Query will probably fail, with zero result!" << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TGArray a(arraybase);
|
TGArray a(arraybase);
|
||||||
a.parse( b );
|
a.parse( b );
|
||||||
|
|
||||||
lon *= 3600;
|
lon *= 3600;
|
||||||
lat *= 3600;
|
lat *= 3600;
|
||||||
cout << " " << a.altitude_from_grid(lon, lat) << endl;
|
cout << "altitude of " << a.altitude_from_grid(lon, lat) <<
|
||||||
|
" is indicated." << endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// eof - testarray.cxx
|
||||||
|
|
Loading…
Reference in a new issue