[pktools] 369/375: debug pkextract: first SetGeometry, then SetFrom
Bas Couwenberg
sebastic at xs4all.nl
Wed Dec 3 21:54:31 UTC 2014
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 <kempenep at 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
More information about the Pkg-grass-devel
mailing list