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 90587086463689508cebed76c80cec3cee65bb63
Author: Pieter Kempeneers <kempe...@gmail.com>
Date:   Sat Nov 29 23:31:42 2014 +0100

    debug pkextract: first SetGeometry, then SetFrom
---
 ChangeLog             |  3 ++-
 src/apps/pkextract.cc | 22 +++++++++++++---------
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d73fa64..e79f273 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -328,7 +328,8 @@ version 2.6.1
  - pkfilter
        Declare nodata option as double (see ticket #43500)
        Support nodata values for filtering in spectral/temporal domain (see 
ticket #43713)
-
+ - pkextract
+       debug: Order of SetGeometry must be before SetFrom caused bad vector 
features (First SetGeometry, then SetFrom)
 Todo:
  - todo for API
        ImgReaderGdal (ImgWriterGdal) open in update mode (check gdal_edit.py: 
http://searchcode.com/codesearch/view/18938404)
diff --git a/src/apps/pkextract.cc b/src/apps/pkextract.cc
index 8ec5bd6..d5686c4 100644
--- a/src/apps/pkextract.cc
+++ b/src/apps/pkextract.cc
@@ -1025,9 +1025,9 @@ 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);
                    if(writePointFeature->SetFrom(readFeature)!= OGRERR_NONE)
                      cerr << "writing feature failed" << std::endl;
-                   writePointFeature->SetGeometry(&thePoint);
                    OGRGeometry *updateGeometry;
                    updateGeometry = writePointFeature->GetGeometryRef();
                    OGRPoint *poPoint = (OGRPoint *) updateGeometry;
@@ -1112,9 +1112,9 @@ int main(int argc, char *argv[])
                // writePolygon.addRing(&writeRing);//already done
                // writePolygon.closeRings();//already done
                //write geometry of writePolygon
+               writePolygonFeature->SetGeometry(&writePolygon);
                if(writePolygonFeature->SetFrom(readFeature)!= OGRERR_NONE)
                  cerr << "writing feature failed" << std::endl;
-               writePolygonFeature->SetGeometry(&writePolygon);
                if(verbose_opt[0]>1)
                  std::cout << "copying new fields write polygon " << std::endl;
                if(verbose_opt[0]>1)
@@ -1125,9 +1125,9 @@ int main(int argc, char *argv[])
                //create feature
                if(verbose_opt[0]>1)
                  std::cout << "copying fields from polygons " << std::endl;
+               writeCentroidFeature->SetGeometry(&writeCentroidPoint);
                if(writeCentroidFeature->SetFrom(readFeature)!= OGRERR_NONE)
                  cerr << "writing feature failed" << std::endl;
-               writeCentroidFeature->SetGeometry(&writeCentroidPoint);
                OGRGeometry *updateGeometry;
                updateGeometry = writeCentroidFeature->GetGeometryRef();
                assert(wkbFlatten(updateGeometry->getGeometryType()) == 
wkbPoint );
@@ -1475,6 +1475,8 @@ int main(int argc, char *argv[])
                  validFeature=true;
 
                writeRing.addPoint(&thePoint);//todo: check if I need to add 
all interior points to ring or do I need to check if point is on ring first?
+               // if(writeRing.isPointOnRingBoundary(&thePoint))
+               //    writeRing.addPoint(&thePoint);
                if(verbose_opt[0]>1)
                  std::cout << "point is on surface:" << thePoint.getX() << "," 
<< thePoint.getY() << std::endl;
                ++nPointPolygon;
@@ -1493,9 +1495,9 @@ 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);
                    if(writePointFeature->SetFrom(readFeature)!= OGRERR_NONE)
                      cerr << "writing feature failed" << std::endl;
-                   writePointFeature->SetGeometry(&thePoint);
                    OGRGeometry *updateGeometry;
                    updateGeometry = writePointFeature->GetGeometryRef();
                    OGRPoint *poPoint = (OGRPoint *) updateGeometry;
@@ -1579,9 +1581,9 @@ int main(int argc, char *argv[])
                writePolygon.addRing(&writeRing);
                writePolygon.closeRings();
                //write geometry of writePolygon
+               writePolygonFeature->SetGeometry(&writePolygon);
                if(writePolygonFeature->SetFrom(readFeature)!= OGRERR_NONE)
                  cerr << "writing feature failed" << std::endl;
-               writePolygonFeature->SetGeometry(&writePolygon);
                if(verbose_opt[0]>1)
                  std::cout << "copying new fields write polygon " << std::endl;
                if(verbose_opt[0]>1)
@@ -1592,9 +1594,9 @@ int main(int argc, char *argv[])
                //create feature
                if(verbose_opt[0]>1)
                  std::cout << "copying fields from polygons " << std::endl;
+               writeCentroidFeature->SetGeometry(&writeCentroidPoint);
                if(writeCentroidFeature->SetFrom(readFeature)!= OGRERR_NONE)
                  cerr << "writing feature failed" << std::endl;
-               writeCentroidFeature->SetGeometry(&writeCentroidPoint);
                OGRGeometry *updateGeometry;
                updateGeometry = writeCentroidFeature->GetGeometryRef();
                assert(wkbFlatten(updateGeometry->getGeometryType()) == 
wkbPoint );
@@ -1931,6 +1933,8 @@ int main(int argc, char *argv[])
                  validFeature=true;
                
                writeRing.addPoint(&thePoint);
+               // if(writeRing.isPointOnRingBoundary(&thePoint))
+               //    writeRing.addPoint(&thePoint);
                if(verbose_opt[0]>1)
                    std::cout << "point is on surface:" << thePoint.getX() << 
"," << thePoint.getY() << std::endl;
                  ++nPointPolygon;
@@ -1949,9 +1953,9 @@ 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);
                      if(writePointFeature->SetFrom(readFeature)!= OGRERR_NONE)
                        cerr << "writing feature failed" << std::endl;
-                     writePointFeature->SetGeometry(&thePoint);
                      OGRGeometry *updateGeometry;
                      updateGeometry = writePointFeature->GetGeometryRef();
                      OGRPoint *poPoint = (OGRPoint *) updateGeometry;
@@ -2048,9 +2052,9 @@ int main(int argc, char *argv[])
                writePolygon.addRing(&writeRing);
                writePolygon.closeRings();
                //write geometry of writePolygon
+               writePolygonFeature->SetGeometry(&writePolygon);
                if(writePolygonFeature->SetFrom(readFeature)!= OGRERR_NONE)
                  cerr << "writing feature failed" << std::endl;
-               writePolygonFeature->SetGeometry(&writePolygon);
                if(verbose_opt[0]>1)
                  std::cout << "copying new fields write polygon " << std::endl;
                if(verbose_opt[0]>1)
@@ -2061,9 +2065,9 @@ int main(int argc, char *argv[])
                //create feature
                if(verbose_opt[0]>1)
                  std::cout << "copying fields from polygons " << std::endl;
+               writeCentroidFeature->SetGeometry(&writeCentroidPoint);
                if(writeCentroidFeature->SetFrom(readFeature)!= OGRERR_NONE)
                  cerr << "writing feature failed" << std::endl;
-               writeCentroidFeature->SetGeometry(&writeCentroidPoint);
                OGRGeometry *updateGeometry;
                updateGeometry = writeCentroidFeature->GetGeometryRef();
                assert(wkbFlatten(updateGeometry->getGeometryType()) == 
wkbPoint );

-- 
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