Scenario:
I have a system that makes a request to a web service.
- The web service returns a JSON object.
- The JSON object contains polyline vertices in an array.
A small snippet from the JSON object would be:
{
"objectIdFieldName": "OBJECTID",
"globalIdFieldName": "",
"geometryType": "esriGeometryPolyline",
"spatialReference": {
"wkid": 476,
"latestWkid": 476
},
"fields": [
{
"name": "OBJECTID",
"alias": "OBJECTID",
"type": "esriFieldTypeOID"
}
],
"features": [
{
"attributes": {
"OBJECTID": 3311
},
"geometry": {
"paths": [
[
[
675844.1562959617,
4861766.9811610579
],
[
675878.30397594348,
4861792.5977392439
],
[
675891.38832408097,
4861800.4024024364
],
[
675902.17710777745,
4861804.9933949765
],
[
675912.27726199664,
4861808.2070551421
],
[
675923.52513550781,
4861810.2730065044
],
[
675934.77300901897,
4861811.1911861338
],
[
675943.03676202707,
4861811.1911861338
],
[
675951.07095439639,
4861810.502546167
],
[
675961.17111910321,
4861808.6661449578
],
[
675970.35304125212,
4861806.1411667075
],
[
675981.51595173683,
4861800.7007851209
],
[
675998.03647276573,
4861792.2469376959
]
]
]
}
},
**The JSON object has been cut off.**
The full JSON object can be found here: JSON Polylines
Question:
Using the JSON vertices, I would like to calculate the midpoints of the polylines (see green dots below):
- Some of the lines (OBJECTIDs 3716 and 3385) are multi-part. In this case, the midpoint should only be generated for the longest part of the line (not the other parts).
- For the purpose of solving this problem, the JSON text could be saved as a text file, and loaded into the python script. In this case, Python's JSON library could be used--despite the catch that is mentioned below.
The output would look like this (the formatting can be different):
OBJECTID MIDPOINT_X MIDPOINT_Y
2165 676163.9343 4861476.373
2320 676142.0017 4861959.66
2375 676118.1226 4861730.258
2682 676060.3917 4861904.762
2683 675743.1666 4861724.081
2691 676137.4796 4861557.709
3311 675916.9815 4861809.071
3385 676208.669 4861536.555
3546 676262.2623 4861665.146
3547 676167.5738 4861612.699
3548 676021.3677 4861573.141
3549 675914.4334 4861669.87
3550 675866.6003 4861735.572
3551 675800.1232 4861827.482
3552 675681.9432 4861918.989
3716 675979.6493 4861724.323
The Catch:
This would need to be done in Python 2.7.0 -- since my system uses Jython 2.7.0.
- It's important to note that I can't import any Python libraries into the Jython implementation in the system that I'm using. So, unfortunately, the script should not import any python libraries (other than the JSON library for testing).
Is it possible to calculate the midpoints of a JSON polylines using Python 2.7.0 (without importing libraries)?
from Calculate the midpoint of JSON polylines (Python 2.7.0, no libraries)

No comments:
Post a Comment