mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-16 00:03:12 -04:00
Update tests for geometry classes
This commit is contained in:
parent
ba816459e1
commit
bbd836f4d3
@ -246,9 +246,9 @@ Returns a GML3 representation of the geometry.
|
|||||||
.. seealso:: :py:func:`asJson`
|
.. seealso:: :py:func:`asJson`
|
||||||
%End
|
%End
|
||||||
|
|
||||||
virtual QString asJson( int precision = 17 ) const = 0;
|
QString asJson( int precision = 17 );
|
||||||
%Docstring
|
%Docstring
|
||||||
Returns a GeoJSON representation of the geometry.
|
Returns a GeoJSON representation of the geometry as a QString.
|
||||||
|
|
||||||
:param precision: number of decimal places for coordinates
|
:param precision: number of decimal places for coordinates
|
||||||
|
|
||||||
@ -259,6 +259,8 @@ Returns a GeoJSON representation of the geometry.
|
|||||||
.. seealso:: :py:func:`asGml2`
|
.. seealso:: :py:func:`asGml2`
|
||||||
|
|
||||||
.. seealso:: :py:func:`asGml3`
|
.. seealso:: :py:func:`asGml3`
|
||||||
|
|
||||||
|
.. seealso:: :py:func:`asJsonObject`
|
||||||
%End
|
%End
|
||||||
|
|
||||||
|
|
||||||
|
@ -79,8 +79,6 @@ to ``p2`` will be used (i.e. winding the other way around the circle).
|
|||||||
|
|
||||||
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
||||||
|
|
||||||
virtual QString asJson( int precision = 17 ) const;
|
|
||||||
|
|
||||||
virtual bool isEmpty() const;
|
virtual bool isEmpty() const;
|
||||||
|
|
||||||
virtual int numPoints() const;
|
virtual int numPoints() const;
|
||||||
|
@ -50,8 +50,6 @@ Compound curve geometry type
|
|||||||
|
|
||||||
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
||||||
|
|
||||||
virtual QString asJson( int precision = 17 ) const;
|
|
||||||
|
|
||||||
|
|
||||||
virtual double length() const;
|
virtual double length() const;
|
||||||
|
|
||||||
|
@ -54,8 +54,6 @@ Curve polygon geometry type
|
|||||||
|
|
||||||
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
||||||
|
|
||||||
virtual QString asJson( int precision = 17 ) const;
|
|
||||||
|
|
||||||
|
|
||||||
virtual double area() const;
|
virtual double area() const;
|
||||||
|
|
||||||
|
@ -152,8 +152,6 @@ An IndexError will be raised if no geometry with the specified index exists.
|
|||||||
|
|
||||||
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
||||||
|
|
||||||
virtual QString asJson( int precision = 17 ) const;
|
|
||||||
|
|
||||||
|
|
||||||
virtual QgsRectangle boundingBox() const;
|
virtual QgsRectangle boundingBox() const;
|
||||||
|
|
||||||
|
@ -412,8 +412,6 @@ segment in the line.
|
|||||||
|
|
||||||
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
||||||
|
|
||||||
virtual QString asJson( int precision = 17 ) const;
|
|
||||||
|
|
||||||
|
|
||||||
virtual double length() const;
|
virtual double length() const;
|
||||||
|
|
||||||
|
@ -35,8 +35,6 @@ Multi curve geometry collection.
|
|||||||
|
|
||||||
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
||||||
|
|
||||||
virtual QString asJson( int precision = 17 ) const;
|
|
||||||
|
|
||||||
virtual bool addGeometry( QgsAbstractGeometry *g /Transfer/ );
|
virtual bool addGeometry( QgsAbstractGeometry *g /Transfer/ );
|
||||||
|
|
||||||
virtual bool insertGeometry( QgsAbstractGeometry *g /Transfer/, int index );
|
virtual bool insertGeometry( QgsAbstractGeometry *g /Transfer/, int index );
|
||||||
|
@ -34,8 +34,6 @@ Multi line string geometry collection.
|
|||||||
|
|
||||||
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
||||||
|
|
||||||
virtual QString asJson( int precision = 17 ) const;
|
|
||||||
|
|
||||||
virtual bool addGeometry( QgsAbstractGeometry *g /Transfer/ );
|
virtual bool addGeometry( QgsAbstractGeometry *g /Transfer/ );
|
||||||
|
|
||||||
virtual bool insertGeometry( QgsAbstractGeometry *g /Transfer/, int index );
|
virtual bool insertGeometry( QgsAbstractGeometry *g /Transfer/, int index );
|
||||||
|
@ -36,8 +36,6 @@ Multi point geometry collection.
|
|||||||
|
|
||||||
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
||||||
|
|
||||||
virtual QString asJson( int precision = 17 ) const;
|
|
||||||
|
|
||||||
virtual int nCoordinates() const;
|
virtual int nCoordinates() const;
|
||||||
|
|
||||||
virtual bool addGeometry( QgsAbstractGeometry *g /Transfer/ );
|
virtual bool addGeometry( QgsAbstractGeometry *g /Transfer/ );
|
||||||
|
@ -33,8 +33,6 @@ Multi polygon geometry collection.
|
|||||||
|
|
||||||
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
||||||
|
|
||||||
virtual QString asJson( int precision = 17 ) const;
|
|
||||||
|
|
||||||
virtual bool addGeometry( QgsAbstractGeometry *g /Transfer/ );
|
virtual bool addGeometry( QgsAbstractGeometry *g /Transfer/ );
|
||||||
|
|
||||||
virtual bool insertGeometry( QgsAbstractGeometry *g /Transfer/, int index );
|
virtual bool insertGeometry( QgsAbstractGeometry *g /Transfer/, int index );
|
||||||
|
@ -35,8 +35,6 @@ Multi surface geometry collection.
|
|||||||
|
|
||||||
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
||||||
|
|
||||||
virtual QString asJson( int precision = 17 ) const;
|
|
||||||
|
|
||||||
virtual bool addGeometry( QgsAbstractGeometry *g /Transfer/ );
|
virtual bool addGeometry( QgsAbstractGeometry *g /Transfer/ );
|
||||||
|
|
||||||
virtual bool insertGeometry( QgsAbstractGeometry *g /Transfer/, int index );
|
virtual bool insertGeometry( QgsAbstractGeometry *g /Transfer/, int index );
|
||||||
|
@ -355,8 +355,6 @@ M value is preserved.
|
|||||||
|
|
||||||
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const;
|
||||||
|
|
||||||
virtual QString asJson( int precision = 17 ) const;
|
|
||||||
|
|
||||||
virtual void draw( QPainter &p ) const;
|
virtual void draw( QPainter &p ) const;
|
||||||
|
|
||||||
virtual void transform( const QgsCoordinateTransform &ct, QgsCoordinateTransform::TransformDirection d = QgsCoordinateTransform::ForwardTransform, bool transformZ = false ) throw( QgsCsException );
|
virtual void transform( const QgsCoordinateTransform &ct, QgsCoordinateTransform::TransformDirection d = QgsCoordinateTransform::ForwardTransform, bool transformZ = false ) throw( QgsCsException );
|
||||||
|
@ -153,6 +153,11 @@ QString QgsAbstractGeometry::wktTypeStr() const
|
|||||||
return wkt;
|
return wkt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString QgsAbstractGeometry::asJson( int precision )
|
||||||
|
{
|
||||||
|
return QString::fromStdString( asJsonObject( precision ).dump() );
|
||||||
|
}
|
||||||
|
|
||||||
QgsPoint QgsAbstractGeometry::centroid() const
|
QgsPoint QgsAbstractGeometry::centroid() const
|
||||||
{
|
{
|
||||||
// http://en.wikipedia.org/wiki/Centroid#Centroid_of_polygon
|
// http://en.wikipedia.org/wiki/Centroid#Centroid_of_polygon
|
||||||
|
@ -277,23 +277,25 @@ class CORE_EXPORT QgsAbstractGeometry
|
|||||||
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const = 0;
|
virtual QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a GeoJSON representation of the geometry.
|
* Returns a GeoJSON representation of the geometry as a QString.
|
||||||
* \param precision number of decimal places for coordinates
|
* \param precision number of decimal places for coordinates
|
||||||
* \see asWkb()
|
* \see asWkb()
|
||||||
* \see asWkt()
|
* \see asWkt()
|
||||||
* \see asGml2()
|
* \see asGml2()
|
||||||
* \see asGml3()
|
* \see asGml3()
|
||||||
|
* \see asJsonObject()
|
||||||
*/
|
*/
|
||||||
virtual QString asJson( int precision = 17 ) const = 0;
|
QString asJson( int precision = 17 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a json obejct representation of the geometry.
|
* Returns a json object representation of the geometry.
|
||||||
* \see asWkb()
|
* \see asWkb()
|
||||||
* \see asWkt()
|
* \see asWkt()
|
||||||
* \see asGml2()
|
* \see asGml2()
|
||||||
* \see asGml3()
|
* \see asGml3()
|
||||||
* \see asJson()
|
* \see asJson()
|
||||||
* \since QGIS 3.8
|
* \note not available in Python bindings
|
||||||
|
* \since QGIS 3.10
|
||||||
*/
|
*/
|
||||||
virtual json asJsonObject( int precision = 17 ) const SIP_SKIP { Q_UNUSED( precision ); return nullptr; }
|
virtual json asJsonObject( int precision = 17 ) const SIP_SKIP { Q_UNUSED( precision ); return nullptr; }
|
||||||
|
|
||||||
|
@ -368,13 +368,6 @@ QDomElement QgsCircularString::asGml3( QDomDocument &doc, int precision, const Q
|
|||||||
return elemCurve;
|
return elemCurve;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QgsCircularString::asJson( int precision ) const
|
|
||||||
{
|
|
||||||
// GeoJSON does not support curves
|
|
||||||
std::unique_ptr< QgsLineString > line( curveToLine() );
|
|
||||||
QString json = line->asJson( precision );
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
json QgsCircularString::asJsonObject( int precision ) const
|
json QgsCircularString::asJsonObject( int precision ) const
|
||||||
{
|
{
|
||||||
|
@ -79,7 +79,6 @@ class CORE_EXPORT QgsCircularString: public QgsCurve
|
|||||||
QString asWkt( int precision = 17 ) const override;
|
QString asWkt( int precision = 17 ) const override;
|
||||||
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QString asJson( int precision = 17 ) const override;
|
|
||||||
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
||||||
bool isEmpty() const override;
|
bool isEmpty() const override;
|
||||||
int numPoints() const override;
|
int numPoints() const override;
|
||||||
|
@ -292,14 +292,6 @@ QDomElement QgsCompoundCurve::asGml3( QDomDocument &doc, int precision, const QS
|
|||||||
return compoundCurveElem;
|
return compoundCurveElem;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QgsCompoundCurve::asJson( int precision ) const
|
|
||||||
{
|
|
||||||
// GeoJSON does not support curves
|
|
||||||
std::unique_ptr< QgsLineString > line( curveToLine() );
|
|
||||||
QString json = line->asJson( precision );
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
json QgsCompoundCurve::asJsonObject( int precision ) const
|
json QgsCompoundCurve::asJsonObject( int precision ) const
|
||||||
{
|
{
|
||||||
// GeoJSON does not support curves
|
// GeoJSON does not support curves
|
||||||
|
@ -50,7 +50,6 @@ class CORE_EXPORT QgsCompoundCurve: public QgsCurve
|
|||||||
QString asWkt( int precision = 17 ) const override;
|
QString asWkt( int precision = 17 ) const override;
|
||||||
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QString asJson( int precision = 17 ) const override;
|
|
||||||
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
||||||
|
|
||||||
//curve interface
|
//curve interface
|
||||||
|
@ -401,38 +401,9 @@ QDomElement QgsCurvePolygon::asGml3( QDomDocument &doc, int precision, const QSt
|
|||||||
return elemCurvePolygon;
|
return elemCurvePolygon;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QgsCurvePolygon::asJson( int precision ) const
|
|
||||||
{
|
|
||||||
// GeoJSON does not support curves
|
|
||||||
QString json = QStringLiteral( "{\"type\": \"Polygon\", \"coordinates\": [" );
|
|
||||||
|
|
||||||
if ( exteriorRing() )
|
|
||||||
{
|
|
||||||
std::unique_ptr< QgsLineString > exteriorLineString( exteriorRing()->curveToLine() );
|
|
||||||
QgsPointSequence exteriorPts;
|
|
||||||
exteriorLineString->points( exteriorPts );
|
|
||||||
json += QgsGeometryUtils::pointsToJSON( exteriorPts, precision ) + QLatin1String( ", " );
|
|
||||||
|
|
||||||
std::unique_ptr< QgsLineString > interiorLineString;
|
|
||||||
for ( int i = 0, n = numInteriorRings(); i < n; ++i )
|
|
||||||
{
|
|
||||||
interiorLineString.reset( interiorRing( i )->curveToLine() );
|
|
||||||
QgsPointSequence interiorPts;
|
|
||||||
interiorLineString->points( interiorPts );
|
|
||||||
json += QgsGeometryUtils::pointsToJSON( interiorPts, precision ) + QLatin1String( ", " );
|
|
||||||
}
|
|
||||||
if ( json.endsWith( QLatin1String( ", " ) ) )
|
|
||||||
{
|
|
||||||
json.chop( 2 ); // Remove last ", "
|
|
||||||
}
|
|
||||||
}
|
|
||||||
json += QLatin1String( "] }" );
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
json QgsCurvePolygon::asJsonObject( int precision ) const
|
json QgsCurvePolygon::asJsonObject( int precision ) const
|
||||||
{
|
{
|
||||||
json coordinates;
|
json coordinates { json::array( )};
|
||||||
if ( exteriorRing() )
|
if ( exteriorRing() )
|
||||||
{
|
{
|
||||||
std::unique_ptr< QgsLineString > exteriorLineString( exteriorRing()->curveToLine() );
|
std::unique_ptr< QgsLineString > exteriorLineString( exteriorRing()->curveToLine() );
|
||||||
|
@ -55,7 +55,6 @@ class CORE_EXPORT QgsCurvePolygon: public QgsSurface
|
|||||||
QString asWkt( int precision = 17 ) const override;
|
QString asWkt( int precision = 17 ) const override;
|
||||||
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QString asJson( int precision = 17 ) const override;
|
|
||||||
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
||||||
|
|
||||||
//surface interface
|
//surface interface
|
||||||
|
@ -1263,11 +1263,7 @@ QString QgsGeometry::asWkt( int precision ) const
|
|||||||
|
|
||||||
QString QgsGeometry::asJson( int precision ) const
|
QString QgsGeometry::asJson( int precision ) const
|
||||||
{
|
{
|
||||||
if ( !d->geometry )
|
return QString::fromStdString( asJsonObject( precision ).dump() );
|
||||||
{
|
|
||||||
return QStringLiteral( "null" );
|
|
||||||
}
|
|
||||||
return d->geometry->asJson( precision );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
json QgsGeometry::asJsonObject( int precision ) const
|
json QgsGeometry::asJsonObject( int precision ) const
|
||||||
|
@ -417,24 +417,9 @@ QDomElement QgsGeometryCollection::asGml3( QDomDocument &doc, int precision, con
|
|||||||
return elemMultiGeometry;
|
return elemMultiGeometry;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QgsGeometryCollection::asJson( int precision ) const
|
|
||||||
{
|
|
||||||
QString json = QStringLiteral( "{\"type\": \"GeometryCollection\", \"geometries\": [" );
|
|
||||||
for ( const QgsAbstractGeometry *geom : mGeometries )
|
|
||||||
{
|
|
||||||
json += geom->asJson( precision ) + QLatin1String( ", " );
|
|
||||||
}
|
|
||||||
if ( json.endsWith( QLatin1String( ", " ) ) )
|
|
||||||
{
|
|
||||||
json.chop( 2 ); // Remove last ", "
|
|
||||||
}
|
|
||||||
json += QLatin1String( "] }" );
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
json QgsGeometryCollection::asJsonObject( int precision ) const
|
json QgsGeometryCollection::asJsonObject( int precision ) const
|
||||||
{
|
{
|
||||||
json coordinates;
|
json coordinates { json::array( ) };
|
||||||
for ( const QgsAbstractGeometry *geom : qgis::as_const( mGeometries ) )
|
for ( const QgsAbstractGeometry *geom : qgis::as_const( mGeometries ) )
|
||||||
{
|
{
|
||||||
coordinates.push_back( geom->asJsonObject( precision ) );
|
coordinates.push_back( geom->asJsonObject( precision ) );
|
||||||
@ -442,7 +427,7 @@ json QgsGeometryCollection::asJsonObject( int precision ) const
|
|||||||
return
|
return
|
||||||
{
|
{
|
||||||
{ "type", "GeometryCollection" },
|
{ "type", "GeometryCollection" },
|
||||||
{ "coordinates", coordinates }
|
{ "geometries", coordinates }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +173,6 @@ class CORE_EXPORT QgsGeometryCollection: public QgsAbstractGeometry
|
|||||||
QString asWkt( int precision = 17 ) const override;
|
QString asWkt( int precision = 17 ) const override;
|
||||||
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QString asJson( int precision = 17 ) const override;
|
|
||||||
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
||||||
|
|
||||||
QgsRectangle boundingBox() const override;
|
QgsRectangle boundingBox() const override;
|
||||||
|
@ -1200,7 +1200,7 @@ QString QgsGeometryUtils::pointsToJSON( const QgsPointSequence &points, int prec
|
|||||||
|
|
||||||
json QgsGeometryUtils::pointsToJson( const QgsPointSequence &points, int precision )
|
json QgsGeometryUtils::pointsToJson( const QgsPointSequence &points, int precision )
|
||||||
{
|
{
|
||||||
json coordinates;
|
json coordinates { json::array() };
|
||||||
for ( const QgsPoint &p : points )
|
for ( const QgsPoint &p : points )
|
||||||
{
|
{
|
||||||
if ( p.is3D() )
|
if ( p.is3D() )
|
||||||
|
@ -412,14 +412,6 @@ QDomElement QgsLineString::asGml3( QDomDocument &doc, int precision, const QStri
|
|||||||
return elemLineString;
|
return elemLineString;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QgsLineString::asJson( int precision ) const
|
|
||||||
{
|
|
||||||
QgsPointSequence pts;
|
|
||||||
points( pts );
|
|
||||||
|
|
||||||
return "{\"type\": \"LineString\", \"coordinates\": " + QgsGeometryUtils::pointsToJSON( pts, precision ) + '}';
|
|
||||||
}
|
|
||||||
|
|
||||||
json QgsLineString::asJsonObject( int precision ) const
|
json QgsLineString::asJsonObject( int precision ) const
|
||||||
{
|
{
|
||||||
QgsPointSequence pts;
|
QgsPointSequence pts;
|
||||||
|
@ -560,7 +560,6 @@ class CORE_EXPORT QgsLineString: public QgsCurve
|
|||||||
QString asWkt( int precision = 17 ) const override;
|
QString asWkt( int precision = 17 ) const override;
|
||||||
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QString asJson( int precision = 17 ) const override;
|
|
||||||
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
||||||
|
|
||||||
//curve interface
|
//curve interface
|
||||||
|
@ -110,31 +110,9 @@ QDomElement QgsMultiCurve::asGml3( QDomDocument &doc, int precision, const QStri
|
|||||||
return elemMultiCurve;
|
return elemMultiCurve;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QgsMultiCurve::asJson( int precision ) const
|
|
||||||
{
|
|
||||||
// GeoJSON does not support curves
|
|
||||||
QString json = QStringLiteral( "{\"type\": \"MultiLineString\", \"coordinates\": [" );
|
|
||||||
for ( const QgsAbstractGeometry *geom : mGeometries )
|
|
||||||
{
|
|
||||||
if ( qgsgeometry_cast<const QgsCurve *>( geom ) )
|
|
||||||
{
|
|
||||||
std::unique_ptr< QgsLineString > lineString( static_cast<const QgsCurve *>( geom )->curveToLine() );
|
|
||||||
QgsPointSequence pts;
|
|
||||||
lineString->points( pts );
|
|
||||||
json += QgsGeometryUtils::pointsToJSON( pts, precision ) + QLatin1String( ", " );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( json.endsWith( QLatin1String( ", " ) ) )
|
|
||||||
{
|
|
||||||
json.chop( 2 ); // Remove last ", "
|
|
||||||
}
|
|
||||||
json += QLatin1String( "] }" );
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
json QgsMultiCurve::asJsonObject( int precision ) const
|
json QgsMultiCurve::asJsonObject( int precision ) const
|
||||||
{
|
{
|
||||||
json coordinates;
|
json coordinates { json::array( ) };
|
||||||
for ( const QgsAbstractGeometry *geom : qgis::as_const( mGeometries ) )
|
for ( const QgsAbstractGeometry *geom : qgis::as_const( mGeometries ) )
|
||||||
{
|
{
|
||||||
if ( qgsgeometry_cast<const QgsCurve *>( geom ) )
|
if ( qgsgeometry_cast<const QgsCurve *>( geom ) )
|
||||||
|
@ -37,7 +37,6 @@ class CORE_EXPORT QgsMultiCurve: public QgsGeometryCollection
|
|||||||
bool fromWkt( const QString &wkt ) override;
|
bool fromWkt( const QString &wkt ) override;
|
||||||
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QString asJson( int precision = 17 ) const override;
|
|
||||||
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
||||||
bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
|
bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
|
||||||
bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
|
bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
|
||||||
|
@ -98,30 +98,9 @@ QDomElement QgsMultiLineString::asGml3( QDomDocument &doc, int precision, const
|
|||||||
return elemMultiCurve;
|
return elemMultiCurve;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QgsMultiLineString::asJson( int precision ) const
|
|
||||||
{
|
|
||||||
QString json = QStringLiteral( "{\"type\": \"MultiLineString\", \"coordinates\": [" );
|
|
||||||
for ( const QgsAbstractGeometry *geom : mGeometries )
|
|
||||||
{
|
|
||||||
if ( qgsgeometry_cast<const QgsCurve *>( geom ) )
|
|
||||||
{
|
|
||||||
const QgsLineString *lineString = static_cast<const QgsLineString *>( geom );
|
|
||||||
QgsPointSequence pts;
|
|
||||||
lineString->points( pts );
|
|
||||||
json += QgsGeometryUtils::pointsToJSON( pts, precision ) + QLatin1String( ", " );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( json.endsWith( QLatin1String( ", " ) ) )
|
|
||||||
{
|
|
||||||
json.chop( 2 ); // Remove last ", "
|
|
||||||
}
|
|
||||||
json += QLatin1String( "] }" );
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
json QgsMultiLineString::asJsonObject( int precision ) const
|
json QgsMultiLineString::asJsonObject( int precision ) const
|
||||||
{
|
{
|
||||||
json coordinates;
|
json coordinates { json::array( ) };
|
||||||
for ( const QgsAbstractGeometry *geom : mGeometries )
|
for ( const QgsAbstractGeometry *geom : mGeometries )
|
||||||
{
|
{
|
||||||
if ( qgsgeometry_cast<const QgsCurve *>( geom ) )
|
if ( qgsgeometry_cast<const QgsCurve *>( geom ) )
|
||||||
|
@ -37,7 +37,6 @@ class CORE_EXPORT QgsMultiLineString: public QgsMultiCurve
|
|||||||
bool fromWkt( const QString &wkt ) override;
|
bool fromWkt( const QString &wkt ) override;
|
||||||
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QString asJson( int precision = 17 ) const override;
|
|
||||||
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
||||||
bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
|
bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
|
||||||
bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
|
bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
|
||||||
|
@ -112,24 +112,6 @@ QDomElement QgsMultiPoint::asGml3( QDomDocument &doc, int precision, const QStri
|
|||||||
return elemMultiPoint;
|
return elemMultiPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QgsMultiPoint::asJson( int precision ) const
|
|
||||||
{
|
|
||||||
QString json = QStringLiteral( "{\"type\": \"MultiPoint\", \"coordinates\": " );
|
|
||||||
|
|
||||||
QgsPointSequence pts;
|
|
||||||
for ( const QgsAbstractGeometry *geom : mGeometries )
|
|
||||||
{
|
|
||||||
if ( qgsgeometry_cast<const QgsPoint *>( geom ) )
|
|
||||||
{
|
|
||||||
const QgsPoint *point = static_cast<const QgsPoint *>( geom );
|
|
||||||
pts << *point;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
json += QgsGeometryUtils::pointsToJSON( pts, precision );
|
|
||||||
json += QLatin1String( " }" );
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
json QgsMultiPoint::asJsonObject( int precision ) const
|
json QgsMultiPoint::asJsonObject( int precision ) const
|
||||||
{
|
{
|
||||||
json j
|
json j
|
||||||
|
@ -38,7 +38,6 @@ class CORE_EXPORT QgsMultiPoint: public QgsGeometryCollection
|
|||||||
void clear() override;
|
void clear() override;
|
||||||
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QString asJson( int precision = 17 ) const override;
|
|
||||||
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
||||||
int nCoordinates() const override;
|
int nCoordinates() const override;
|
||||||
bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
|
bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
|
||||||
|
@ -98,54 +98,12 @@ QDomElement QgsMultiPolygon::asGml3( QDomDocument &doc, int precision, const QSt
|
|||||||
return elemMultiSurface;
|
return elemMultiSurface;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QgsMultiPolygon::asJson( int precision ) const
|
|
||||||
{
|
|
||||||
// GeoJSON does not support curves
|
|
||||||
QString json = QStringLiteral( "{\"type\": \"MultiPolygon\", \"coordinates\": [" );
|
|
||||||
for ( const QgsAbstractGeometry *geom : mGeometries )
|
|
||||||
{
|
|
||||||
if ( qgsgeometry_cast<const QgsPolygon *>( geom ) )
|
|
||||||
{
|
|
||||||
json += '[';
|
|
||||||
|
|
||||||
const QgsPolygon *polygon = static_cast<const QgsPolygon *>( geom );
|
|
||||||
|
|
||||||
std::unique_ptr< QgsLineString > exteriorLineString( polygon->exteriorRing()->curveToLine() );
|
|
||||||
QgsPointSequence exteriorPts;
|
|
||||||
exteriorLineString->points( exteriorPts );
|
|
||||||
json += QgsGeometryUtils::pointsToJSON( exteriorPts, precision ) + QLatin1String( ", " );
|
|
||||||
|
|
||||||
std::unique_ptr< QgsLineString > interiorLineString;
|
|
||||||
for ( int i = 0, n = polygon->numInteriorRings(); i < n; ++i )
|
|
||||||
{
|
|
||||||
interiorLineString.reset( polygon->interiorRing( i )->curveToLine() );
|
|
||||||
QgsPointSequence interiorPts;
|
|
||||||
interiorLineString->points( interiorPts );
|
|
||||||
json += QgsGeometryUtils::pointsToJSON( interiorPts, precision ) + QLatin1String( ", " );
|
|
||||||
}
|
|
||||||
if ( json.endsWith( QLatin1String( ", " ) ) )
|
|
||||||
{
|
|
||||||
json.chop( 2 ); // Remove last ", "
|
|
||||||
}
|
|
||||||
|
|
||||||
json += QLatin1String( "], " );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( json.endsWith( QLatin1String( ", " ) ) )
|
|
||||||
{
|
|
||||||
json.chop( 2 ); // Remove last ", "
|
|
||||||
}
|
|
||||||
json += QLatin1String( "] }" );
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
json QgsMultiPolygon::asJsonObject( int precision ) const
|
json QgsMultiPolygon::asJsonObject( int precision ) const
|
||||||
{
|
{
|
||||||
json polygons;
|
json polygons { json::array( ) };
|
||||||
for ( const QgsAbstractGeometry *geom : qgis::as_const( mGeometries ) )
|
for ( const QgsAbstractGeometry *geom : qgis::as_const( mGeometries ) )
|
||||||
{
|
{
|
||||||
json coordinates;
|
json coordinates { json::array( ) };
|
||||||
if ( qgsgeometry_cast<const QgsPolygon *>( geom ) )
|
if ( qgsgeometry_cast<const QgsPolygon *>( geom ) )
|
||||||
{
|
{
|
||||||
const QgsPolygon *polygon = static_cast<const QgsPolygon *>( geom );
|
const QgsPolygon *polygon = static_cast<const QgsPolygon *>( geom );
|
||||||
|
@ -36,7 +36,6 @@ class CORE_EXPORT QgsMultiPolygon: public QgsMultiSurface
|
|||||||
bool fromWkt( const QString &wkt ) override;
|
bool fromWkt( const QString &wkt ) override;
|
||||||
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QString asJson( int precision = 17 ) const override;
|
|
||||||
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
||||||
bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
|
bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
|
||||||
bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
|
bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
|
||||||
|
@ -109,50 +109,10 @@ QDomElement QgsMultiSurface::asGml3( QDomDocument &doc, int precision, const QSt
|
|||||||
return elemMultiSurface;
|
return elemMultiSurface;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QgsMultiSurface::asJson( int precision ) const
|
|
||||||
{
|
|
||||||
// GeoJSON does not support curves
|
|
||||||
QString json = QStringLiteral( "{\"type\": \"MultiPolygon\", \"coordinates\": [" );
|
|
||||||
for ( const QgsAbstractGeometry *geom : mGeometries )
|
|
||||||
{
|
|
||||||
if ( qgsgeometry_cast<const QgsSurface *>( geom ) )
|
|
||||||
{
|
|
||||||
json += '[';
|
|
||||||
|
|
||||||
std::unique_ptr< QgsPolygon >polygon( static_cast<const QgsSurface *>( geom )->surfaceToPolygon() );
|
|
||||||
|
|
||||||
std::unique_ptr< QgsLineString > exteriorLineString( polygon->exteriorRing()->curveToLine() );
|
|
||||||
QgsPointSequence exteriorPts;
|
|
||||||
exteriorLineString->points( exteriorPts );
|
|
||||||
json += QgsGeometryUtils::pointsToJSON( exteriorPts, precision ) + QLatin1String( ", " );
|
|
||||||
|
|
||||||
std::unique_ptr< QgsLineString > interiorLineString;
|
|
||||||
for ( int i = 0, n = polygon->numInteriorRings(); i < n; ++i )
|
|
||||||
{
|
|
||||||
interiorLineString.reset( polygon->interiorRing( i )->curveToLine() );
|
|
||||||
QgsPointSequence interiorPts;
|
|
||||||
interiorLineString->points( interiorPts );
|
|
||||||
json += QgsGeometryUtils::pointsToJSON( interiorPts, precision ) + QLatin1String( ", " );
|
|
||||||
}
|
|
||||||
if ( json.endsWith( QLatin1String( ", " ) ) )
|
|
||||||
{
|
|
||||||
json.chop( 2 ); // Remove last ", "
|
|
||||||
}
|
|
||||||
|
|
||||||
json += QLatin1String( "], " );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( json.endsWith( QLatin1String( ", " ) ) )
|
|
||||||
{
|
|
||||||
json.chop( 2 ); // Remove last ", "
|
|
||||||
}
|
|
||||||
json += QLatin1String( "] }" );
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
json QgsMultiSurface::asJsonObject( int precision ) const
|
json QgsMultiSurface::asJsonObject( int precision ) const
|
||||||
{
|
{
|
||||||
json coordinates;
|
json coordinates { json::array( ) };
|
||||||
for ( const QgsAbstractGeometry *geom : qgis::as_const( mGeometries ) )
|
for ( const QgsAbstractGeometry *geom : qgis::as_const( mGeometries ) )
|
||||||
{
|
{
|
||||||
if ( qgsgeometry_cast<const QgsSurface *>( geom ) )
|
if ( qgsgeometry_cast<const QgsSurface *>( geom ) )
|
||||||
|
@ -37,7 +37,6 @@ class CORE_EXPORT QgsMultiSurface: public QgsGeometryCollection
|
|||||||
bool fromWkt( const QString &wkt ) override;
|
bool fromWkt( const QString &wkt ) override;
|
||||||
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QString asJson( int precision = 17 ) const override;
|
|
||||||
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
||||||
bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
|
bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
|
||||||
bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
|
bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
|
||||||
|
@ -283,12 +283,6 @@ QDomElement QgsPoint::asGml3( QDomDocument &doc, int precision, const QString &n
|
|||||||
* See details in QEP #17
|
* See details in QEP #17
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
QString QgsPoint::asJson( int precision ) const
|
|
||||||
{
|
|
||||||
return "{\"type\": \"Point\", \"coordinates\": ["
|
|
||||||
+ qgsDoubleToString( mX, precision ) + QLatin1String( ", " ) + qgsDoubleToString( mY, precision )
|
|
||||||
+ QLatin1String( "]}" );
|
|
||||||
}
|
|
||||||
|
|
||||||
json QgsPoint::asJsonObject( int precision ) const
|
json QgsPoint::asJsonObject( int precision ) const
|
||||||
{
|
{
|
||||||
|
@ -436,7 +436,6 @@ class CORE_EXPORT QgsPoint: public QgsAbstractGeometry
|
|||||||
QString asWkt( int precision = 17 ) const override;
|
QString asWkt( int precision = 17 ) const override;
|
||||||
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
|
||||||
QString asJson( int precision = 17 ) const override;
|
|
||||||
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
json asJsonObject( int precision = 17 ) const override SIP_SKIP;
|
||||||
void draw( QPainter &p ) const override;
|
void draw( QPainter &p ) const override;
|
||||||
void transform( const QgsCoordinateTransform &ct, QgsCoordinateTransform::TransformDirection d = QgsCoordinateTransform::ForwardTransform, bool transformZ = false ) override SIP_THROW( QgsCsException );
|
void transform( const QgsCoordinateTransform &ct, QgsCoordinateTransform::TransformDirection d = QgsCoordinateTransform::ForwardTransform, bool transformZ = false ) override SIP_THROW( QgsCsException );
|
||||||
|
@ -67,6 +67,7 @@ INCLUDE_DIRECTORIES(
|
|||||||
${CMAKE_SOURCE_DIR}/src/core/effects
|
${CMAKE_SOURCE_DIR}/src/core/effects
|
||||||
${CMAKE_SOURCE_DIR}/src/core/metadata
|
${CMAKE_SOURCE_DIR}/src/core/metadata
|
||||||
${CMAKE_SOURCE_DIR}/src/core/expression
|
${CMAKE_SOURCE_DIR}/src/core/expression
|
||||||
|
${CMAKE_SOURCE_DIR}/external
|
||||||
|
|
||||||
${CMAKE_BINARY_DIR}/src/core
|
${CMAKE_BINARY_DIR}/src/core
|
||||||
)
|
)
|
||||||
|
File diff suppressed because one or more lines are too long
@ -119,13 +119,6 @@ class TestQgsJsonUtils : public QObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void testExportFeatureJson_data()
|
|
||||||
{
|
|
||||||
QTest::addColumn<JsonAlgs>( "JsonAlgs" );
|
|
||||||
QTest::newRow( "Use json" ) << JsonAlgs::Json;
|
|
||||||
QTest::newRow( "Use old string concat" ) << JsonAlgs::String;
|
|
||||||
}
|
|
||||||
|
|
||||||
void testExportFeatureJson()
|
void testExportFeatureJson()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -152,35 +145,47 @@ class TestQgsJsonUtils : public QObject
|
|||||||
|
|
||||||
void testExportGeomToJson()
|
void testExportGeomToJson()
|
||||||
{
|
{
|
||||||
const QStringList testWkts
|
const QMap<QString, QString> testWkts
|
||||||
|
{
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
QStringLiteral( "LINESTRING(-71.160281 42.258729,-71.160837 42.259113,-71.161144 42.25932)" ),
|
QStringLiteral( "LINESTRING(-71.160281 42.258729,-71.160837 42.259113,-71.161144 42.25932)" ),
|
||||||
QStringLiteral( "MULTILINESTRING((-71.160281 42.258729,-71.160837 42.259113,-71.161144 42.25932))" ),
|
QStringLiteral( R"json({"coordinates":[[-71.16,42.259],[-71.161,42.259],[-71.161,42.259]],"type":"LineString"})json" )
|
||||||
QStringLiteral( "POINT(-71.064544 42.28787)" ),
|
},
|
||||||
QStringLiteral( "MULTIPOINT(-71.064544 42.28787, -71.1776585052917 42.3902909739571)" ),
|
{
|
||||||
|
QStringLiteral( "MULTILINESTRING((-71.160281 42.258729,-71.160837 42.259113,-71.161144 42.25932), (-70 43.56, -67 44.68))" ),
|
||||||
|
QStringLiteral( R"json({"coordinates":[[[-71.16,42.259],[-71.161,42.259],[-71.161,42.259]],[[-70.0,43.56],[-67.0,44.68]]],"type":"MultiLineString"})json" )
|
||||||
|
},
|
||||||
|
{ QStringLiteral( "POINT(-71.064544 42.28787)" ), QStringLiteral( R"json({"coordinates":[-71.065,42.288],"type":"Point"})json" ) },
|
||||||
|
{ QStringLiteral( "MULTIPOINT(-71.064544 42.28787, -71.1776585052917 42.3902909739571)" ), QStringLiteral( R"json({"coordinates":[[-71.065,42.288],[-71.178,42.39]],"type":"MultiPoint"})json" ) },
|
||||||
|
{
|
||||||
QStringLiteral( "POLYGON((-71.1776585052917 42.3902909739571,-71.1776820268866 42.3903701743239,"
|
QStringLiteral( "POLYGON((-71.1776585052917 42.3902909739571,-71.1776820268866 42.3903701743239,"
|
||||||
"-71.1776063012595 42.3903825660754,-71.1775826583081 42.3903033653531,-71.1776585052917 42.3902909739571))" ),
|
"-71.1776063012595 42.3903825660754,-71.1775826583081 42.3903033653531,-71.1776585052917 42.3902909739571))" ),
|
||||||
|
QStringLiteral( R"json({"coordinates":[[[-71.178,42.39],[-71.178,42.39],[-71.178,42.39],[-71.178,42.39],[-71.178,42.39]]],"type":"Polygon"})json" )
|
||||||
|
},
|
||||||
|
{
|
||||||
QStringLiteral( "MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2)),((3 3,6 2,6 4,3 3)))" ),
|
QStringLiteral( "MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2)),((3 3,6 2,6 4,3 3)))" ),
|
||||||
QStringLiteral( "CIRCULARSTRING(220268 150415,220227 150505,220227 150406)" ),
|
QStringLiteral( R"json({"coordinates":[[[[1.0,1.0],[5.0,1.0],[5.0,5.0],[1.0,5.0],[1.0,1.0]],[[2.0,2.0],[3.0,2.0],[3.0,3.0],[2.0,3.0],[2.0,2.0]]],[[[3.0,3.0],[6.0,2.0],[6.0,4.0],[3.0,3.0]]]],"type":"MultiPolygon"})json" )
|
||||||
|
},
|
||||||
|
// Note: CIRCULARSTRING json is very long, we will check first three vertices only
|
||||||
|
{ QStringLiteral( "CIRCULARSTRING(220268 150415,220227 150505,220227 150406)" ), QStringLiteral( R"json({"coordinates":[[220268.0,150415.0],[220268.7,150415.535],[220269.391,150416.081])json" ) },
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
for ( const auto &w : testWkts )
|
for ( const auto &w : testWkts.toStdMap() )
|
||||||
{
|
{
|
||||||
const auto g { QgsGeometry::fromWkt( w ) };
|
const auto g { QgsGeometry::fromWkt( w.first ) };
|
||||||
QVERIFY( !g.isNull( ) );
|
QVERIFY( !g.isNull( ) );
|
||||||
QCOMPARE( QJsonDocument::fromJson( QByteArray::fromStdString( g.asJsonObject( 3 ).dump() ) )
|
if ( w.first.startsWith( QStringLiteral( "CIRCULARSTRING" ) ) )
|
||||||
.toJson( QJsonDocument::JsonFormat::Compact ),
|
{
|
||||||
QJsonDocument::fromJson( g.asJson( 3 ).toUtf8() )
|
QVERIFY( g.asJson( 3 ).startsWith( w.second ) );
|
||||||
.toJson( QJsonDocument::JsonFormat::Compact ) );
|
QCOMPARE( g.asJsonObject( 3 )["type"], "LineString" );
|
||||||
const auto outp { QJsonDocument::fromJson( g.asJson( 3 ).toUtf8() )
|
}
|
||||||
.toJson( QJsonDocument::JsonFormat::Compact ) };
|
else
|
||||||
qDebug() << QStringLiteral( "{ \"%1\", R\"json(%2)json\" }, " )
|
{
|
||||||
.arg( w )
|
QCOMPARE( g.asJson( 3 ), w.second );
|
||||||
.arg( QString( outp ) );
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -27,10 +27,12 @@ INCLUDE_DIRECTORIES(
|
|||||||
${CMAKE_SOURCE_DIR}/src/native
|
${CMAKE_SOURCE_DIR}/src/native
|
||||||
${CMAKE_SOURCE_DIR}/src/quickgui
|
${CMAKE_SOURCE_DIR}/src/quickgui
|
||||||
${CMAKE_SOURCE_DIR}/src/test
|
${CMAKE_SOURCE_DIR}/src/test
|
||||||
|
${CMAKE_SOURCE_DIR}/external
|
||||||
|
|
||||||
${CMAKE_BINARY_DIR}/src/core
|
${CMAKE_BINARY_DIR}/src/core
|
||||||
${CMAKE_BINARY_DIR}/src/native
|
${CMAKE_BINARY_DIR}/src/native
|
||||||
${CMAKE_BINARY_DIR}/src/quickgui
|
${CMAKE_BINARY_DIR}/src/quickgui
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(SYSTEM
|
INCLUDE_DIRECTORIES(SYSTEM
|
||||||
|
Loading…
x
Reference in New Issue
Block a user