コード例 #1
0
ファイル: geometryio.py プロジェクト: 3liz/py-qgis-wps
def wkt_to_geometry(wkt: str) -> Geometry:
    """ Convert wkt to qgis geometry

        Handle CRS= prefix
    """
    m = WKT_EXPR.match(wkt)
    if m:
        g = QgsGeometry.fromWkt(m.groups('')[1])
        if not g.isNull():
            crs = QgsCoordinateReferenceSystem(m.groups('')[0])
            if crs.isValid():
                g = QgsReferencedGeometry(g, crs)
        return g
    raise InvalidParameterValue("Invalid wkt format")
コード例 #2
0
ファイル: geometryio.py プロジェクト: 3liz/py-qgis-wps
def gml_to_geometry(gml: str) -> Geometry:
    """ Handle json to qgis geometry
    """
    # Lookup for srsName
    geom = ogr.CreateGeometryFromGML(gml)
    if not geom:
        raise InvalidParameterValue("Invalid gml format")

    geom = QgsGeometry.fromWkt(geom.ExportToWkt())
    # Check for crs
    m = SRSNAME_EXPR.search(gml)
    if m:
        crs = QgsCoordinateReferenceSystem(m.groups('')[0])
        if crs.isValid():
            geom = QgsReferencedGeometry(geom, crs)
    return geom
コード例 #3
0
ファイル: geometryio.py プロジェクト: 3liz/py-qgis-wps
def json_to_geometry(data: str) -> Geometry:
    """ Handle json to qgis geometry
    """
    try:
        data = json.loads(data)
        crs = data.get('crs')
        if crs:
            crs = QgsCoordinateReferenceSystem(crs['properties']['name'])
            data = data['geometry']
        geom = ogr.CreateGeometryFromJson(json.dumps(data))
        if geom:
            geom = QgsGeometry.fromWkt(geom.ExportToWkt())
            if crs and crs.isValid():
                geom = QgsReferencedGeometry(geom, crs)
            return geom
    except (json.JSONDecodeError, KeyError) as err:
        LOGGER.error("Error decoding json input: %s", err)

    raise InvalidParameterValue("Invalid geojson format")
コード例 #4
0
 def testQgsReferencedGeometryRepr(self):
     g = QgsReferencedGeometry(QgsGeometry.fromPointXY(QgsPointXY(1, 2)),
                               QgsCoordinateReferenceSystem('EPSG:4326'))
     self.assertEqual(g.__repr__(),
                      '<QgsReferencedGeometry: Point (1 2) (EPSG:4326)>')