Retrieve a GeoJSON representation of the model. Includes vectorized mask map and stream network.

        Args:
            session (:mod:`sqlalchemy.orm.session.Session`): SQLAlchemy session object bound to PostGIS enabled database
            withStreamNetwork (bool, optional): Include stream network. Defaults to True.
            withNodes (bool, optional): Include nodes. Defaults to False.

        Returns:
            str: GeoJSON string

def getModelSummaryAsGeoJson(self, session, withStreamNetwork=True, withNodes=False):
        """
        Retrieve a GeoJSON representation of the model. Includes vectorized mask map and stream network.

        Args:
            session (:mod:`sqlalchemy.orm.session.Session`): SQLAlchemy session object bound to PostGIS enabled database
            withStreamNetwork (bool, optional): Include stream network. Defaults to True.
            withNodes (bool, optional): Include nodes. Defaults to False.

        Returns:
            str: GeoJSON string
        """
        # Get mask map
        watershedMaskCard = self.getCard('WATERSHED_MASK')
        maskFilename = watershedMaskCard.value
        maskExtension = maskFilename.strip('"').split('.')[1]

        maskMap = session.query(RasterMapFile).\
                          filter(RasterMapFile.projectFile == self).\
                          filter(RasterMapFile.fileExtension == maskExtension).\
                          one()

        # Get mask map as a KML polygon
        statement = """
                    SELECT val, ST_AsGeoJSON(geom) As polygon
                    FROM (
                    SELECT (ST_DumpAsPolygons({0})).*
                    FROM {1} WHERE id={2}
                    ) As foo
                    ORDER BY val;
                    """.format('raster', maskMap.tableName, maskMap.id)

        result = session.execute(statement)

        maskMapJsonPolygon = ''
        for row in result:
            maskMapJsonPolygon = row.polygon

        jsonString = maskMapJsonPolygon

        if withStreamNetwork:
            # Get the channel input file for the stream network
            channelInputFile = self.channelInputFile

            if channelInputFile is not None:
                # Use the existing method on the channel input file to generate the stream network GeoJson
                jsonStreamNetwork = channelInputFile.getStreamNetworkAsGeoJson(session=session, withNodes=withNodes)

                # Convert to json Python objects
                featureCollection = json.loads(jsonStreamNetwork)
                jsonMaskMapObjects = json.loads(maskMapJsonPolygon)

                # Create a mask feature
                maskFeature = {"type": "Feature",
                               "geometry": jsonMaskMapObjects,
                               "properties": {},
                               "id": maskMap.id}

                # Add mask map to feature collection
                tempFeatures = featureCollection['features']
                tempFeatures.append(maskFeature)
                featureCollection['features'] = tempFeatures

                # Dump to string
                jsonString = json.dumps(featureCollection)

        return jsonString