def layerOperations(layerid=0, operation=''):
    """ Esri API, process all operations for layer by Layer ID and operation name
    http://resources.arcgis.com/en/help/rest/apiref/fslayer.html
    http://resources.arcgis.com/en/help/rest/apiref/fsquery.html#response

    Known request example
    .../FeatureServer/0/query?returnGeometry=true
        &geometryType=esriGeometryEnvelope
        &geometry={"xmin":-7182265.21424325,"ymin":-1567516.84684806,"xmax":17864620.2142433,"ymax":14321601.0968481,"spatialReference":{"wkid":102100}}
        &inSR=102100
        &spatialRel=esriSpatialRelIntersects
        &outSR=102100
        &outFields=*
        &f=pjson

    f=pjson by default
    """
    res = {}
    ini = mfslib.getIniData(APP)
    lyrs = mfslib.getLyrsList(ini)

    if not (str(layerid) in lyrs and operation == 'query'):
        res = esri.errorObject(
            details=
            u"Unsupported query parameters: layerid not in %s or operation != 'query'"
            % lyrs)
        return makeResponce(res)

    lyrconf = getLayerConfig(str(layerid))
    if not lyrconf.isValid():
        res = esri.errorObject(details=u"Layer config not found.")
        return makeResponce(res)

    ds = getDataSource()

    op = esri.getLyrOperation(operation, request.values)

    try:
        res = layerdata.layerData(lyrconf, ds, op)
    except Exception, e:
        traceback.print_exc(file=sys.stderr)
        res = esri.errorObject(details=u"Data processing error: %s" % e)
def layerOperations(layerid=0, operation=''):
    """ Esri API, process all operations for layer by Layer ID and operation name
    http://resources.arcgis.com/en/help/rest/apiref/fslayer.html
    http://resources.arcgis.com/en/help/rest/apiref/fsquery.html#response

    Known request example
    .../FeatureServer/0/query?returnGeometry=true
        &geometryType=esriGeometryEnvelope
        &geometry={"xmin":-7182265.21424325,"ymin":-1567516.84684806,"xmax":17864620.2142433,"ymax":14321601.0968481,"spatialReference":{"wkid":102100}}
        &inSR=102100
        &spatialRel=esriSpatialRelIntersects
        &outSR=102100
        &outFields=*
        &f=pjson

    f=pjson by default
    """
    res = {}
    ini = mfslib.getIniData(APP)
    lyrs = mfslib.getLyrsList(ini)

    if not (str(layerid) in lyrs and operation == 'query'):
        res = esri.errorObject(
            details=u"Unsupported query parameters: layerid not in %s or operation != 'query'" % lyrs)
        return makeResponce(res)

    lyrconf = getLayerConfig(str(layerid))
    if not lyrconf.isValid():
        res = esri.errorObject(details=u"Layer config not found.")
        return makeResponce(res)

    ds = getDataSource()

    op = esri.getLyrOperation(operation, request.values)

    try:
        res = layerdata.layerData(lyrconf, ds, op)
    except Exception, e:
        traceback.print_exc(file=sys.stderr)
        res = esri.errorObject(details=u"Data processing error: %s" % e)
def layerController(layerid=0):
    """ Esri API, process requests to layer by Layer ID
    http://resources.arcgis.com/en/help/rest/apiref/fslayer.html

    Known requests example
    .../FeatureServer/0?f=pjson

    f=json by default
    """
    # layer metadata .../FeatureServer/0?f=pjson
    ini = mfslib.getIniData(APP)
    lyrs = mfslib.getLyrsList(ini)

    if not (str(layerid) in lyrs):
        resp = esri.errorObject(
            details=u"Invalid query parameters: layerid %s not in %s" % (layerid, lyrs))
        return makeResponce(resp)

    stordir = APP.config['DATA_FILES_ROOTDIR']
    text = layermeta.layerMeta(layerid, stordir)
    resp = make_response(text)
    resp.headers['Content-Type'] = 'text/plain;charset=utf-8'
    return resp
def layerController(layerid=0):
    """ Esri API, process requests to layer by Layer ID
    http://resources.arcgis.com/en/help/rest/apiref/fslayer.html

    Known requests example
    .../FeatureServer/0?f=pjson

    f=json by default
    """
    # layer metadata .../FeatureServer/0?f=pjson
    ini = mfslib.getIniData(APP)
    lyrs = mfslib.getLyrsList(ini)

    if not (str(layerid) in lyrs):
        resp = esri.errorObject(
            details=u"Invalid query parameters: layerid %s not in %s" %
            (layerid, lyrs))
        return makeResponce(resp)

    stordir = APP.config['DATA_FILES_ROOTDIR']
    text = layermeta.layerMeta(layerid, stordir)
    resp = make_response(text)
    resp.headers['Content-Type'] = 'text/plain;charset=utf-8'
    return resp