This is an automated email from the git hooks/post-receive script.

sebastic-guest pushed a commit to branch upstream-master
in repository pktools.

commit 2c6c02f05f63a4a2fc4673e58e632bad439d47cd
Author: Pieter Kempeneers <kempe...@gmail.com>
Date:   Tue Dec 2 15:14:28 2014 +0100

    pkextract: removed redundancy in SetFrom and SetGeometry, pkkalman: 
introduced negative deltaObs
---
 ChangeLog             |  2 +-
 src/apps/pkextract.cc | 96 ++++++++++++++++++++++++++++++++++-----------------
 src/apps/pkkalman.cc  | 15 ++++++--
 3 files changed, 78 insertions(+), 35 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 602d788..bdc27ac 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -330,7 +330,7 @@ version 2.6.1
        Support nodata values for filtering in spectral/temporal domain (see 
ticket #43713)
  - pkextract
        extracting with absolute threshold (negative value) was selecting 1 
extra sample unit
-       debug: Order of SetGeometry must be before SetFrom caused bad vector 
features (First SetGeometry, then SetFrom)
+       debug: removed (redundant?) SetGeometry after SetFrom when readFeature 
was of appropriate geometry type. This caused wrong polygons in output vectro 
dataset
  - pksvm
        support for mask in geo coordinates (does not need to be in same 
dimensions as input raster dataset, only in same projection)
  - pkann
diff --git a/src/apps/pkextract.cc b/src/apps/pkextract.cc
index 18cfe0a..e65124f 100644
--- a/src/apps/pkextract.cc
+++ b/src/apps/pkextract.cc
@@ -1025,12 +1025,17 @@ int main(int argc, char *argv[])
                      writePointFeature = 
OGRFeature::CreateFeature(writeLayer->GetLayerDefn());
                    if(verbose_opt[0]>1)
                      std::cout << "copying fields from polygons " << std::endl;
-                   writePointFeature->SetGeometry(&thePoint);
+                   //Geometry of readFeature and writePointFeature are both 
wkbPoint
+                   //attributes AND geometry are copied with SetFrom
+                   //test
+                   // writePointFeature->SetGeometry(&thePoint);
                    if(writePointFeature->SetFrom(readFeature)!= OGRERR_NONE)
                      cerr << "writing feature failed" << std::endl;
-                   OGRGeometry *updateGeometry;
-                   updateGeometry = writePointFeature->GetGeometryRef();
-                   OGRPoint *poPoint = (OGRPoint *) updateGeometry;
+
+                   
assert(wkbFlatten(writePointFeature->GetGeometryRef()->getGeometryType()) == 
wkbPoint);
+                   // OGRGeometry *updateGeometry;
+                   // updateGeometry = writePointFeature->GetGeometryRef();
+                   // OGRPoint *poPoint = (OGRPoint *) updateGeometry;
                    if(verbose_opt[0]>1)
                      std::cout << "write feature has " << 
writePointFeature->GetFieldCount() << " fields" << std::endl;
                  }
@@ -1119,9 +1124,14 @@ int main(int argc, char *argv[])
                // writePolygon.addRing(&writeRing);//already done
                // writePolygon.closeRings();//already done
                //write geometry of writePolygon
-               writePolygonFeature->SetGeometry(&writePolygon);
+               //test
+               // writePolygonFeature->SetGeometry(&writePolygon);
                if(writePolygonFeature->SetFrom(readFeature)!= OGRERR_NONE)
                  cerr << "writing feature failed" << std::endl;
+               //test
+               writePolygonFeature->SetGeometry(&writePolygon);
+               
assert(wkbFlatten(writePolygonFeature->GetGeometryRef()->getGeometryType()) == 
wkbPolygon);
+
                if(verbose_opt[0]>1)
                  std::cout << "copying new fields write polygon " << std::endl;
                if(verbose_opt[0]>1)
@@ -1132,12 +1142,17 @@ int main(int argc, char *argv[])
                //create feature
                if(verbose_opt[0]>1)
                  std::cout << "copying fields from polygons " << std::endl;
-               writeCentroidFeature->SetGeometry(&writeCentroidPoint);
+               //test
+               //Geometry of readFeature and writeCentroidFeature are both 
wkbPoint
+               //attributes AND geometry are copied with SetFrom
+               // writeCentroidFeature->SetGeometry(&writeCentroidPoint);
                if(writeCentroidFeature->SetFrom(readFeature)!= OGRERR_NONE)
                  cerr << "writing feature failed" << std::endl;
-               OGRGeometry *updateGeometry;
-               updateGeometry = writeCentroidFeature->GetGeometryRef();
-               assert(wkbFlatten(updateGeometry->getGeometryType()) == 
wkbPoint );
+               
assert(wkbFlatten(writeCentroidFeature->GetGeometryRef()->getGeometryType()) == 
wkbPoint);
+               //test
+               // OGRGeometry *updateGeometry;
+               // updateGeometry = writeCentroidFeature->GetGeometryRef();
+               // assert(wkbFlatten(updateGeometry->getGeometryType()) == 
wkbPoint );
                if(verbose_opt[0]>1)
                  std::cout << "write feature has " << 
