Skip to content

Commit 6bc9a4a

Browse files
committedDec 26, 2016
Added the ability to create memory layer with 25d geometry
1 parent d2f41ac commit 6bc9a4a

File tree

3 files changed

+32
-45
lines changed

3 files changed

+32
-45
lines changed
 

‎src/gui/qgsnewmemorylayerdialog.cpp

Lines changed: 16 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -40,33 +40,9 @@ QgsVectorLayer *QgsNewMemoryLayerDialog::runAndCreateLayer( QWidget *parent )
4040

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

43-
QString geomType;
44-
switch ( geometrytype )
45-
{
46-
case QgsWkbTypes::Point:
47-
geomType = QStringLiteral( "point" );
48-
break;
49-
case QgsWkbTypes::LineString:
50-
geomType = QStringLiteral( "linestring" );
51-
break;
52-
case QgsWkbTypes::Polygon:
53-
geomType = QStringLiteral( "polygon" );
54-
break;
55-
case QgsWkbTypes::MultiPoint:
56-
geomType = QStringLiteral( "multipoint" );
57-
break;
58-
case QgsWkbTypes::MultiLineString:
59-
geomType = QStringLiteral( "multilinestring" );
60-
break;
61-
case QgsWkbTypes::MultiPolygon:
62-
geomType = QStringLiteral( "multipolygon" );
63-
break;
64-
case QgsWkbTypes::NoGeometry:
65-
geomType = QStringLiteral( "none" );
66-
break;
67-
default:
68-
geomType = QStringLiteral( "point" );
69-
}
43+
QString geomType = QgsWkbTypes::displayString(geometrytype);
44+
if ( geomType.isNull())
45+
geomType = "none";
7046

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

10480
QgsWkbTypes::Type QgsNewMemoryLayerDialog::selectedType() const
10581
{
82+
QgsWkbTypes::Type wkbType = QgsWkbTypes::Unknown;
10683
if ( !buttonGroupGeometry->isChecked() )
10784
{
108-
return QgsWkbTypes::NoGeometry;
85+
wkbType = QgsWkbTypes::NoGeometry;
10986
}
11087
else if ( mPointRadioButton->isChecked() )
11188
{
112-
return QgsWkbTypes::Point;
89+
wkbType = QgsWkbTypes::Point;
11390
}
11491
else if ( mLineRadioButton->isChecked() )
11592
{
116-
return QgsWkbTypes::LineString;
93+
wkbType = QgsWkbTypes::LineString;
11794
}
11895
else if ( mPolygonRadioButton->isChecked() )
11996
{
120-
return QgsWkbTypes::Polygon;
97+
wkbType = QgsWkbTypes::Polygon;
12198
}
12299
else if ( mMultiPointRadioButton->isChecked() )
123100
{
124-
return QgsWkbTypes::MultiPoint;
101+
wkbType = QgsWkbTypes::MultiPoint;
125102
}
126103
else if ( mMultiLineRadioButton->isChecked() )
127104
{
128-
return QgsWkbTypes::MultiLineString;
105+
wkbType = QgsWkbTypes::MultiLineString;
129106
}
130107
else if ( mMultiPolygonRadioButton->isChecked() )
131108
{
132-
return QgsWkbTypes::MultiPolygon;
109+
wkbType = QgsWkbTypes::MultiPolygon;
133110
}
134-
return QgsWkbTypes::Unknown;
111+
112+
if (mGeometryWithZCheckBox->isChecked() && wkbType != QgsWkbTypes::Unknown && wkbType != QgsWkbTypes::NoGeometry)
113+
wkbType = QgsWkbTypes::to25D(wkbType);
114+
115+
return wkbType;
135116
}
136117

137118
QgsCoordinateReferenceSystem QgsNewMemoryLayerDialog::crs() const

‎src/gui/qgsnewvectorlayerdialog.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -145,25 +145,24 @@ void QgsNewVectorLayerDialog::on_mTypeBox_currentIndexChanged( int index )
145145

146146
QgsWkbTypes::Type QgsNewVectorLayerDialog::selectedType() const
147147
{
148+
QgsWkbTypes::Type wkbType = QgsWkbTypes::Unknown;
148149
if ( mPointRadioButton->isChecked() )
149150
{
150-
if (mGeometryWithZCheckBox->isChecked())
151-
return QgsWkbTypes::Point25D;
152-
return QgsWkbTypes::Point;
151+
wkbType = QgsWkbTypes::Point;
153152
}
154153
else if ( mLineRadioButton->isChecked() )
155154
{
156-
if (mGeometryWithZCheckBox->isChecked())
157-
return QgsWkbTypes::LineString25D;
158-
return QgsWkbTypes::LineString;
155+
wkbType = QgsWkbTypes::LineString;
159156
}
160157
else if ( mPolygonRadioButton->isChecked() )
161158
{
162-
if (mGeometryWithZCheckBox->isChecked())
163-
return QgsWkbTypes::Polygon25D;
164-
return QgsWkbTypes::Polygon;
159+
wkbType = QgsWkbTypes::Polygon;
165160
}
166-
return QgsWkbTypes::Unknown;
161+
162+
if (mGeometryWithZCheckBox->isChecked() && wkbType != QgsWkbTypes::Unknown)
163+
wkbType = QgsWkbTypes::to25D(wkbType);
164+
165+
return wkbType;
167166
}
168167

169168
int QgsNewVectorLayerDialog::selectedCrsId() const

‎src/ui/qgsnewmemorylayerdialogbase.ui

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,13 @@
7878
</item>
7979
</layout>
8080
</item>
81+
<item>
82+
<widget class="QCheckBox" name="mGeometryWithZCheckBox">
83+
<property name="text">
84+
<string>Geometries with Z coordinate</string>
85+
</property>
86+
</widget>
87+
</item>
8188
<item>
8289
<widget class="QgsProjectionSelectionWidget" name="mCrsSelector" native="true">
8390
<property name="focusPolicy">

0 commit comments

Comments
 (0)
Please sign in to comment.