Skip to content

Commit

Permalink
Added the ability to create memory layer with 25d geometry
Browse files Browse the repository at this point in the history
  • Loading branch information
alisovenko committed Dec 26, 2016
1 parent d2f41ac commit 6bc9a4a
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 45 deletions.
51 changes: 16 additions & 35 deletions src/gui/qgsnewmemorylayerdialog.cpp
Expand Up @@ -40,33 +40,9 @@ QgsVectorLayer *QgsNewMemoryLayerDialog::runAndCreateLayer( QWidget *parent )


QgsWkbTypes::Type geometrytype = dialog.selectedType(); QgsWkbTypes::Type geometrytype = dialog.selectedType();


QString geomType; QString geomType = QgsWkbTypes::displayString(geometrytype);
switch ( geometrytype ) if ( geomType.isNull())
{ geomType = "none";
case QgsWkbTypes::Point:
geomType = QStringLiteral( "point" );
break;
case QgsWkbTypes::LineString:
geomType = QStringLiteral( "linestring" );
break;
case QgsWkbTypes::Polygon:
geomType = QStringLiteral( "polygon" );
break;
case QgsWkbTypes::MultiPoint:
geomType = QStringLiteral( "multipoint" );
break;
case QgsWkbTypes::MultiLineString:
geomType = QStringLiteral( "multilinestring" );
break;
case QgsWkbTypes::MultiPolygon:
geomType = QStringLiteral( "multipolygon" );
break;
case QgsWkbTypes::NoGeometry:
geomType = QStringLiteral( "none" );
break;
default:
geomType = QStringLiteral( "point" );
}


QString layerProperties = QStringLiteral( "%1?" ).arg( geomType ); QString layerProperties = QStringLiteral( "%1?" ).arg( geomType );
if ( QgsWkbTypes::NoGeometry != geometrytype ) if ( QgsWkbTypes::NoGeometry != geometrytype )
Expand Down Expand Up @@ -103,35 +79,40 @@ QgsNewMemoryLayerDialog::~QgsNewMemoryLayerDialog()


QgsWkbTypes::Type QgsNewMemoryLayerDialog::selectedType() const QgsWkbTypes::Type QgsNewMemoryLayerDialog::selectedType() const
{ {
QgsWkbTypes::Type wkbType = QgsWkbTypes::Unknown;
if ( !buttonGroupGeometry->isChecked() ) if ( !buttonGroupGeometry->isChecked() )
{ {
return QgsWkbTypes::NoGeometry; wkbType = QgsWkbTypes::NoGeometry;
} }
else if ( mPointRadioButton->isChecked() ) else if ( mPointRadioButton->isChecked() )
{ {
return QgsWkbTypes::Point; wkbType = QgsWkbTypes::Point;
} }
else if ( mLineRadioButton->isChecked() ) else if ( mLineRadioButton->isChecked() )
{ {
return QgsWkbTypes::LineString; wkbType = QgsWkbTypes::LineString;
} }
else if ( mPolygonRadioButton->isChecked() ) else if ( mPolygonRadioButton->isChecked() )
{ {
return QgsWkbTypes::Polygon; wkbType = QgsWkbTypes::Polygon;
} }
else if ( mMultiPointRadioButton->isChecked() ) else if ( mMultiPointRadioButton->isChecked() )
{ {
return QgsWkbTypes::MultiPoint; wkbType = QgsWkbTypes::MultiPoint;
} }
else if ( mMultiLineRadioButton->isChecked() ) else if ( mMultiLineRadioButton->isChecked() )
{ {
return QgsWkbTypes::MultiLineString; wkbType = QgsWkbTypes::MultiLineString;
} }
else if ( mMultiPolygonRadioButton->isChecked() ) else if ( mMultiPolygonRadioButton->isChecked() )
{ {
return QgsWkbTypes::MultiPolygon; wkbType = QgsWkbTypes::MultiPolygon;
} }
return QgsWkbTypes::Unknown;
if (mGeometryWithZCheckBox->isChecked() && wkbType != QgsWkbTypes::Unknown && wkbType != QgsWkbTypes::NoGeometry)
wkbType = QgsWkbTypes::to25D(wkbType);

return wkbType;
} }


QgsCoordinateReferenceSystem QgsNewMemoryLayerDialog::crs() const QgsCoordinateReferenceSystem QgsNewMemoryLayerDialog::crs() const
Expand Down
19 changes: 9 additions & 10 deletions src/gui/qgsnewvectorlayerdialog.cpp
Expand Up @@ -145,25 +145,24 @@ void QgsNewVectorLayerDialog::on_mTypeBox_currentIndexChanged( int index )


QgsWkbTypes::Type QgsNewVectorLayerDialog::selectedType() const QgsWkbTypes::Type QgsNewVectorLayerDialog::selectedType() const
{ {
QgsWkbTypes::Type wkbType = QgsWkbTypes::Unknown;
if ( mPointRadioButton->isChecked() ) if ( mPointRadioButton->isChecked() )
{ {
if (mGeometryWithZCheckBox->isChecked()) wkbType = QgsWkbTypes::Point;
return QgsWkbTypes::Point25D;
return QgsWkbTypes::Point;
} }
else if ( mLineRadioButton->isChecked() ) else if ( mLineRadioButton->isChecked() )
{ {
if (mGeometryWithZCheckBox->isChecked()) wkbType = QgsWkbTypes::LineString;
return QgsWkbTypes::LineString25D;
return QgsWkbTypes::LineString;
} }
else if ( mPolygonRadioButton->isChecked() ) else if ( mPolygonRadioButton->isChecked() )
{ {
if (mGeometryWithZCheckBox->isChecked()) wkbType = QgsWkbTypes::Polygon;
return QgsWkbTypes::Polygon25D;
return QgsWkbTypes::Polygon;
} }
return QgsWkbTypes::Unknown;
if (mGeometryWithZCheckBox->isChecked() && wkbType != QgsWkbTypes::Unknown)
wkbType = QgsWkbTypes::to25D(wkbType);

return wkbType;
} }


int QgsNewVectorLayerDialog::selectedCrsId() const int QgsNewVectorLayerDialog::selectedCrsId() const
Expand Down
7 changes: 7 additions & 0 deletions src/ui/qgsnewmemorylayerdialogbase.ui
Expand Up @@ -78,6 +78,13 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<widget class="QCheckBox" name="mGeometryWithZCheckBox">
<property name="text">
<string>Geometries with Z coordinate</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QgsProjectionSelectionWidget" name="mCrsSelector" native="true"> <widget class="QgsProjectionSelectionWidget" name="mCrsSelector" native="true">
<property name="focusPolicy"> <property name="focusPolicy">
Expand Down

0 comments on commit 6bc9a4a

Please sign in to comment.