计算JSON折线的中点(Python 2.7.0,无库)

问题描述 投票:0回答:1

场景:

我有一个system,它向Web服务发出请求。

  • Web服务返回一个JSON对象。
  • JSON对象在数组中包含折线顶点。

JSON对象的一个​​小片段是:

{
  "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.**

完整的JSON对象可以在这里找到:JSON Polylines


问题:

使用JSON顶点,我想计算折线的midpoints](请参见下面的绿点):

  • 某些行(对象3716和3385)是多部分的。在这种情况下,仅应为线的最长部分(而不是其他部分)生成中点。
  • 为了解决此问题,可以将JSON文本另存为文本文件,并加载到python脚本中。在这种情况下,可以使用Python的JSON库-尽管下面提到了catch
  • enter image description here


输出看起来像这样(格式可以不同):

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:

这需要在Python 2.7.0中完成-因为我的系统使用Jython 2.7.0。

  • 需要特别注意的是我无法导入任何Python库到我正在使用的系统的Jython实现中。因此,不幸的是,该脚本不应导入任何python库(用于测试的JSON库除外)。

  • 是否可以使用Python 2.7.0(不导入库)来计算JSON折线的中点?

场景:我有一个向Web服务发出请求的系统。 Web服务返回一个JSON对象。 JSON对象在数组中包含折线顶点。 JSON对象的一小段代码...

python json python-2.7 jython polyline
1个回答
2
投票

是的,您可以仅使用内置的Python函数轻松地计算折线的中点,而无需导入外部库。

© www.soinside.com 2019 - 2024. All rights reserved.