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