[Wsplgen-commits] r129 - in trunk: . bin bin/windows src

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Mon Oct 13 17:57:56 CEST 2008


Author: mrchip
Date: 2008-10-13 17:57:51 +0200 (Mon, 13 Oct 2008)
New Revision: 129

Removed:
   trunk/bin/test_results/
Modified:
   trunk/NEWS
   trunk/bin/windows/wsplgen.exe
   trunk/src/file.cpp
   trunk/src/parameter.cpp
   trunk/src/shape.cpp
   trunk/src/tools.cpp
   trunk/src/wsplgen.cpp
   trunk/src/wsplgen.h
Log:
Einige Fehler wurden beseitigt

Modified: trunk/NEWS
===================================================================
--- trunk/NEWS	2008-09-17 08:30:13 UTC (rev 128)
+++ trunk/NEWS	2008-10-13 15:57:51 UTC (rev 129)
@@ -10,6 +10,17 @@
 // Read the file COPYING coming with WSPLGEN for details.
 //
 
+Version 1.2.6
+
+	- Die .SBN und .SBX Dateien werden nun immer gelöscht,
+	  wenn Shape-Dateien geschrieben werden.
+
+	- Stimmten die Stationierungen von Profilen und Wasserständen nicht überein,
+	  so wurde der Wasserstand nicht korrekt interpoliert. Der Fehler wurde behoben.
+	  
+	- Bei der Verwendung des Parameters -DIST (zur Festlegung des Abstandes der interpolierten Profile)
+	  wurde der angegebene Wert in km, nicht korrekt im Programm umgerechnet. Dieser Fehler wurde behoben.
+
 Version 1.2.5
 
 	- Der Parameter -NOPROJWARN wurde eingeführt.

Modified: trunk/bin/windows/wsplgen.exe
===================================================================
(Binary files differ)

Modified: trunk/src/file.cpp
===================================================================
--- trunk/src/file.cpp	2008-09-17 08:30:13 UTC (rev 128)
+++ trunk/src/file.cpp	2008-10-13 15:57:51 UTC (rev 129)
@@ -1203,46 +1203,46 @@
 		write_error(2206, "In der DBF-Datei %s' sind keine Attribute definiert\nEs müssen aber mindestens die Attibute Z und STATION definiert sein.\n", DBFFileName.c_str());
 	}
 
-	std::string StationName = "STATION";
+	std::string StationName = "KILOMETER";
 	int StationFieldIndex = DBFGetFieldIndex(hDBF, StationName.c_str());
 	if (StationFieldIndex == -1)
 	{
-		StationName = "Station";
+		StationName = "Kilometer";
 		StationFieldIndex = DBFGetFieldIndex(hDBF, StationName.c_str());
 	}
 	if (StationFieldIndex == -1)
 	{
-		StationName = "station";
+		StationName = "kilometer";
 		StationFieldIndex = DBFGetFieldIndex(hDBF, StationName.c_str());
 	}
 	if (StationFieldIndex == -1)
 	{
-		StationName = "KILOMETER";
+		StationName = "KM";
 		StationFieldIndex = DBFGetFieldIndex(hDBF, StationName.c_str());
 	}
 	if (StationFieldIndex == -1)
 	{
-		StationName = "Kilometer";
+		StationName = "Km";
 		StationFieldIndex = DBFGetFieldIndex(hDBF, StationName.c_str());
 	}
 	if (StationFieldIndex == -1)
 	{
-		StationName = "kilometer";
+		StationName = "km";
 		StationFieldIndex = DBFGetFieldIndex(hDBF, StationName.c_str());
 	}
 	if (StationFieldIndex == -1)
 	{
-		StationName = "KM";
+		StationName = "STATION";
 		StationFieldIndex = DBFGetFieldIndex(hDBF, StationName.c_str());
 	}
 	if (StationFieldIndex == -1)
 	{
-		StationName = "Km";
+		StationName = "Station";
 		StationFieldIndex = DBFGetFieldIndex(hDBF, StationName.c_str());
 	}
 	if (StationFieldIndex == -1)
 	{
-		StationName = "km";
+		StationName = "station";
 		StationFieldIndex = DBFGetFieldIndex(hDBF, StationName.c_str());
 	}
 

Modified: trunk/src/parameter.cpp
===================================================================
--- trunk/src/parameter.cpp	2008-09-17 08:30:13 UTC (rev 128)
+++ trunk/src/parameter.cpp	2008-10-13 15:57:51 UTC (rev 129)
@@ -251,7 +251,7 @@
 			}
 
 			IsSetDist = true;
-			ProfilDistance = D * 10000 * 100; // Umrechnung von km in Meter und weiter in cm
+			ProfilDistance = D * 1000 * 100; // Umrechnung von km in Meter und weiter in cm
 
 			write_fortschritt("Gewünschter Abstand der Profile: %.3f km\n", D);
 		}

