Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 字符串索引必须是整数_Python_List_Coordinates_Geojson - Fatal编程技术网

Python 字符串索引必须是整数

Python 字符串索引必须是整数,python,list,coordinates,geojson,Python,List,Coordinates,Geojson,我试图从Python中的Geojson中提取坐标,当我试图从整个文件中提取坐标时,它抛出了一个错误“字符串索引必须是整数”。但当我试图提取单个坐标时,它运行良好 以下代码给出的正确结果为[46.931625,-84.52694] import geojson with open('output.json') as f: gj = geojson.load(f) features = gj['features'][0] geometry = features['geometry'] ge

我试图从Python中的Geojson中提取坐标,当我试图从整个文件中提取坐标时,它抛出了一个错误“字符串索引必须是整数”。但当我试图提取单个坐标时,它运行良好

以下代码给出的正确结果为[46.931625,-84.52694]

import geojson
with open('output.json') as f:
    gj = geojson.load(f)
features = gj['features'][0]

geometry = features['geometry']
geometry['coordinates']

但当我试图运行整个文件时,它会抛出一个错误

for feature in gj['features']:
    for geometry in feature['geometry']:
            for coordinates in geometry:
                print(geometry['coordinates'])
样本数据如下

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [
          46.931625,
          -84.52694
        ]
      },
      "properties": {
        "event": "a",
      }
    },
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [
          46.931725,
          -84.52684
        ]
      },
      "properties": {
        "event": "a",
      }
    }
  ]
}

你能帮我纠正这个错误吗。提前感谢。

嗯,
功能['geometry']
是一个字典,因此下面的一行将遍历该dict的键:

for geometry in feature['geometry']:
由于
几何体
是一个键,例如
“type”
,它是一个字符串,因此会出现该错误。此外,您似乎没有在代码中的任何地方使用循环变量
坐标

请尝试以下操作:

for feature in gj['features']:
    print(feature["geometry"]['coordinates'])
或者更好

for feature in gj['features']:
    lat, lon = feature["geometry"]['coordinates']
    print("Lat:", lat, "Lon: ", lon)
这会导致类似的结果

('Lat:', 46.931625, 'Lon: ', -84.52694)
('Lat:', 46.931725, 'Lon: ', -84.52684)

嗯,
feature['geometry']
是一个字典,所以下面一行将遍历该dict的键:

for geometry in feature['geometry']:
由于
几何体
是一个键,例如
“type”
,它是一个字符串,因此会出现该错误。此外,您似乎没有在代码中的任何地方使用循环变量
坐标

请尝试以下操作:

for feature in gj['features']:
    print(feature["geometry"]['coordinates'])
或者更好

for feature in gj['features']:
    lat, lon = feature["geometry"]['coordinates']
    print("Lat:", lat, "Lon: ", lon)
这会导致类似的结果

('Lat:', 46.931625, 'Lon: ', -84.52694)
('Lat:', 46.931725, 'Lon: ', -84.52684)

样本中的要素是唯一的阵列对象。循环遍历特征并获得坐标数组

压缩代码:

print([features['geometry']['coordinates'] for features in gj['features']])
这将循环通过gj['features']
并仅打印每个特征的
特征['geometry']['coordinates']

您的脚本将如下所示

import geojson
with open('output.json') as f:
    gj = geojson.load(f)

print([features['geometry']['coordinates'] for features in gj['features']])


样本中的要素是唯一的阵列对象。循环遍历特征并获得坐标数组

压缩代码:

print([features['geometry']['coordinates'] for features in gj['features']])
这将循环通过gj['features']
并仅打印每个特征的
特征['geometry']['coordinates']

您的脚本将如下所示

import geojson
with open('output.json') as f:
    gj = geojson.load(f)

print([features['geometry']['coordinates'] for features in gj['features']])