21 #ifndef __otbPersistentImageToOGRDataFilter_txx
22 #define __otbPersistentImageToOGRDataFilter_txx
26 #include <boost/foreach.hpp>
34 template<
class TImage>
38 this->SetNumberOfInputs(2);
39 this->SetNumberOfRequiredInputs(2);
43 template<
class TImage>
49 template<
class TImage>
57 template<
class TImage>
65 template<
class TImage>
70 m_OGRLayerCreationOptions.push_back(option);
74 template<
class TImage>
79 m_OGRLayerCreationOptions.clear();
83 template<
class TImage>
88 m_OGRLayerCreationOptions = options;
93 template<
class TImage>
101 template<
class TImage>
108 template<
class TImage>
115 template<
class TImage>
121 std::string projectionRefWkt = this->GetInput()->GetProjectionRef();
122 bool projectionInformationAvailable = !projectionRefWkt.empty();
123 OGRSpatialReference * oSRS =
NULL;
124 if(projectionInformationAvailable)
126 oSRS =
static_cast<OGRSpatialReference *
>(OSRNewSpatialReference(projectionRefWkt.c_str()));
132 ogrDS->CreateLayer(m_LayerName, oSRS ,m_GeometryType, m_OGRLayerCreationOptions);
133 OGRFieldDefn field(m_FieldName.c_str(),OFTInteger);
138 if (ogrDS->GetLayersCount() == 1)
140 ogrDS->GetLayer(0).CreateField(field,
true);
144 ogrDS->GetLayer(m_LayerName).CreateField(field,
true);
152 template<
class TImage>
158 if (this->GetStreamSize()[0]==0 && this->GetStreamSize()[1]==0)
160 this->m_StreamSize = this->GetInput()->GetRequestedRegion().GetSize();
165 OGRLayerType srcLayer = currentTileVD->GetLayerChecked(0);
170 : ogrDS->GetLayer(m_LayerName);
176 dstLayer.
ogr().StartTransaction();
178 for(; featIt!=srcLayer.
end(); ++featIt)
181 dstFeature.
SetFrom( *featIt, TRUE );
185 dstLayer.
ogr().CommitTransaction();
191 template<
class TImage>
196 Superclass::PrintSelf(os, indent);