forked from ExternalVendorCode/Signal-Server
Greenwich LIDAR bugfix
This commit is contained in:
@@ -1,4 +1,8 @@
|
|||||||
SIGNAL SERVER CHANGELOG
|
SIGNAL SERVER CHANGELOG
|
||||||
|
2.7.1 - 14 Jan 2016
|
||||||
|
LIDAR longitude bugfix for Greenwich meridian tiles
|
||||||
|
Adjusted ITM parameters warnings
|
||||||
|
|
||||||
2.7 - 03 Jan 2016
|
2.7 - 03 Jan 2016
|
||||||
Added support for LIDAR data in ASCII grid format with WGS84 bounds
|
Added support for LIDAR data in ASCII grid format with WGS84 bounds
|
||||||
Increased resolution to +54000 pixels per degree (2m)
|
Increased resolution to +54000 pixels per degree (2m)
|
||||||
|
3
common.h
3
common.h
@@ -102,6 +102,9 @@ extern double dBm;
|
|||||||
extern double loss;
|
extern double loss;
|
||||||
extern double field_strength;
|
extern double field_strength;
|
||||||
extern __thread double *elev;
|
extern __thread double *elev;
|
||||||
|
extern double westoffset;
|
||||||
|
extern double eastoffset;
|
||||||
|
extern double delta;
|
||||||
|
|
||||||
extern char string[];
|
extern char string[];
|
||||||
extern char sdf_path[];
|
extern char sdf_path[];
|
||||||
|
53
inputs.cc
53
inputs.cc
@@ -18,6 +18,8 @@ int loadLIDAR(char *filename)
|
|||||||
yurcorner 51.878474
|
yurcorner 51.878474
|
||||||
cellsize 2
|
cellsize 2
|
||||||
NODATA_value -9999
|
NODATA_value -9999
|
||||||
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int x, y, width, height, cellsize;
|
int x, y, width, height, cellsize;
|
||||||
@@ -40,28 +42,32 @@ int loadLIDAR(char *filename)
|
|||||||
if (fgets(line, 20, fd) != NULL) {
|
if (fgets(line, 20, fd) != NULL) {
|
||||||
height=atoi(pch);
|
height=atoi(pch);
|
||||||
}
|
}
|
||||||
fgets(line, 21, fd); //
|
fgets(line, 24, fd); //
|
||||||
|
|
||||||
if (fgets(line, 22, fd) != NULL) {
|
if (fgets(line, 24, fd) != NULL) {
|
||||||
xll=atof(pch);
|
//xll=atof(pch);
|
||||||
|
sscanf(pch, "%lf", &xll);
|
||||||
}
|
}
|
||||||
|
|
||||||
fgets(line, 21, fd); //
|
fgets(line, 24, fd); //
|
||||||
|
|
||||||
if (fgets(line, 22, fd) != NULL) {
|
if (fgets(line, 24, fd) != NULL) {
|
||||||
yll=atof(pch);
|
//yll=atof(pch);
|
||||||
|
sscanf(pch, "%lf", &yll);
|
||||||
}
|
}
|
||||||
|
|
||||||
fgets(line, 21, fd); //
|
fgets(line, 24, fd); //
|
||||||
|
|
||||||
if (fgets(line, 22, fd) != NULL) {
|
if (fgets(line, 24, fd) != NULL) {
|
||||||
xur=atof(pch);
|
//xur=atof(pch);
|
||||||
|
sscanf(pch, "%lf", &xur);
|
||||||
}
|
}
|
||||||
|
|
||||||
fgets(line, 21, fd); //
|
fgets(line, 24, fd); //
|
||||||
|
|
||||||
if (fgets(line, 22, fd) != NULL) {
|
if (fgets(line, 24, fd) != NULL) {
|
||||||
yur=atof(pch);
|
//yur=atof(pch);
|
||||||
|
sscanf(pch, "%lf", &yur);
|
||||||
}
|
}
|
||||||
|
|
||||||
fgets(line, 21, fd); //
|
fgets(line, 21, fd); //
|
||||||
@@ -69,6 +75,17 @@ int loadLIDAR(char *filename)
|
|||||||
if (fgets(line, 21, fd) != NULL) {
|
if (fgets(line, 21, fd) != NULL) {
|
||||||
cellsize=atoi(pch);
|
cellsize=atoi(pch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
eastoffset=xur;
|
||||||
|
westoffset=xll;
|
||||||
|
|
||||||
|
// Greenwich straddling hack
|
||||||
|
if(xll < 0 && xur > 0){
|
||||||
|
delta = (xur - xll);
|
||||||
|
xur=0.0;
|
||||||
|
xll=delta;
|
||||||
|
delta=eastoffset; // add to Tx longitude later
|
||||||
|
}else{
|
||||||
|
|
||||||
// Transform WGS84 longitudes into 'west' values as society finishes east of Greenwich ;)
|
// Transform WGS84 longitudes into 'west' values as society finishes east of Greenwich ;)
|
||||||
if(xll > 0){
|
if(xll > 0){
|
||||||
@@ -83,17 +100,23 @@ int loadLIDAR(char *filename)
|
|||||||
if(xur < 0){
|
if(xur < 0){
|
||||||
xur=xur*-1;
|
xur=xur*-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(debug){
|
||||||
|
fprintf(stdout,"yll %.7f yur %.7f xur %.7f xll %.7f delta %.6f\n",yll,yur,xur,xll,delta);
|
||||||
|
}
|
||||||
dem[0].min_north=yll;
|
dem[0].min_north=yll;
|
||||||
min_north=yll;
|
min_north=yll;
|
||||||
dem[0].max_north=yur;
|
dem[0].max_north=yur;
|
||||||
max_north=yur;
|
max_north=yur;
|
||||||
|
|
||||||
dem[0].min_west=xur;
|
dem[0].min_west=xur;
|
||||||
min_west=xur;
|
min_west=xur;
|
||||||
dem[0].max_west=xll;
|
dem[0].max_west=xll;
|
||||||
max_west=xll;
|
max_west=xll;
|
||||||
if(debug){
|
|
||||||
fprintf(stdout,"yll %.2f yur %.2f xur %.2f xll %.2f\n",yll,yur,xur,xll);
|
|
||||||
}
|
|
||||||
if(width!=height){
|
if(width!=height){
|
||||||
fprintf(stdout,"LIDAR tile is not a square. Rows != Columns\n");
|
fprintf(stdout,"LIDAR tile is not a square. Rows != Columns\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
12
main.cc
12
main.cc
@@ -1,4 +1,4 @@
|
|||||||
double version = 2.7;
|
double version = 2.7.1;
|
||||||
/****************************************************************************\
|
/****************************************************************************\
|
||||||
* Signal Server: Server optimised SPLAT! by Alex Farrant, M6ZUJ *
|
* Signal Server: Server optimised SPLAT! by Alex Farrant, M6ZUJ *
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
@@ -44,7 +44,7 @@ char string[255], sdf_path[255], udt_file[255], opened = 0, gpsav =
|
|||||||
double earthradius, max_range = 0.0, forced_erp, dpp, ppd, yppd,
|
double earthradius, max_range = 0.0, forced_erp, dpp, ppd, yppd,
|
||||||
fzone_clearance = 0.6, forced_freq, clutter, lat, lon, txh, tercon, terdic,
|
fzone_clearance = 0.6, forced_freq, clutter, lat, lon, txh, tercon, terdic,
|
||||||
north, east, south, west, dBm, loss, field_strength,
|
north, east, south, west, dBm, loss, field_strength,
|
||||||
min_north = 90, max_north = -90, min_west = 360, max_west = -1;
|
min_north = 90, max_north = -90, min_west = 360, max_west = -1, westoffset=0, eastoffset=0, delta=0;
|
||||||
|
|
||||||
int ippd, mpi,
|
int ippd, mpi,
|
||||||
max_elevation = -32768, min_elevation = 32768, bzerror, contour_threshold,
|
max_elevation = -32768, min_elevation = 32768, bzerror, contour_threshold,
|
||||||
@@ -1538,6 +1538,7 @@ int main(int argc, char *argv[])
|
|||||||
min_lat = 70;
|
min_lat = 70;
|
||||||
max_lat = -70;
|
max_lat = -70;
|
||||||
|
|
||||||
|
|
||||||
min_lon = (int)floor(tx_site[0].lon);
|
min_lon = (int)floor(tx_site[0].lon);
|
||||||
max_lon = (int)floor(tx_site[0].lon);
|
max_lon = (int)floor(tx_site[0].lon);
|
||||||
|
|
||||||
@@ -1580,6 +1581,9 @@ int main(int argc, char *argv[])
|
|||||||
yppd=rint(ippd / (max_west-min_west));
|
yppd=rint(ippd / (max_west-min_west));
|
||||||
height=ippd;
|
height=ippd;
|
||||||
width=ippd;
|
width=ippd;
|
||||||
|
if(delta>0){
|
||||||
|
tx_site[0].lon+=delta;
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
LoadTopoData(max_lon, min_lon, max_lat, min_lat);
|
LoadTopoData(max_lon, min_lon, max_lat, min_lat);
|
||||||
if (area_mode || topomap) {
|
if (area_mode || topomap) {
|
||||||
@@ -1717,9 +1721,9 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
// Print WGS84 bounds
|
// Print WGS84 bounds
|
||||||
fprintf(stdout, "|%.6f", north);
|
fprintf(stdout, "|%.6f", north);
|
||||||
fprintf(stdout, "|%.6f", east);
|
fprintf(stdout, "|%.6f", eastoffset);
|
||||||
fprintf(stdout, "|%.6f", south);
|
fprintf(stdout, "|%.6f", south);
|
||||||
fprintf(stdout, "|%.6f|", west);
|
fprintf(stdout, "|%.6f|", westoffset);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
strncpy(tx_site[0].name, "Tx", 3);
|
strncpy(tx_site[0].name, "Tx", 3);
|
||||||
|
@@ -1564,16 +1564,16 @@ void PathReport(struct site source, struct site destination, char *name,
|
|||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
fprintf(fd2,
|
fprintf(fd2,
|
||||||
"\n Warning: A combination of parameters is out of range.\n");
|
"\n Warning: A combination of parameters is out of range for this model.\n");
|
||||||
fprintf(fd2,
|
fprintf(fd2,
|
||||||
" Results are probably invalid.\n");
|
" Results should be used with caution.\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fprintf(fd2,
|
fprintf(fd2,
|
||||||
"\n Warning: Some parameters are out of range.\n");
|
"\n Warning: Some parameters are out of range for this model.\n");
|
||||||
fprintf(fd2,
|
fprintf(fd2,
|
||||||
" Results are probably invalid.\n");
|
" Results should be used with caution.\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user