def getCrimesMapByFelonyType(self, dataframe, symbol): xCoordList: List[float] = dataframe['x'] yCoordList: List[float] = dataframe['y'] if len(xCoordList) == 0 or len(xCoordList) != len(yCoordList): raise DatasetEmptyError pointList = [ Point({ "x": xCoordList[index], "y": yCoordList[index] }) for index in range(len(xCoordList)) ] featureSet = self.__getPointFeatureSet(pointList) crime_map = self.__getAtlantaMapWithNeighborhoodMap() crime_map.add_layer( FeatureCollection.from_featureset(featureSet, symbol=symbol)) crime_map.draw(featureSet, symbol=symbol) return crime_map
def _feature_input(input_layer): input_param = input_layer input_layer_url = "" if isinstance(input_layer, arcgis.gis.Item): if input_layer.type.lower() == 'feature service': input_param = input_layer.layers[0]._lyr_dict elif input_layer.type.lower() == 'big data file share': input_param = input_layer.layers[0]._lyr_dict elif input_layer.type.lower() == 'feature collection': fcdict = input_layer.get_data() fc = FeatureCollection(fcdict['layers'][0]) input_param = fc.layer else: raise TypeError( "item type must be feature service or feature collection") elif isinstance(input_layer, arcgis.features.FeatureLayerCollection): input_param = input_layer.layers[0]._lyr_dict elif isinstance(input_layer, arcgis.features.FeatureCollection): input_param = input_layer.properties elif isinstance(input_layer, arcgis.gis.Layer): input_param = input_layer._lyr_dict elif isinstance(input_layer, dict): input_param = input_layer elif isinstance(input_layer, str): input_param = {"url": input_layer} else: raise Exception( "Invalid format of input layer. url string, feature service Item, feature service instance or dict supported" ) return input_param
def _feature_input(self, input_layer): point_fs = { "layerDefinition": { "currentVersion": 10.11, "copyrightText": "", "defaultVisibility": True, "relationships": [], "isDataVersioned": False, "supportsRollbackOnFailureParameter": True, "supportsStatistics": True, "supportsAdvancedQueries": True, "geometryType": "esriGeometryPoint", "minScale": 0, "maxScale": 0, "objectIdField": "OBJECTID", "templates": [], "type": "Feature Layer", "displayField": "TITLE", "visibilityField": "VISIBLE", "name": "startDrawPoint", "hasAttachments": False, "typeIdField": "TYPEID", "capabilities": "Query", "allowGeometryUpdates": True, "htmlPopupType": "", "hasM": False, "hasZ": False, "globalIdField": "", "supportedQueryFormats": "JSON", "hasStaticData": False, "maxRecordCount": -1, "indexes": [], "types": [], "fields": [{ "alias": "OBJECTID", "name": "OBJECTID", "type": "esriFieldTypeOID", "editable": False }, { "alias": "Title", "name": "TITLE", "length": 50, "type": "esriFieldTypeString", "editable": True }, { "alias": "Visible", "name": "VISIBLE", "type": "esriFieldTypeInteger", "editable": True }, { "alias": "Description", "name": "DESCRIPTION", "length": 1073741822, "type": "esriFieldTypeString", "editable": True }, { "alias": "Type ID", "name": "TYPEID", "type": "esriFieldTypeInteger", "editable": True }] }, "featureSet": { "features": [{ "geometry": { "x": 80.27032792000051, "y": 13.085227147000467, "spatialReference": { "wkid": 4326, "latestWkid": 4326 } }, "attributes": { "description": "blayer desc", "title": "blayer", "OBJECTID": 0, "VISIBLE": 1 }, "symbol": { "angle": 0, "xoffset": 0, "yoffset": 8.15625, "type": "esriPMS", "url": "https://cdn.arcgis.com/cdn/7674/js/jsapi/esri/dijit/images/Directions/greenPoint.png", "imageData": "iVBORw0KGgoAAAANSUhEUgAAABUAAAAdCAYAAABFRCf7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4OTI1MkU2ODE0QzUxMUUyQURFMUNDNThGMTA3MjkzMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4OTI1MkU2OTE0QzUxMUUyQURFMUNDNThGMTA3MjkzMSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjg5MjUyRTY2MTRDNTExRTJBREUxQ0M1OEYxMDcyOTMxIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjg5MjUyRTY3MTRDNTExRTJBREUxQ0M1OEYxMDcyOTMxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+iVNkdQAABJlJREFUeNp0VltvG0UUnpkdr72261CnCQWEIA9FqOKlqooARUKCtAUhoA+VoBVRhfgFXKSKJ97goRL8ARCIclGgL0VUkBBAoBaVoggEQQVSAhFS06SJje3Y3t25cc7srL3YjddHs3N85pvvfOfMyJRs83n8o+P7POI9yQibooTeBa68ISbSRv+hifpCGHX2s6dnfrrRWjroOPzB0T0+zZ0q8uDRSrniF/MB8X2fADhR8IRRRDphh7Q6rbgtOucU0Sdnj59Z2hb00PtHD+Zp/p2x6uitO4o7iLYP8DMafjVE2wXUboALm50W2ahtXO3q8MTX02fnh0Affu/IkSAXnL55dLzMPU6kURZMIZQhFtRk2VBKcpQTIQVZ21hrdUX4zDcnPv2kBzr59mP3BLnChfGx8YrHPKIAELSzMPhQk+ydzpOvIYwywjFeK7K+vt6IlZw8/+y5RZ4gm9eCUrGCmkUyBkCV0Sd5UlBtTLIhRWQE9ixwsVwe6dY3X4WwJ+j9bx7a7/v5i6O7qlxisFZJAvBF7Rjty56CWlmszilj6BNgXd+syTCO7uNK62nuezyUkWWASTPHDtOjbgOHkJTOsbXAyJhIC+rlODdROM211gcQKBJxoh+EKAs4AGqybHVfBvdICNIU/IDHYbcJiS6le4wwbW1B9UDXJcg9QBxtbglh1BlAJzjoUxIGQZFRwtAypgnjtH0spDG9MWVs34xrN5uBLnEoTKQUgDLgZ6hliLunBaIDhy4LYhyotptZlphGyLUhfyspxxj3AIpaVqikdgyzoGn7p0xNj71rNamweCscWC0qoQ8YRm3K2OgpeFoc+j9FSUYKB+4OgxIK4RcZUJ6RsUgqCrShxWzza9035aw/lzYGY5P4xFSMR5vMcFpm87opL4HjXsr76dLhC2xYhgx3I0BfoS7RCp+3K/e8vn+Ke2zWK+cYofQG9yMlw1eK1aAni9oSWil9eOmFhXkPnbXZ1eXqwVsirfQU9Vynm75lymLbxvpSP4yqI4iR5uWlFxdOI56Xbro5t3qhOrW7ZmL1EOFwp7k6pRXuWaZgBmuwJSIl1fNXXvrxjRTLy2ZTm1v9YeTBXedNbCYZZ1U4pdt+NGiomuKKEvKp5ZM/f5z9zctc1vju1b9cv5q/M/icBd4+KNztlnGWKfYjAMqm+K7zZ/PYP6d+X3TrafbmR8N71QcrOPMLd5RGdj838WFup393orNLWRki6vFv197661i40m6AKwYLneG79BzDPNhNYFWwnfguGyKgPl32bwseoTnKekVpS9n49vorWwv1JsSVwAJHCHcW2Agsk3rBBZXBihhcn11biTfDixpPik1bEZyj34EVXXzJrUccWwrbZo5+B6ztRpvO1kLjjO5qW3YccZ5JeTAecQxqqV0Q6hM5KVIrNL5a/77yQPUyLbK9qiMv49zFhW6MMnPE0dwxlQ48ckXDNHJOq0C2xByreHtxhPk1sK4DEI5dut7+QWCZCyj9MXKLWmD/gl1Xtfhd6F2CI86dv+XiIrdOpeeCDd0VyW7KGbLptn9p/mrgNsIxwzKN0QO3IvlPgAEA3AQhIZtaN54AAAAASUVORK5CYII=", "contentType": "image/png", "width": 15.75, "height": 21.75 } }], "geometryType": "esriGeometryPoint" }, "nextObjectId": 1 } input_layer_url = "" if isinstance(input_layer, Item): if input_layer.type.lower() == 'feature service': input_param = {"url": input_layer.layers[0].url} elif input_layer.type.lower() == 'feature collection': fcdict = input_layer.get_data() fc = FeatureCollection(fcdict['layers'][0]) input_param = fc.layer else: raise TypeError( "item type must be feature service or feature collection") elif isinstance(input_layer, FeatureLayerCollection): input_layer_url = input_layer.layers[0].url # ["url"] input_param = {"url": input_layer_url} elif isinstance(input_layer, FeatureCollection): input_param = input_layer.properties elif isinstance(input_layer, Layer): input_layer_url = input_layer.url input_param = {"url": input_layer_url} elif isinstance( input_layer, tuple): # geocoding location, convert to point featureset input_param = point_fs input_param["featureSet"]["features"][0]["geometry"][ "x"] = input_layer[1] input_param["featureSet"]["features"][0]["geometry"][ "y"] = input_layer[0] elif isinstance( input_layer, dict ): # could add support for geometry one day using geometry -> featureset input_param = input_layer """ res = gis.analysis.trace_downstream({"layerDefinition": { "geometryType":"esriGeometryPoint", "fields":[{"alias":"OBJECTID","name":"OBJECTID","type":"esriFieldTypeOID","editable":False}, {"alias":"Title","name":"TITLE","length":50,"type":"esriFieldTypeString","editable":True}, {"alias":"Visible","name":"VISIBLE","type":"esriFieldTypeInteger","editable":True}, {"alias":"Description","name":"DESCRIPTION","length":1073741822,"type":"esriFieldTypeString","editable":True}, {"alias":"Type ID","name":"TYPEID","type":"esriFieldTypeInteger","editable":True}] }, "featureSet":{ "features":[ { "geometry":{ "x":8913583.679975435, "y":1460497.641278398, "spatialReference":{"wkid":102100,"latestWkid":3857} }, "attributes":{"description":"blayer desc","title":"blayer","OBJECTID":0,"VISIBLE":1}, } ], "geometryType":"esriGeometryPoint" }, "nextObjectId":1 }) """ elif isinstance(input_layer, str): input_layer_url = input_layer input_param = {"url": input_layer_url} else: raise Exception( "Invalid format of input layer. url string, feature service Item, feature service instance or dict supported" ) return input_param