Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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 将GeoJSON文件解析为数据帧会产生单个不需要的重复项,无法找到原因_Python_Json_Python Requests_Shapely_Pyproj - Fatal编程技术网

Python 将GeoJSON文件解析为数据帧会产生单个不需要的重复项,无法找到原因

Python 将GeoJSON文件解析为数据帧会产生单个不需要的重复项,无法找到原因,python,json,python-requests,shapely,pyproj,Python,Json,Python Requests,Shapely,Pyproj,我正在使用从以下链接获得的柏林邮政编码数据: 我正在使用python 3中的requests.get().json()打开文件并解析数据,以便使用多边形边界创建代表点列表,使用shapely将坐标转换为Albers等面积投影以计算多边形面积,并结合列表创建邮政编码的dataframe,他们的代表点和领域。我这样做的代码如下所示: import numpy as np import pandas as pd import requests import urllib import io impo

我正在使用从以下链接获得的柏林邮政编码数据:

我正在使用python 3中的requests.get().json()打开文件并解析数据,以便使用多边形边界创建代表点列表,使用shapely将坐标转换为Albers等面积投影以计算多边形面积,并结合列表创建邮政编码的dataframe,他们的代表点和领域。我这样做的代码如下所示:

import numpy as np
import pandas as pd
import requests
import urllib
import io
import json
import lxml.html as lh
import bs4 as bs
import pyproj
from shapely.geometry import shape, Point
import shapely.ops as ops

urlzip = 'https://tsb-opendata.s3.eu-central-1.amazonaws.com/plz/plz.geojson'
berlinzip_json = requests.get(urlzip).json()

area = []
lats = []
lons = []
name = []

for feature in berlinzip_json['features']:
        name.append(feature['properties']['plz'])
        polygon = shape(feature['geometry'])
        p=polygon.representative_point()
        lons.append(p.x)
        lats.append(p.y)
    
    geom_aea = ops.transform(
        pyproj.Proj(
        proj='aea',
        lat_1=polygon.bounds[1],
        lat_2=polygon.bounds[3]),
    polygon)
    a = geom_aea.area/1000**2
    area.append(a)
postal_codes= pd.DataFrame(data={'Postal Code':name, 'Latitude':lats, 'Longitude':lons, 'Area':area})
postal_codes = postal_codes.iloc[0:191,:]
postal_codes.sort_values(['Postal Code'], ascending=True, axis=0, inplace=True)
postal_codes
在输出中,我总是得到相同的结果,即不需要的重复。

我怀疑它可能在GeoJSON文件本身中重复,但当我手动检查该文件时,特定的邮政编码只出现一次,并且似乎没有任何异常。

我不明白为什么每次运行代码时都会出现相同邮政编码(14193)的不必要重复错误。我想知道这是否是我自己的代码中的一个问题,但我没有看到任何东西每次都会产生一个单独的副本。目前,我只是在运行代码后删除重复项,因此这不是一个主要问题,但我忍不住要问,是否有其他人经历过此问题,并且能够提供一些关于导致此问题的原因的见解


如果您有任何想法和想法,我们将不胜感激。

您的代码没有问题: 1-我使用find:
“plz”:“14193”
手动检查了geojsom文件,发现了两个值相同的邮政编码

2-如果您检查
len(berlinzip_json['features'])
的长度,您会发现它与删除
postal_code=postal_code.iloc[0:191,:]后的数据帧记录相同。


我认为您的代码没有问题

非常感谢您的帮助,我对这一点有点陌生,所以我的代码还可以,这让我松了一口气。我想在JupyterLab中使用find功能不太好,因为我在那里的手动检查中没有找到副本,但在TextEdit中打开geojson后,我就能够找到它。再次感谢你!祝你好运,你可以随时向上投票,这样其他人将来就可以对答案进行修改。我一读到它就向上投票,但堆栈溢出只显示声誉高于15的用户的向上投票,很抱歉没有显示。我真的很感激。