writeCentroidFeature->GetFieldCount() << " fields" << std::endl;
              }
@@ -1521,12 +1536,17 @@ int main(int argc, char *argv[])
                      writePointFeature = 
OGRFeature::CreateFeature(writeLayer->GetLayerDefn());
                    if(verbose_opt[0]>1)
                      std::cout << "copying fields from polygons " << std::endl;
-                   writePointFeature->SetGeometry(&thePoint);
+                   //test
+                   // writePointFeature->SetGeometry(&thePoint);
                    if(writePointFeature->SetFrom(readFeature)!= OGRERR_NONE)
                      cerr << "writing feature failed" << std::endl;
-                   OGRGeometry *updateGeometry;
-                   updateGeometry = writePointFeature->GetGeometryRef();
-                   OGRPoint *poPoint = (OGRPoint *) updateGeometry;
+                   //test
+                   writePointFeature->SetGeometry(&thePoint);
+                   
assert(wkbFlatten(writePolygonFeature->GetGeometryRef()->getGeometryType()) == 
wkbPoint);
+                   //test
+                   // OGRGeometry *updateGeometry;
+                   // updateGeometry = writePointFeature->GetGeometryRef();
+                   // OGRPoint *poPoint = (OGRPoint *) updateGeometry;
                    if(verbose_opt[0]>1)
                      std::cout << "write feature has " << 
writePointFeature->GetFieldCount() << " fields" << std::endl;
                  }
@@ -1607,7 +1627,9 @@ int main(int argc, char *argv[])
                writePolygon.addRing(&writeRing);
                writePolygon.closeRings();
                //write geometry of writePolygon
-               writePolygonFeature->SetGeometry(&writePolygon);
+               //test
+               //writePolygonFeature and readFeature are both of type 
wkbPolygon
+               // writePolygonFeature->SetGeometry(&writePolygon);
                if(writePolygonFeature->SetFrom(readFeature)!= OGRERR_NONE)
                  cerr << "writing feature failed" << std::endl;
                if(verbose_opt[0]>1)
@@ -1620,12 +1642,16 @@ int main(int argc, char *argv[])
                //create feature
                if(verbose_opt[0]>1)
                  std::cout << "copying fields from polygons " << std::endl;
-               writeCentroidFeature->SetGeometry(&writeCentroidPoint);
+               //test
+               //writeCentroidFeature->SetGeometry(&writeCentroidPoint);
                if(writeCentroidFeature->SetFrom(readFeature)!= OGRERR_NONE)
                  cerr << "writing feature failed" << std::endl;
-               OGRGeometry *updateGeometry;
-               updateGeometry = writeCentroidFeature->GetGeometryRef();
-               assert(wkbFlatten(updateGeometry->getGeometryType()) == 
wkbPoint );
+               //test
+               writeCentroidFeature->SetGeometry(&writeCentroidPoint);
+               
assert(wkbFlatten(writeCentroidFeature->GetGeometryRef()->getGeometryType()) == 
wkbPoint );
+               // OGRGeometry *updateGeometry;
+               // updateGeometry = writeCentroidFeature->GetGeometryRef();
+               // assert(wkbFlatten(updateGeometry->getGeometryType()) == 
wkbPoint );
                if(verbose_opt[0]>1)
                  std::cout << "write feature has " << 
writeCentroidFeature->GetFieldCount() << " fields" << std::endl;
              }
@@ -1634,7 +1660,6 @@ int main(int argc, char *argv[])
                  if(verbose_opt[0])
                    std::cout << "number of points in polygon: " << 
nPointPolygon << std::endl;
                  for(int index=0;index<polyValues.size();++index){
-                   //test
                    assert(polyValues[index].size()==1);
                    double theValue=polyValues[index].back();
 
@@ -1996,12 +2021,16 @@ int main(int argc, char *argv[])
                        writePointFeature = 
OGRFeature::CreateFeature(writeLayer->GetLayerDefn());
                      if(verbose_opt[0]>1)
                        std::cout << "copying fields from polygons " << 
std::endl;
-                     writePointFeature->SetGeometry(&thePoint);
+                     //test
+                     // writePointFeature->SetGeometry(&thePoint);
                      if(writePointFeature->SetFrom(readFeature)!= OGRERR_NONE)
                        cerr << "writing feature failed" << std::endl;
-                     OGRGeometry *updateGeometry;
-                     updateGeometry = writePointFeature->GetGeometryRef();
-                     OGRPoint *poPoint = (OGRPoint *) updateGeometry;
+                     //test
+                     writePointFeature->SetGeometry(&thePoint);
+                     
assert(wkbFlatten(writePolygonFeature->GetGeometryRef()->getGeometryType()) == 
wkbPoint);
+                     // OGRGeometry *updateGeometry;
+                     // updateGeometry = writePointFeature->GetGeometryRef();
+                     // OGRPoint *poPoint = (OGRPoint *) updateGeometry;
                      if(verbose_opt[0]>1)
                        std::cout << "write feature has " << 
writePointFeature->GetFieldCount() << " fields" << std::endl;
                    }
