[pktools] 321/375: trying overwrite in createLayer in ImgWriterOgr.cc
Bas Couwenberg
sebastic at xs4all.nl
Wed Dec 3 21:54:26 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 232189d00cc5dd0cbc7f168e941465b2f9bca0d9
Author: Pieter Kempeneers <kempenep at gmail.com>
Date: Sat Sep 13 22:34:28 2014 +0200
trying overwrite in createLayer in ImgWriterOgr.cc
---
src/imageclasses/ImgWriterOgr.cc | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/src/imageclasses/ImgWriterOgr.cc b/src/imageclasses/ImgWriterOgr.cc
index 4f040cf..226fff3 100644
--- a/src/imageclasses/ImgWriterOgr.cc
+++ b/src/imageclasses/ImgWriterOgr.cc
@@ -176,6 +176,29 @@ OGRLayer* ImgWriterOgr::createLayer(const std::string& layername, const std::str
//if points: use wkbPoint
//if no constraints on the types geometry to be written: use wkbUnknown
OGRLayer* poLayer;
+
+ //always overwrite...
+ //todo: test if overwrite works...
+ //check if layername already exists for this dataset
+ int iLayer = -1;
+ poLayer=m_datasource->GetLayerByName(layername.c_str());
+ if(poLayer!=NULL){
+ int nLayerCount = m_datasource->GetLayerCount();
+ for(iLayer = 0; iLayer < nLayerCount; iLayer++ ){
+ OGRLayer *tmpLayer = m_datasource->GetLayer(iLayer);
+ if (tmpLayer == poLayer)
+ break;
+ }
+ if (iLayer == nLayerCount){
+ // shouldn't happen with an ideal driver
+ poLayer = NULL;
+ }
+ if(m_datasource->DeleteLayer(iLayer)!=OGRERR_NONE){
+ std::string errorstring="DeleteLayer() failed when overwrite requested";
+ throw(errorstring);
+ }
+ }
+
OGRSpatialReference oSRS;
if(theProjection!=""){
--
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