Beispiel #1
0
def delete(uid):
    """A function to delete a deviation map, all its tables, files and GeoServer layers.

    GET request: Renders and returns a site showing delete options.

    POST request: Gets delete options chosen by user and uses them to delete the chosen parts of the deviation map.
    To delete GeoServer layers the GeoServer configuration client library is used.
    """
    uid = uid.encode("ISO-8859-1")
    if request.method == "POST":
        dm = DevMap.query.filter_by(uid=uid).first()
        if (
            current_user.is_authenticated()
            and dm.owner == current_user
            or dm.owner == User.query.filter_by(username="******").first()
        ):
            if (
                dm.wmsposdevlines
                or dm.wmsmaxdevgrid
                or dm.wmsabsdevgrid
                or dm.wmsmatchingrategrid
                or dm.wmsunmatchedref
                or dm.wmsunmatchedosm
                or dm.wmsmatchedref
                or dm.wmsmatchedosm
                or dm.wmsminlevenshtein
                or dm.wmsmaxlevenshtein
            ):
                cat = Catalog(gs_url + "rest")
                cat.username = gs_user
                cat.password = gs_password
                ws = None
                try:
                    ws = cat.get_workspace(gs_workspace)
                except socket.error, e:
                    detail = "GeoServer is not available. Make sure that it is running and the connection is ok."
                    return render_template("error.html", err=e, detail=detail)

                st = cat.get_store(gs_store, ws)
                if "deletemaxdevgrid" in request.form or "deleteall" in request.form:
                    feattype = "odf_" + uid + "_maxdevgrid"
                    if dm.wmsmaxdevgrid:
                        l = cat.get_layer(feattype)
                        if l is not None:
                            cat.delete(l)
                        dm.wmsmaxdevgrid = False
                if "deleteposdevlines" in request.form or "deleteall" in request.form:
                    feattype = "odf_" + uid + "_posdevlines"
                    if dm.wmsposdevlines:
                        l = cat.get_layer(feattype)
                        if l is not None:
                            cat.delete(l)
                        dm.wmsposdevlines = False
                if "deleteabsdevgrid" in request.form or "deleteall" in request.form:
                    feattype = "odf_" + uid + "_absdevgrid"
                    if dm.wmsabsdevgrid:
                        l = cat.get_layer(feattype)
                        if l is not None:
                            cat.delete(l)
                        ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                        if ft is not None:
                            cat.delete(ft)
                        dm.wmsabsdevgrid = False
                if "deletematchingrategrid" in request.form or "deleteall" in request.form:
                    feattype = "odf_" + uid + "_matchingrategrid"
                    if dm.wmsmatchingrategrid:
                        l = cat.get_layer(feattype)
                        if l is not None:
                            cat.delete(l)
                        dm.wmsmatchingrategrid = False
                if "deleteunmatchedref" in request.form or "deleteall" in request.form:
                    feattype = "odf_" + uid + "_unmatchedref"
                    if dm.wmsunmatchedref:
                        l = cat.get_layer(feattype)
                        if l is not None:
                            cat.delete(l)
                        dm.deleteunmatchedref = False
                if "deleteunmatchedosm" in request.form or "deleteall" in request.form:
                    feattype = "odf_" + uid + "_unmatchedosm"
                    if dm.wmsunmatchedosm:
                        l = cat.get_layer(feattype)
                        if l is not None:
                            cat.delete(l)
                        dm.wmsunmatchedosm = False
                if "deletematchedref" in request.form or "deleteall" in request.form:
                    feattype = "odf_" + uid + "_matchedref"
                    if dm.wmsmatchedref:
                        l = cat.get_layer(feattype)
                        if l is not None:
                            cat.delete(l)
                        dm.wmsmatchedref = False
                if "deletematchedosm" in request.form or "deleteall" in request.form:
                    feattype = "odf_" + uid + "_matchedosm"
                    if dm.wmsmatchedosm:
                        l = cat.get_layer(feattype)
                        if l is not None:
                            cat.delete(l)
                        dm.wmsmatchedosm = False
                if "deleteminlevenshtein" in request.form or "deleteall" in request.form:
                    feattype = "odf_" + uid + "_minlevenshtein"
                    if dm.wmsminlevenshtein:
                        l = cat.get_layer(feattype)
                        if l is not None:
                            cat.delete(l)
                        dm.wmsminlevenshtein = False
                if "deletemaxlevenshtein" in request.form or "deleteall" in request.form:
                    feattype = "odf_" + uid + "_maxlevenshtein"
                    if dm.wmsmaxlevenshtein:
                        l = cat.get_layer(feattype)
                        if l is not None:
                            cat.delete(l)
                        dm.wmsmaxlevenshtein = False

            if "deleteall" in request.form:
                folder = secure_filename(uid)
                folder = os.path.join(app.config["UPLOAD_FOLDER"], folder)
                shutil.rmtree(folder, True)
                db.engine.execute("drop table if exists odf_" + uid + "_ref")
                db.engine.execute("drop table if exists odf_" + uid + "_ref_presplitted")
                db.engine.execute("drop table if exists odf_" + uid + "_ref_splitted")
                db.engine.execute("drop table if exists odf_" + uid + "_found")
                db.engine.execute("drop table if exists odf_" + uid + "_ref_junctions")
                db.engine.execute("drop table if exists odf_" + uid + "_ref_points")
                db.engine.execute("drop table if exists odf_" + uid + "_ref_cutpoints")
                db.engine.execute("drop table if exists odf_" + uid + "_ref_cutcheckpoints")
                db.engine.execute("drop table if exists odf_" + uid + "_osm")
                db.engine.execute("drop table if exists odf_" + uid + "_osm_presplitted")
                db.engine.execute("drop table if exists odf_" + uid + "_osm_splitted")
                db.engine.execute("drop table if exists odf_" + uid + "_osm_junctions")
                db.engine.execute("drop table if exists odf_" + uid + "_osm_points")
                db.engine.execute("drop table if exists odf_" + uid + "_osm_cutpoints")
                db.engine.execute("drop table if exists odf_" + uid + "_osm_cutcheckpoints")
                db.engine.execute("drop table if exists odf_" + uid + "_unmatchedref;")
                db.engine.execute("drop table if exists odf_" + uid + "_unmatchedosm;")
                db.engine.execute("drop table if exists odf_" + uid + "_minlevenshtein;")
                db.engine.execute("drop table if exists odf_" + uid + "_maxlevenshtein;")
                db.engine.execute("drop table if exists odf_" + uid + "_grid;")
                db.engine.execute("drop table if exists odf_" + uid + "_maxdevgrid;")
                db.engine.execute("drop table if exists odf_" + uid + "_matchingrategrid;")
                db.engine.execute("drop table if exists odf_" + uid + "_deviationlines")
                db.engine.execute("drop table if exists odf_" + uid + "_junction_deviationlines")

                if DEBUG:
                    db.engine.execute("drop table if exists odf_" + uid + "_osm_presplitted_cutcheckpoints")
                    db.engine.execute("drop table if exists odf_" + uid + "_osm_presplitted_cutpoints")
                    db.engine.execute("drop table if exists odf_" + uid + "_osm_presplitted_junctions")
                    db.engine.execute("drop table if exists odf_" + uid + "_osm_presplitted_points")
                    db.engine.execute("drop table if exists odf_" + uid + "_ref_corrected")
                    db.engine.execute("drop table if exists odf_" + uid + "_ref_corrected_presplitted")
                    db.engine.execute("drop table if exists odf_" + uid + "_ref_corrected_presplitted_cutcheckpoints")
                    db.engine.execute("drop table if exists odf_" + uid + "_ref_corrected_presplitted_cutpoints")
                    db.engine.execute("drop table if exists odf_" + uid + "_ref_corrected_presplitted_junction_devvec")
                    db.engine.execute("drop table if exists odf_" + uid + "_ref_corrected_presplitted_junctions")
                    db.engine.execute("drop table if exists odf_" + uid + "_ref_corrected_presplitted_points")
                    db.engine.execute("drop table if exists odf_" + uid + "_result")

            if "deleteall" not in request.form:
                db.session.add(dm)
                db.session.commit()
                return render_template("delete.html", uid=uid, dm=dm, error=None)
            else:
                db.session.delete(dm)
                db.session.commit()
                return redirect(url_for("basic.index"))
        else:
            return render_template("error.html", err="You are not allowed to delete this map!")
