1
0
Fork 0

Add an option to fgfs-construct to disable landmass processing (closes #9).

This commit is contained in:
Ralf Gerlich 2010-01-19 20:00:34 +01:00
parent 3a83772a09
commit 84cb4efe79
5 changed files with 35 additions and 5 deletions

View file

@ -47,8 +47,10 @@ using std::endl;
// Constructor.
TGClipper::TGClipper() {
nudge=0.0;
TGClipper::TGClipper():
nudge(0.0),
m_ignore_landmass(false)
{
}
@ -461,7 +463,7 @@ bool TGClipper::clip_all(const point2d& min, const point2d& max) {
water_mask.erase();
island_mask.erase();
for ( i = 0; i < TG_MAX_AREA_TYPES; i++ ) {
if ( is_landmass_area( i ) ) {
if ( is_landmass_area( i ) && !m_ignore_landmass ) {
for ( unsigned j = 0; j < (int)polys_in.polys[i].size(); ++j ) {
land_mask =
tgPolygonUnion( land_mask, polys_in.polys[i][j] );
@ -491,7 +493,7 @@ bool TGClipper::clip_all(const point2d& min, const point2d& max) {
tmp = current;
// if not a hole, clip the area to the land_mask
if ( ! is_hole_area( i ) ) {
if ( !m_ignore_landmass && !is_hole_area( i ) ) {
tmp = tgPolygonInt( tmp, land_mask );
}

View file

@ -102,6 +102,16 @@ public:
inline TGTriNodes get_fixed_elevations() const { return fixed_elevations; }
double nudge;
bool ignore_landmass() const {
return m_ignore_landmass;
}
void ignore_landmass(bool b) {
m_ignore_landmass = b;
}
protected:
bool m_ignore_landmass;
};

View file

@ -29,7 +29,11 @@
// Constructor
TGConstruct::TGConstruct() { }
TGConstruct::TGConstruct():
useUKGrid(false),
writeSharedEdges(true),
useOwnSharedEdges(false)
{ }
// Destructor

View file

@ -77,6 +77,9 @@ private:
// tile to be built should be used in addition to neighbour data
bool useOwnSharedEdges;
// flag indicating whether to ignore the landmass
bool ignoreLandmass;
// detail level constraints
int min_nodes;
int max_nodes;
@ -146,6 +149,10 @@ public:
inline bool get_use_own_shared_edges() const { return useOwnSharedEdges; }
inline void set_use_own_shared_edges( const bool b ) { useOwnSharedEdges = b; }
// ignore landmass flag
inline bool get_ignore_landmass() const { return ignoreLandmass; }
inline void set_ignore_landmass( const bool b) { ignoreLandmass = b; }
// detail level constraints
inline int get_min_nodes() const { return min_nodes; }
inline void set_min_nodes( const int n ) { min_nodes = n; }

View file

@ -335,6 +335,7 @@ static int load_polys( TGConstruct& c, const TGArray &array ) {
int count = 0;
clipper.nudge = nudge;
clipper.ignore_landmass( c.get_ignore_landmass() );
// initialize clipper
clipper.init();
@ -1046,6 +1047,7 @@ static void usage( const string name ) {
cout << " --useUKgrid" << endl;
cout << " --no-write-shared-edges" << endl;
cout << " --use-own-shared-edges" << endl;
cout << " --ignore-landmass" << endl;
cout << " ] <load directory...>" << endl;
exit(-1);
}
@ -1075,6 +1077,8 @@ int main(int argc, char **argv) {
// tile to be built should be used in addition to neighbour data
bool useOwnSharedEdges = false;
bool ignoreLandmass = false;
sglog().setLogLevels( SG_ALL, SG_DEBUG );
//
@ -1112,6 +1116,8 @@ int main(int argc, char **argv) {
writeSharedEdges = false;
} else if (arg.find("--use-own-shared-edges") == 0) {
useOwnSharedEdges = true;
} else if (arg.find("--ignore-landmass") == 0) {
ignoreLandmass = true;
} else if (arg.find("--") == 0) {
usage(argv[0]);
} else {
@ -1186,6 +1192,7 @@ int main(int argc, char **argv) {
c.set_useUKGrid( useUKgrid );
c.set_write_shared_edges( writeSharedEdges );
c.set_use_own_shared_edges( useOwnSharedEdges );
c.set_ignore_landmass( ignoreLandmass );
c.set_min_nodes( 50 );
c.set_max_nodes( (int)(TG_MAX_NODES * 0.8) );