@@ -2082,8 +2111,6 @@ int main(int argc, char *argv[])
                    std::cout << "ntotalvalid: " << ntotalvalid << std::endl;
              }
            }
-
-           //test
            if(!validFeature)
              continue;
            if(polygon_opt[0]||ruleMap[rule_opt[0]]!=rule::point){
@@ -2095,25 +2122,32 @@ int main(int argc, char *argv[])
                writePolygon.addRing(&writeRing);
                writePolygon.closeRings();
                //write geometry of writePolygon
-               writePolygonFeature->SetGeometry(&writePolygon);
+               //test
+               //writePolygon and readFeature are from geometry type 
wkbMultiPolygon
+               // writePolygonFeature->SetGeometry(&writePolygon);
                if(writePolygonFeature->SetFrom(readFeature)!= OGRERR_NONE)
                  cerr << "writing feature failed" << std::endl;
+               
assert(writePolygonFeature->GetGeometryRef()->getGeometryType()==wkbMultiPolygon);
                if(verbose_opt[0]>1)
                  std::cout << "copying new fields write polygon " << std::endl;
                if(verbose_opt[0]>1)
                  std::cout << "write feature has " << 
writePolygonFeature->GetFieldCount() << " fields" << std::endl;
                //write polygon feature
              }
-             else{//write mean /median value of polygon to centroid point 
(ruleMap[rule_opt[0]]==rule::mean, stdev or median )
+             else{//write band information of polygon to centroid point
                //create feature
                if(verbose_opt[0]>1)
                  std::cout << "copying fields from polygons " << std::endl;
-               writeCentroidFeature->SetGeometry(&writeCentroidPoint);
+               //test
+               // writeCentroidFeature->SetGeometry(&writeCentroidPoint);
                if(writeCentroidFeature->SetFrom(readFeature)!= OGRERR_NONE)
                  cerr << "writing feature failed" << std::endl;
-               OGRGeometry *updateGeometry;
-               updateGeometry = writeCentroidFeature->GetGeometryRef();
-               assert(wkbFlatten(updateGeometry->getGeometryType()) == 
wkbPoint );
+               writeCentroidFeature->SetGeometry(&writeCentroidPoint);
+               
assert(wkbFlatten(writeCentroidFeature->GetGeometryRef()->getGeometryType()) == 
wkbPoint);
+               //test
+               // OGRGeometry *updateGeometry;
+               // updateGeometry = writeCentroidFeature->GetGeometryRef();
+               // assert(wkbFlatten(updateGeometry->getGeometryType()) == 
wkbPoint );
                if(verbose_opt[0]>1)
                  std::cout << "write feature has " << 
writeCentroidFeature->GetFieldCount() << " fields" << std::endl;
              }
diff --git a/src/apps/pkkalman.cc b/src/apps/pkkalman.cc
index 24dd44b..be1de0f 100644
--- a/src/apps/pkkalman.cc
+++ b/src/apps/pkkalman.cc
@@ -621,8 +621,12 @@ int main(int argc,char **argv) {
              double obsMeanValue=statobs.mean(obsWindowBuffer);
              double difference=(obsMeanValue-c0obs)/c1obs-modValue;
              difference/=modValue;//make relative difference
-             difference*=difference;
-             doUpdate=(100*sqrt(difference)<deltaObs_opt[0]);
+             if(deltaObs_opt[0]<0)
+               doUpdate=((100*difference)<deltaObs_opt[0]);
+             else{
+               difference*=difference;
+               doUpdate=(100*sqrt(difference)<deltaObs_opt[0]);
+             }
            }
            if(doUpdate){
              double kalmanGain=1;
@@ -1046,7 +1050,12 @@ int main(int argc,char **argv) {
              difference*=difference;
              difference/=modValue;//make relative difference
              difference*=difference;
-             doUpdate=(100*sqrt(difference)<deltaObs_opt[0]);
+             if(deltaObs_opt[0]<0)
+               doUpdate=((100*difference)<deltaObs_opt[0]);
+             else{
+               difference*=difference;
+               doUpdate=(100*sqrt(difference)<deltaObs_opt[0]);
+             }
            }
            if(doUpdate){
              double kalmanGain=1;

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-grass/pktools.git

_______________________________________________
Pkg-grass-devel mailing list
Pkg-grass-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel

Reply via email to