189 |
189 |
case OFTReal: varType = QVariant::Double; break;
|
190 |
190 |
// unsupported in OGR 1.3
|
191 |
191 |
//case OFTDateTime: varType = QVariant::DateTime; break;
|
192 |
|
#if GDAL_VERSION_NUM >= 1400
|
|
192 |
#if defined(GDAL_VERSION_NUM) && GDAL_VERSION_NUM >= 1400
|
193 |
193 |
case OFTString: varType = QVariant::String; break;
|
194 |
194 |
#endif
|
195 |
195 |
default: varType = QVariant::String; // other unsupported, leave it as a string
|
... | ... | |
578 |
578 |
|
579 |
579 |
for ( QgsNewAttributesMap::const_iterator iter = attributes.begin(); iter != attributes.end(); ++iter )
|
580 |
580 |
{
|
581 |
|
OGRFieldDefnH fielddefn =
|
582 |
|
OGR_Fld_Create( mEncoding->fromUnicode( iter.key() ).data(), OFTInteger );
|
|
581 |
OGRFieldDefnH fielddefn = OGR_Fld_Create( mEncoding->fromUnicode( iter.key() ).data(), OFTInteger );
|
583 |
582 |
|
584 |
|
if ( *iter == "OFTInteger" )
|
|
583 |
if ( *iter == "Integer" )
|
585 |
584 |
{
|
586 |
585 |
OGR_Fld_SetType( fielddefn, OFTInteger );
|
|
586 |
OGR_Fld_SetWidth( fielddefn, 10 );
|
587 |
587 |
}
|
588 |
|
else if ( *iter == "OFTReal" )
|
|
588 |
else if ( *iter == "Real" )
|
589 |
589 |
{
|
590 |
590 |
OGR_Fld_SetType( fielddefn, OFTReal );
|
591 |
591 |
}
|
592 |
|
else if ( *iter == "OFTString" )
|
|
592 |
else if ( *iter == "String" )
|
593 |
593 |
{
|
594 |
594 |
OGR_Fld_SetType( fielddefn, OFTString );
|
595 |
595 |
}
|
596 |
596 |
else
|
597 |
597 |
{
|
598 |
|
QgsLogger::warning( "QgsOgrProvider::addAttributes, type not found" );
|
|
598 |
QgsLogger::warning( QString("QgsOgrProvider::addAttributes, type %1 not found").arg(*iter) );
|
599 |
599 |
returnvalue = false;
|
600 |
600 |
continue;
|
601 |
601 |
}
|
602 |
602 |
|
603 |
603 |
if ( OGR_L_CreateField( ogrLayer, fielddefn, TRUE ) != OGRERR_NONE )
|
604 |
604 |
{
|
605 |
|
QgsLogger::warning( "QgsOgrProvider.cpp: writing of OFTInteger field failed" );
|
|
605 |
QgsLogger::warning( "QgsOgrProvider.cpp: writing of field failed" );
|
606 |
606 |
returnvalue = false;
|
607 |
607 |
}
|
608 |
608 |
OGR_Fld_Destroy( fielddefn );
|
... | ... | |
857 |
857 |
{
|
858 |
858 |
// Ideally this should test for Shapefile type and GDAL >= 1.2.6
|
859 |
859 |
// In reality, createSpatialIndex() looks after itself.
|
860 |
|
ability |= QgsVectorDataProvider::CreateSpatialIndex;
|
|
860 |
ability |= CreateSpatialIndex;
|
861 |
861 |
}
|
862 |
862 |
|
|
863 |
#if defined(GDAL_VERSION_NUM) && GDAL_VERSION_NUM >= 1600
|
|
864 |
// adding attributes was added in GDAL 1.6
|
|
865 |
if ( ogrDriverName.startsWith( "ESRI" ) )
|
|
866 |
{
|
|
867 |
ability |= AddAttributes;
|
|
868 |
}
|
|
869 |
#endif
|
|
870 |
|
863 |
871 |
// OGR doesn't handle shapefiles without attributes, ie. missing DBFs well, fixes #803
|
864 |
872 |
if ( ogrDriverName.startsWith( "ESRI" ) && mAttributeFields.size() == 0 )
|
865 |
873 |
{
|
... | ... | |
1221 |
1229 |
OGR_DS_Destroy( dataSource );
|
1222 |
1230 |
|
1223 |
1231 |
QgsDebugMsg( QString( "GDAL Version number %1" ).arg( GDAL_VERSION_NUM ) );
|
1224 |
|
#if GDAL_VERSION_NUM >= 1310
|
|
1232 |
#if defined(GDAL_VERSION_NUM) && GDAL_VERSION_NUM >= 1310
|
1225 |
1233 |
if ( reference )
|
1226 |
1234 |
{
|
1227 |
1235 |
OSRRelease( reference );
|