Exemple #1
0
    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
Exemple #3
0
    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