raw2ascii, demchop, and SRTM-30 are obsolete.
This commit is contained in:
parent
ba4d58675a
commit
0739823db6
8 changed files with 17 additions and 175 deletions
48
README
48
README
|
@ -46,56 +46,26 @@ Preprocessing Terrain
|
||||||
|
|
||||||
TerraGear supports several terrain data sources:
|
TerraGear supports several terrain data sources:
|
||||||
|
|
||||||
1. 30-arcsec SRTM based terrain data covering the world (recommended
|
1. [Preferred] SRTM (version 3):
|
||||||
over other 30-arcsec data sources):
|
Void filled, 1-arc-sec and 3-arc-sec, near worldwide coverage.
|
||||||
|
|
||||||
ftp://edcsgs9.cr.usgs.gov/pub/data/srtm/SRTM30/
|
https://e4ftl01.cr.usgs.gov/MEASURES/SRTMGL1.003/
|
||||||
|
|
||||||
I don't recall the details at the moment for processing this data.
|
a) Chop up each .zip files using "Prep/DemChop/hgtchop"
|
||||||
Probably similar to the processing of the GLOBE data.
|
|
||||||
|
|
||||||
2. 30-arcsec world wide data: GLOBE project:
|
|
||||||
|
|
||||||
http://www.ngdc.noaa.gov/seg/topo/globe.shtml
|
|
||||||
|
|
||||||
a) First convert the "bin" DEM format to "ascii" DEM format using
|
|
||||||
"Prep/DemRaw2ascii/raw2ascii"
|
|
||||||
|
|
||||||
b) Then process the resulting files with "Prep/DemChop/demchop"
|
|
||||||
|
|
||||||
|
|
||||||
3. 30-arcsec world wide data: GTOPO30 data:
|
2. SRTM (version 1 & 2):
|
||||||
|
May contain voids, 1-arc-sec and 3-arc-sec, near worldwide coverage.
|
||||||
http://edcwww.cr.usgs.gov/landdaac/gtopo30/gtopo30.html
|
|
||||||
|
|
||||||
a) First convert the "bin" DEM format to "ascii" DEM format using
|
|
||||||
"Prep/DemRaw2ascii/raw2ascii"
|
|
||||||
|
|
||||||
b) Then process the resulting files with "Prep/DemChop/demchop"
|
|
||||||
|
|
||||||
|
|
||||||
4. SRTM (version 1 & 2) (1 and 3-arcsec nearly world wide coverage):
|
|
||||||
|
|
||||||
ftp://edcsgs9.cr.usgs.gov/pub/data/srtm/
|
ftp://edcsgs9.cr.usgs.gov/pub/data/srtm/
|
||||||
|
|
||||||
a) Chop up each .zip files using "Prep/DemChop/hgtchop"
|
a) Chop up each .zip files using "Prep/DemChop/hgtchop"
|
||||||
|
|
||||||
|
|
||||||
5. 3-arcsec ASCII DEM files:
|
|
||||||
|
|
||||||
Generally, I recommend using the SRTM data over this older data
|
|
||||||
set, however in places like Alaska, there is no SRTM coverage so
|
|
||||||
this data is better than the 30 arcsec data.
|
|
||||||
|
|
||||||
http://edcwww.cr.usgs.gov/doc/edchome/ndcdb/ndcdb.html
|
|
||||||
|
|
||||||
a) Create the .arr.gz files using the "Prep/DemChop/demchop" utility.
|
|
||||||
|
|
||||||
|
|
||||||
The result for any of these terrain sources should be a "work" tree
|
The result for any of these terrain sources should be a "work" tree
|
||||||
with a .arr.gz file for each FG tile.
|
with a .arr.gz file for each FG tile.
|
||||||
|
|
||||||
6. SRTM data comes with 'voids'. These are areas where their
|
3. SRTM versions 1 & 2 come with 'voids'. These are areas where their
|
||||||
automated data processing system could not reliably determine the
|
automated data processing system could not reliably determine the
|
||||||
elevation. Often this happens over water, or over mountain peaks.
|
elevation. Often this happens over water, or over mountain peaks.
|
||||||
There is a big chunk of the Grand Canyon missing, a big chunk of
|
There is a big chunk of the Grand Canyon missing, a big chunk of
|
||||||
|
@ -106,13 +76,13 @@ with a .arr.gz file for each FG tile.
|
||||||
I half trust is the USGS 3 arcsec DEM data for the USA. So we
|
I half trust is the USGS 3 arcsec DEM data for the USA. So we
|
||||||
can't fix voids outside the USA right now.
|
can't fix voids outside the USA right now.
|
||||||
|
|
||||||
In the same directory as DemChop and HgtChop there is a "fillvoids"
|
In the same directory as HgtChop there is a "fillvoids"
|
||||||
program. You might wish to run it with something like the
|
program. You might wish to run it with something like the
|
||||||
following command line:
|
following command line:
|
||||||
|
|
||||||
find /export/fgfs05/curt/Work/SRTM2-North_America3 -name '*.arr.gz' -exec ./fillvoids {} /stage/fgfs05/curt/Work/USGS-DEM-USA-3 \;
|
find /export/fgfs05/curt/Work/SRTM2-North_America3 -name '*.arr.gz' -exec ./fillvoids {} /stage/fgfs05/curt/Work/USGS-DEM-USA-3 \;
|
||||||
|
|
||||||
7. After you create the .arr.gz files you have to create a
|
4. After you create the .arr.gz files you have to create a
|
||||||
corresponding .fit.gz file for each of these. This is a data
|
corresponding .fit.gz file for each of these. This is a data
|
||||||
reduction step which fits a set of polygons to the raw terrain with
|
reduction step which fits a set of polygons to the raw terrain with
|
||||||
a set of constraints on the maximum error allowed relative to the
|
a set of constraints on the maximum error allowed relative to the
|
||||||
|
|
|
@ -23,7 +23,6 @@ under Windows. If running the tools from the standard Win32 command
|
||||||
prompt a lot of the tools have problems with directory creation - with
|
prompt a lot of the tools have problems with directory creation - with
|
||||||
the tools that try to create many subdirectories this can be a major
|
the tools that try to create many subdirectories this can be a major
|
||||||
problem. It is much better to run the tools from a Cygwin bash shell
|
problem. It is much better to run the tools from a Cygwin bash shell
|
||||||
- in this case only raw2ascii has a directory creation problem - the
|
- the output directory specified on the command line needs to be
|
||||||
output directory specified on the command line needs to be manually
|
manually created.
|
||||||
created.
|
|
||||||
|
|
||||||
|
|
14
README.howto
14
README.howto
|
@ -21,24 +21,18 @@ Preparation and Preprocessing
|
||||||
1) DEM data.
|
1) DEM data.
|
||||||
|
|
||||||
As the first step you have to download DEM for the area you need. (You
|
As the first step you have to download DEM for the area you need. (You
|
||||||
can get them from USGS site). If this is a 30 arc sec DEM (which is most
|
can get them from USGS site).
|
||||||
probable) you need to transfer this file into ASCII format using
|
|
||||||
raw2ascii
|
|
||||||
|
|
||||||
Usage: ./raw2ascii <input_file_basename> <output_dir>
|
|
||||||
|
|
||||||
Here output dir is quite arbitrary as we will remove all the files from
|
|
||||||
it later.
|
|
||||||
Then you have to chop files that we got into the tiles used for the
|
Then you have to chop files that we got into the tiles used for the
|
||||||
scenery generation. You should use demchop for this. As we already have
|
scenery generation. You should use hgtchop for this. As we already have
|
||||||
a number of files I'm using the following Perl script
|
a number of files I'm using the following Perl script
|
||||||
|
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
my @files=glob("./*.dem");
|
my @files=glob("./*.hgt");
|
||||||
my $size=@files;
|
my $size=@files;
|
||||||
for (my $i=0;$i<$size;$i++) {
|
for (my $i=0;$i<$size;$i++) {
|
||||||
system("demchop $files[$i] /home/anovikov/w020n90/Work/DEM-30");
|
system("hgtchop $files[$i] /home/anovikov/w020n90/Work/SRTM-3");
|
||||||
}
|
}
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,5 @@
|
||||||
include_directories(${PROJECT_SOURCE_DIR}/src/Lib/terragear)
|
include_directories(${PROJECT_SOURCE_DIR}/src/Lib/terragear)
|
||||||
|
|
||||||
add_executable(demchop demchop.cxx)
|
|
||||||
|
|
||||||
target_link_libraries(demchop
|
|
||||||
DEM
|
|
||||||
${ZLIB_LIBRARY}
|
|
||||||
${SIMGEAR_CORE_LIBRARIES}
|
|
||||||
${SIMGEAR_CORE_LIBRARY_DEPENDENCIES})
|
|
||||||
|
|
||||||
install(TARGETS demchop RUNTIME DESTINATION bin)
|
|
||||||
|
|
||||||
add_executable(hgtchop hgtchop.cxx)
|
add_executable(hgtchop hgtchop.cxx)
|
||||||
|
|
||||||
target_link_libraries(hgtchop
|
target_link_libraries(hgtchop
|
||||||
|
|
|
@ -1,104 +0,0 @@
|
||||||
// demchop.cxx -- chop up a dem file into it's corresponding pieces and stuff
|
|
||||||
// them into the workspace directory
|
|
||||||
//
|
|
||||||
// Written by Curtis Olson, started March 1999.
|
|
||||||
//
|
|
||||||
// Copyright (C) 1997 Curtis L. Olson - http://www.flightgear.org/~curt
|
|
||||||
//
|
|
||||||
// This program is free software; you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation; either version 2 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
//
|
|
||||||
// $Id: demchop.cxx,v 1.13 2004-11-19 22:25:51 curt Exp $
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <simgear/compiler.h>
|
|
||||||
|
|
||||||
#include <chrono>
|
|
||||||
#include <iostream>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include <simgear/bucket/newbucket.hxx>
|
|
||||||
#include <simgear/debug/logstream.hxx>
|
|
||||||
#include <simgear/misc/sg_path.hxx>
|
|
||||||
|
|
||||||
#include <DEM/dem.hxx>
|
|
||||||
|
|
||||||
using std::endl;
|
|
||||||
using std::cout;
|
|
||||||
using std::string;
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
sglog().setLogLevels( SG_ALL, SG_WARN );
|
|
||||||
|
|
||||||
if ( argc != 3 ) {
|
|
||||||
SG_LOG( SG_GENERAL, SG_ALERT, "Usage " << argv[0] << " <dem_file> <work_dir>" );
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto start_time = std::chrono::high_resolution_clock::now();
|
|
||||||
|
|
||||||
string dem_name = argv[1];
|
|
||||||
string work_dir = argv[2];
|
|
||||||
|
|
||||||
SGPath sgp( work_dir );
|
|
||||||
sgp.append( "dummy" );
|
|
||||||
sgp.create_dir( 0755 );
|
|
||||||
|
|
||||||
TGDem dem(dem_name);
|
|
||||||
dem.parse();
|
|
||||||
dem.close();
|
|
||||||
|
|
||||||
SGGeod min = SGGeod::fromDeg(dem.get_originx() / 3600.0 + SG_HALF_BUCKET_SPAN,
|
|
||||||
dem.get_originy() / 3600.0 + SG_HALF_BUCKET_SPAN);
|
|
||||||
|
|
||||||
SGGeod max = SGGeod::fromDeg( (dem.get_originx() + dem.get_cols() * dem.get_col_step()) / 3600.0 - SG_HALF_BUCKET_SPAN,
|
|
||||||
(dem.get_originy() + dem.get_rows() * dem.get_row_step()) / 3600.0 - SG_HALF_BUCKET_SPAN );
|
|
||||||
SGBucket b_min( min );
|
|
||||||
SGBucket b_max( max );
|
|
||||||
|
|
||||||
if ( b_min == b_max ) {
|
|
||||||
dem.write_area( work_dir, b_min );
|
|
||||||
} else {
|
|
||||||
SGBucket b_cur;
|
|
||||||
int dx, dy, i, j;
|
|
||||||
|
|
||||||
sgBucketDiff(b_min, b_max, &dx, &dy);
|
|
||||||
cout << "DEM file spans tile boundaries" << endl;
|
|
||||||
cout << " dx = " << dx << " dy = " << dy << endl;
|
|
||||||
|
|
||||||
if ( (dx > 20) || (dy > 20) ) {
|
|
||||||
cout << "somethings really wrong!!!!" << endl;
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
for ( j = 0; j <= dy; j++ ) {
|
|
||||||
for ( i = 0; i <= dx; i++ ) {
|
|
||||||
b_cur = b_min.sibling(i, j);
|
|
||||||
dem.write_area( work_dir, b_cur );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
auto finish_time = std::chrono::high_resolution_clock::now();
|
|
||||||
std::chrono::duration<double> elapsed = finish_time - start_time;
|
|
||||||
std::cout << std::endl << "Elapsed time: " << elapsed.count() << " seconds" << std::endl << std::endl;
|
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
WORKDIR=$HOME/workdirs/world_scenery
|
|
||||||
|
|
||||||
for f in $WORKDIR/SRTM-30-ASCII/*/*.dem; do
|
|
||||||
demchop $f $WORKDIR/SRTM-30
|
|
||||||
done
|
|
|
@ -275,7 +275,7 @@ void usage(char* progname, const std::string& msg) {
|
||||||
SG_LOG(SG_GENERAL,SG_INFO, "will produce a better surface approximation.");
|
SG_LOG(SG_GENERAL,SG_INFO, "will produce a better surface approximation.");
|
||||||
SG_LOG(SG_GENERAL,SG_INFO, "");
|
SG_LOG(SG_GENERAL,SG_INFO, "");
|
||||||
SG_LOG(SG_GENERAL,SG_INFO, "The input file must be a .arr.gz file such as that produced");
|
SG_LOG(SG_GENERAL,SG_INFO, "The input file must be a .arr.gz file such as that produced");
|
||||||
SG_LOG(SG_GENERAL,SG_INFO, "by demchop or hgtchop utils.");
|
SG_LOG(SG_GENERAL,SG_INFO, "by the hgtchop utility.");
|
||||||
SG_LOG(SG_GENERAL,SG_INFO, "");
|
SG_LOG(SG_GENERAL,SG_INFO, "");
|
||||||
SG_LOG(SG_GENERAL,SG_INFO, "Force will overwrite existing .arr.gz files, even if the input is older");
|
SG_LOG(SG_GENERAL,SG_INFO, "Force will overwrite existing .arr.gz files, even if the input is older");
|
||||||
SG_LOG(SG_GENERAL,SG_INFO, "");
|
SG_LOG(SG_GENERAL,SG_INFO, "");
|
||||||
|
|
|
@ -184,7 +184,7 @@ def usage(msg=''):
|
||||||
sys.stderr.write("will produce a better surface approximation.\n")
|
sys.stderr.write("will produce a better surface approximation.\n")
|
||||||
sys.stderr.write("\n")
|
sys.stderr.write("\n")
|
||||||
sys.stderr.write("The input file must be a .arr.gz file such as that produced\n")
|
sys.stderr.write("The input file must be a .arr.gz file such as that produced\n")
|
||||||
sys.stderr.write("by demchop or hgtchop utils.\n")
|
sys.stderr.write("by the hgtchop utility.\n")
|
||||||
sys.stderr.write("\n")
|
sys.stderr.write("\n")
|
||||||
sys.stderr.write("**** NOTE ****:\n")
|
sys.stderr.write("**** NOTE ****:\n")
|
||||||
sys.stderr.write("If a directory is input all .arr files in directory will be\n")
|
sys.stderr.write("If a directory is input all .arr files in directory will be\n")
|
||||||
|
|
Loading…
Reference in a new issue