I published a Feature Layer using the arcgis Python API with a custom definition, but I am not able to query it. When I put this layer on the map I keep getting 400 errors, saying "Unable to perform query. Please check your parameters.", which is not very helpful. I figured out the error goes away when I remove the 'geometry' part of the query and I get back all the results. But that doesn't help me display it on a map.
Is there something possibly wrong with my definition when I create the service, or something else?
Hi Swakeert Jain,
There could be a couple of reasons,
Can you share your code snippet and your custom definition so that I can have a look at it?
Regards,
Derrick
Hi Derrick Wong,
Thank you for your response. Here is a link to a sample Feature Layer I created. (If you go to this codepen and monitor the network calls when moving around the map, all of them return 400)
On creating the Feature Service, I am not giving any extra parameters and letting it use the defaults. For the Feature Layer, I am sending the following definition. Other than the drawing info, I am not trying to set anything in particular:
{'layers': [{'id': 0,
'name': 'My Geography',
'parentLayerId': -1,
'defaultVisibility': True,
'geometryType': 'esriGeometryPolygon',
'drawingInfo': {'renderer': {'type': 'uniqueValue',
'authoringInfo': {'fields': ['F2017_DB_KEY_1',
'F2017_DB_KEY_2',
'F2017_DB_KEY_3',
'F2017_DB_KEY_4'],
'type': 'predominance',
'visualVariables': [{'maxSliderValue': 100,
'minSliderValue': 0,
'type': 'transparencyInfo'}]},
'visualVariables': [{'type': 'sizeInfo',
'target': 'outline',
'expression': 'view.scale',
'valueExpression': '$view.scale',
'stops': [{'size': 1.5, 'value': 873619},
{'size': 0.75, 'value': 2730060},
{'size': 0.375, 'value': 10920241},
{'size': 0, 'value': 21840483}]}],
'valueExpression': '$feature["F2017_DB_KEY_1"];\n$feature["F2017_DB_KEY_2"];\n$feature["F2017_DB_KEY_3"];\n$feature["F2017_DB_KEY_4"];\nvar fieldNames = ["F2017_DB_KEY_1", "F2017_DB_KEY_2", "F2017_DB_KEY_3", "F2017_DB_KEY_4"];\nvar numFields = 4;\nvar maxValueField = null;\nvar maxValue = -Infinity;\nvar value, i, totalValue = null;\nfor(i = 0; i < numFields; i++) {\nvalue = $feature[fieldNames];\nif(value > 0) {\nif(value > maxValue) {\nmaxValue = value;\nmaxValueField = fieldNames;\n}\nelse if (value == maxValue) {\nmaxValueField = null;\n}\n}\n}\nreturn maxValueField;\n',
'valueExpressionTitle': 'Predominant Category',
'uniqueValueInfos': [{'value': 'F2017_DB_KEY_1',
'label': '2017 DataBase Key 1',
'symbol': {'color': [175, 0, 110],
'outline': {'color': [255, 255, 255],
'width': 1,
'type': 'esriSLS',
'style': 'esriSLSSolid'},
'type': 'esriSFS',
'style': 'esriSFSSolid'}},
{'value': 'F2017_DB_KEY_2',
'label': '2017 DataBase Key 2',
'symbol': {'color': [21, 195, 218],
'outline': {'color': [255, 255, 255],
'width': 1,
'type': 'esriSLS',
'style': 'esriSLSSolid'},
'type': 'esriSFS',
'style': 'esriSFSSolid'}},
{'value': 'F2017_DB_KEY_3',
'label': '2017 DataBase Key 3',
'symbol': {'color': [253, 185, 19],
'outline': {'color': [255, 255, 255],
'width': 1,
'type': 'esriSLS',
'style': 'esriSLSSolid'},
'type': 'esriSFS',
'style': 'esriSFSSolid'}},
{'value': 'F2017_DB_KEY_4',
'label': '2017 DataBase Key 4',
'symbol': {'color': [94, 39, 81],
'outline': {'color': [255, 255, 255],
'width': 1,
'type': 'esriSLS',
'style': 'esriSLSSolid'},
'type': 'esriSFS',
'style': 'esriSFSSolid'}}]},
'transparency': 9},
'fields': [{'name': 'ObjectId',
'type': 'esriFieldTypeOID',
'actualType': 'int',
'alias': '',
'sqlType': 'sqlTypeInteger',
'nullable': False,
'editable': False,
'domain': None,
'defaultValue': None},
{'name': 'F2016_DB_KEY_1',
'alias': '2016 DataBase Key 1',
'type': 'esriFieldTypeSingle',
'actualType': 'real',
'sqlType': 'sqlTypeReal'},
{'name': 'F2017_DB_KEY_1',
'alias': '2017 DataBase Key 1',
'type': 'esriFieldTypeSingle',
'actualType': 'real',
'sqlType': 'sqlTypeReal'},
{'name': 'F2016_DB_KEY_2',
'alias': '2016 DataBase Key 2',
'type': 'esriFieldTypeSingle',
'actualType': 'real',
'sqlType': 'sqlTypeReal'},
{'name': 'F2017_DB_KEY_2',
'alias': '2017 DataBase Key 2',
'type': 'esriFieldTypeSingle',
'actualType': 'real',
'sqlType': 'sqlTypeReal'},
{'name': 'F2016_DB_KEY_3',
'alias': '2016 DataBase Key 3',
'type': 'esriFieldTypeSingle',
'actualType': 'real',
'sqlType': 'sqlTypeReal'},
{'name': 'F2017_DB_KEY_3',
'alias': '2017 DataBase Key 3',
'type': 'esriFieldTypeSingle',
'actualType': 'real',
'sqlType': 'sqlTypeReal'},
{'name': 'F2016_DB_KEY_4',
'alias': '2016 DataBase Key 4',
'type': 'esriFieldTypeSingle',
'actualType': 'real',
'sqlType': 'sqlTypeReal'},
{'name': 'F2017_DB_KEY_4',
'alias': '2017 DataBase Key 4',
'type': 'esriFieldTypeSingle',
'actualType': 'real',
'sqlType': 'sqlTypeReal'},
{'name': 'F2016_DB_EXTRA_1',
'alias': '2016 DataBase Extra 1',
'type': 'esriFieldTypeSingle',
'actualType': 'real',
'sqlType': 'sqlTypeReal'},
{'name': 'F2017_DB_EXTRA_1',
'alias': '2017 DataBase Extra 1',
'type': 'esriFieldTypeSingle',
'actualType': 'real',
'sqlType': 'sqlTypeReal'},
{'name': 'F2016_DB_EXTRA_2',
'alias': '2016 DataBase Extra 2',
'type': 'esriFieldTypeSingle',
'actualType': 'real',
'sqlType': 'sqlTypeReal'},
{'name': 'F2017_DB_EXTRA_2',
'alias': '2017 DataBase Extra 2',
'type': 'esriFieldTypeSingle',
'actualType': 'real',
'sqlType': 'sqlTypeReal'}],
'indexes': [{'name': 'pk',
'fields': 'ObjectId',
'isAscending': True,
'isUnique': True,
'description': 'clustered, unique, primary key'}],
'objectIdField': 'ObjectId',
'uniqueIdField': {'name': 'ObjectId', 'isSystemMaintained': True}}]}
Hi Swakeert Jain,
The Feature Service you have linked do not contain any features. Codepen is returning 200 for all the queries.
Hi Derrick Wong,
Thanks for looking into it.
The HTTP code says 200, but if you open the response it says error: {code: 400, message: "", details: ["Unable to perform query. Please check your parameters."]}.
Also, if you open the console it shows the error.
Swakeert Jain, if you query it via the REST endpoint, it returns 0 results.
The drawing info parameter looks suspect too:
It appears that the substitution did not work and there are quite a few escape characters present:
hmm, i had a look at your other layer which drew fine, similar syntax.
I would try fixing the result count first.
Hi,
Yes the drawing info works fine when viewing on the Acrgis online map viewer. I can't figure out why there is error related to the query.
This is the query it runs by default in the codepen (change format form pbf to html) and it gives back the error. If I remove the geometry from the parameters, then there is no error. This is the part I am struggling with.
How do you suggest I try to debug this problem?
Many Thanks,
Swakeert
I tried adding your layer to a blank map on AGOL and then hit the zoom to. It broke the map; my pan and zoom stopped working. This leads me to think that the extent for the layer is incorrect?
Can you check if this is the extent specified is correct?
I don't have access to desktop/pro atm, so I can't check those points.
So, I figured out, the errors also go away when I change the Result Type to standard instead of tile. And if I add this layer as an Item, it works, but only a small set of features. If I upload my entire dataset (~2000 data points), then it stops displaying it. Is this something to do with Arcgis Online credit limits, or is there something technically wrong in something that I am doing?
Many Thanks,
Swakeert