[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