Modified: trunk/src/shape.cpp
===================================================================
--- trunk/src/shape.cpp	2008-09-17 08:30:13 UTC (rev 128)
+++ trunk/src/shape.cpp	2008-10-13 15:57:51 UTC (rev 129)
@@ -494,10 +494,20 @@
 
 	if( pszBasename[i] == '.' ) pszBasename[i] = '\0';
 
+	pszFullname = (char*)SfByteRealloc(0, strlen(pszBasename) + 5);
+	
 	/* -------------------------------------------------------------------- */
+	/*      Delete the sbn and sbx files 								    */
+	/* -------------------------------------------------------------------- */
+	sprintf( pszFullname, "%s.sbn", pszBasename );
+	remove(pszFullname);
+
+	sprintf( pszFullname, "%s.sbx", pszBasename );
+	remove(pszFullname);
+
+	/* -------------------------------------------------------------------- */
 	/*      Open the two files so we can write their headers.               */
 	/* -------------------------------------------------------------------- */
-	pszFullname = (char*)SfByteRealloc(0, strlen(pszBasename) + 5);
 	sprintf( pszFullname, "%s.shp", pszBasename );
     fpSHP = fopen(pszFullname, "wb" );
 	if(fpSHP == NULL) return(NULL);

Modified: trunk/src/tools.cpp
===================================================================
--- trunk/src/tools.cpp	2008-09-17 08:30:13 UTC (rev 128)
+++ trunk/src/tools.cpp	2008-10-13 15:57:51 UTC (rev 129)
@@ -988,8 +988,8 @@
 	{
 		TProfil *Profil = *i;
 
-		TProfil *UnderProfil = *WspProfilList->begin();
-		TProfil *OverProfil = *WspProfilList->begin();
+		TProfil *UnderProfil = 0;
+		TProfil *OverProfil = 0;
 		for (TProfilList::iterator j=WspProfilList->begin(); j != WspProfilList->end(); j++)
 		{
 			TProfil* WspProfil = *j;
@@ -1000,11 +1000,21 @@
 				OverProfil = WspProfil;
 				break;
 			}
-			if (WspProfil->Station <= Profil->Station)	UnderProfil = WspProfil;
-			if (WspProfil->Station >= Profil->Station)	OverProfil = WspProfil;
+			if (WspProfil->Station <= Profil->Station && (UnderProfil == 0 || UnderProfil->Station < WspProfil->Station))
+			{
+				UnderProfil = WspProfil;
+			}
+			if (WspProfil->Station >= Profil->Station && (OverProfil == 0 || OverProfil->Station > WspProfil->Station))
+			{
+				OverProfil = WspProfil;
+			}
 		}
-		if (UnderProfil->Station == Profil->Station)
+		if (UnderProfil == 0 || OverProfil == 0)
 		{
+			write_error(2203, "Bei Profil %.4f konnte kein Wasserstand interpoliert werden\n", Profil->Station / 10000.0);
+		}
+		else if (UnderProfil->Station == Profil->Station)
+		{
 			Profil->Wsp = UnderProfil->Wsp;
 			if (DebugLevel >= 2) write_fortschritt("Bei Profil %.4f konnte der Wasserstand %.2f übernommen werden\n", Profil->Station / 10000.0, Profil->Wsp / 100.0);
 		}

Modified: trunk/src/wsplgen.cpp
===================================================================
--- trunk/src/wsplgen.cpp	2008-09-17 08:30:13 UTC (rev 128)
+++ trunk/src/wsplgen.cpp	2008-10-13 15:57:51 UTC (rev 129)
@@ -251,8 +251,6 @@
 
 		// Nachdem die durchschnittliche Kantenlänge bekannt ist,
 		// werden die Profile entsprechend fein interpoliert
-		// Dabei muss der Faktor zwischen Kantenlänge in Metern
-		// und Station in Centimetern beachtet werden
 		// Der Parameter muss die Einheit cm haben
 
 		if (Parameter.IsSetDist)	ProfilList->InterpoliereProfile(Parameter.ProfilDistance);

Modified: trunk/src/wsplgen.h
===================================================================
--- trunk/src/wsplgen.h	2008-09-17 08:30:13 UTC (rev 128)
+++ trunk/src/wsplgen.h	2008-10-13 15:57:51 UTC (rev 129)
@@ -10,7 +10,7 @@
 // Read the file COPYING coming with WSPLGEN for details.
 //
 
-const char Version[] = "1.2.5";
+const char Version[] = "1.2.6";
 
 // In der Datei wsplgen.h wird jetzt keine Historie mehr gespeichert.
 // Diese ist nun in der Datei NEWS zu finden



More information about the Wsplgen-commits mailing list