Beispiel #2
0
from geoserver.catalog import Catalog
import geoserver.util

cat = Catalog("http://localhost:9090/geoserver/rest/")
cat.username = "******"
cat.password = "******"

workspace = cat.get_workspace("fenix")
cat.create_coveragestore(
    "test_gsconfig2",
    "/home/vortex/Desktop/LAYERS/MOROCCO_MICHELA/to_publish/original/wheat_mask.tif",
    workspace)
layer = cat.get_layer("test_gsconfig2")
layer._set_default_style("mask")
cat.save(layer)
# print cat
# print "here"
# layer = cat.get_style("burg")
Beispiel #3
0
def export(uid):
    """This function is used to show and handle the export options and uses the GeoServer REST API to export results.
    This function uses the GeoServer configuration client library by boundlessgeo, see:
    https://github.com/boundlessgeo/gsconfig
    To export the results, the GeoServer application has to be running and should be correctly set up to have access
    to the database and the styles should already be imported, see geoserver styles folder.

    GET request: Renders and returns a site showing export options.

    POST request: Gets the export options from the user and exports the results if they are defined in the options.
    The export is made by using GeoServer configuration client library. After the export, the newly created layers
    should be visible in the GeoServer web interface and the WM(T)S links should also work. These links can then be
    used to display the WM(T)S layers in JOSM or a gis.

    Remarks: This function will be redesigned in future versions
    """
    uid = uid.encode("ISO-8859-1")
    if request.method == "POST":
        dm = DevMap.query.filter_by(uid=uid).first()
        if dm.owner == current_user or dm.owner == User.query.filter_by(username="******").first():
            title = request.form["title"]
            listedmap = False
            if "listed" in request.form:
                listedmap = True

            dm.title = title
            dm.listed = listedmap
            cat = Catalog(gs_url + "rest")
            cat.username = gs_user
            cat.password = gs_password

            ws = None
            try:
                ws = cat.get_workspace(gs_workspace)
            except socket.error, e:
                db.session.add(dm)
                db.session.commit()
                return render_template("export.html", uid=uid, error=e, dm=dm)
            st = cat.get_store(gs_store, ws)

            if "maxdevgrid" in request.form:
                feattype = "odf_" + uid + "_maxdevgrid"
                if dm.wmsmaxdevgrid:
                    l = cat.get_layer(feattype)
                    if l is not None:
                        cat.delete(l)
                    ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                    if ft is not None:
                        cat.delete(ft)
                ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                cat.save(ft)
                l = cat.get_layer(feattype)
                l._set_default_style(gs_workspace + ":maxdevgrid")
                cat.save(l)
                dm.wmsmaxdevgrid = True
            else:
                dm.wmsmaxdevgrid = True
            if "posdevlines" in request.form:
                feattype = "odf_" + uid + "_posdevlines"
                if dm.wmsposdevlines:
                    l = cat.get_layer(feattype)
                    if l is not None:
                        cat.delete(l)
                    ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                    if ft is not None:
                        cat.delete(ft)
                ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                cat.save(ft)
                l = cat.get_layer(feattype)
                l._set_default_style(gs_workspace + ":posdevlines")
                cat.save(l)
                dm.wmsposdevlines = True
            else:
                dm.wmsposdevlines = False
            if "absdevgrid" in request.form:
                feattype = "odf_" + uid + "_absdevgrid"
                if dm.wmsabsdevgrid:
                    l = cat.get_layer(feattype)
                    if l is not None:
                        cat.delete(l)
                    ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                    if ft is not None:
                        cat.delete(ft)
                ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                cat.save(ft)
                l = cat.get_layer(feattype)
                l._set_default_style(gs_workspace + ":absdevgrid")
                cat.save(l)
                dm.wmsabsdevgrid = True
            else:
                dm.wmsabsdevgrid = False
            if "matchingrategrid" in request.form:
                feattype = "odf_" + uid + "_matchingrategrid"
                if dm.wmsmatchingrategrid:
                    l = cat.get_layer(feattype)
                    if l is not None:
                        cat.delete(l)
                    ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                    if ft is not None:
                        cat.delete(ft)
                ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                cat.save(ft)
                l = cat.get_layer(feattype)
                l._set_default_style(gs_workspace + ":matchingrategrid")
                cat.save(l)
                dm.wmsmatchingrategrid = True
            else:
                dm.wmsmatchingrategrid = False
            if "unmatchedref" in request.form:
                feattype = "odf_" + uid + "_unmatchedref"
                if dm.wmsunmatchedref:
                    l = cat.get_layer(feattype)
                    if l is not None:
                        cat.delete(l)
                    ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                    if ft is not None:
                        cat.delete(ft)
                ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                cat.save(ft)
                l = cat.get_layer(feattype)
                l._set_default_style(gs_workspace + ":ReferenceLines")
                cat.save(l)
                dm.unmatchedref = True
            else:
                dm.unmatchedref = False
            if "unmatchedosm" in request.form:
                feattype = "odf_" + uid + "_unmatchedosm"
                if dm.unmatchedosm:
                    l = cat.get_layer(feattype)
                    if l is not None:
                        cat.delete(l)
                    ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                    if ft is not None:
                        cat.delete(ft)
                ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                cat.save(ft)
                l = cat.get_layer(feattype)
                l._set_default_style(gs_workspace + ":OSMLines")
                cat.save(l)
                dm.wmsunmatchedosm = True
            else:
                dm.wmsunmatchedosm = False
            if "matchedref" in request.form:
                feattype = "odf_" + uid + "_matchedref"
                if dm.wmsmatchedref:
                    l = cat.get_layer(feattype)
                    if l is not None:
                        cat.delete(l)
                    ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                    if ft is not None:
                        cat.delete(ft)
                ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                cat.save(ft)
                l = cat.get_layer(feattype)
                l._set_default_style(gs_workspace + ":ReferenceLines")
                cat.save(l)
                dm.wmsmatchedref = True
            else:
                dm.wmsmatchedref = False
            if "matchedosm" in request.form:
                feattype = "odf_" + uid + "_matchedosm"
                if dm.wmsmatchedosm:
                    l = cat.get_layer(feattype)
                    if l is not None:
                        cat.delete(l)
                    ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                    if ft is not None:
                        cat.delete(ft)
                ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                cat.save(ft)
                l = cat.get_layer(feattype)
                l._set_default_style(gs_workspace + ":OSMLines")
                cat.save(l)
                dm.wmsmatchedosm = True
            else:
                dm.wmsmatchedosm = False
            if "minlevenshtein" in request.form:
                feattype = "odf_" + uid + "_minlevenshtein"
                if dm.wmsminlevenshtein:
                    l = cat.get_layer(feattype)
                    if l is not None:
                        cat.delete(l)
                    ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                    if ft is not None:
                        cat.delete(ft)
                ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                cat.save(ft)
                l = cat.get_layer(feattype)
                l._set_default_style(gs_workspace + ":ReferenceLines")
                cat.save(l)
                dm.wmsminlevenshtein = True
            else:
                dm.wmsminlevenshtein = False
            if "maxlevenshtein" in request.form:
                feattype = "odf_" + uid + "_maxlevenshtein"
                if dm.wmsmaxlevenshtein:
                    l = cat.get_layer(feattype)
                    if l is not None:
                        cat.delete(l)
                    ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                    if ft is not None:
                        cat.delete(ft)
                ft = cat.publish_featuretype(feattype, st, "EPSG:4326")
                cat.save(ft)
                l = cat.get_layer(feattype)
                l._set_default_style(gs_workspace + ":ReferenceLines")
                cat.save(l)
                dm.wmsmaxlevenshtein = True
            else:
                dm.wmsmaxlevenshtein = False

            db.session.add(dm)
            db.session.commit()
            return render_template("finished.html", uid=uid)
        else:
            return render_template("export.html", uid=uid, error="No User", dm=dm)
Beispiel #4
0
from geoserver.catalog import Catalog
import geoserver.util


cat = Catalog("http://localhost:9090/geoserver/rest/")
cat.username = "******"
cat.password = "******"

workspace = cat.get_workspace("fenix")
cat.create_coveragestore("test_gsconfig2", "/home/vortex/Desktop/LAYERS/MOROCCO_MICHELA/to_publish/original/wheat_mask.tif", workspace)
layer = cat.get_layer("test_gsconfig2")
layer._set_default_style("mask")
cat.save(layer)
# print cat
# print "here"
# layer = cat.get_style("burg")