我正在处理从以下链接获得的柏林邮政编码数据:https://tsb-opendata.s3.eu-central-1.amazonaws.com/plz/plz.geojson
我在python 3中使用requests.get((.json((打开文件,并解析数据,以便使用shapely的多边形边界创建一个代表点列表,将坐标转换为Albers等面积投影来计算多边形面积,并组合列表来创建邮政编码、其代表点和面积的Pandas数据帧。我这样做的代码如下:
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文件本身中重复,但当我手动检查该文件时,特定的邮政编码只出现一次,似乎没有任何异常。如GeoJSON文件所示
我不知道为什么每次运行代码时,同一邮政编码(14193(都会出现这种不必要的重复错误。我想知道这是否是我自己的代码中的一个问题,但我没有看到任何东西会每次产生一个单独的重复。目前,我只是在运行代码后删除重复项,所以这不是一个主要问题,但我忍不住要问是否有其他经历过这个问题的人能够深入了解导致这个问题的原因。
任何想法和想法都将不胜感激。
您的代码没有问题:1-我使用find:"plz": "14193"
手动检查了geojsom文件,发现了两个值相同的邮政编码
2-如果你检查len(berlinzip_json['features'])
的长度,你会发现它194与删除postal_codes = postal_codes.iloc[0:191,:]
后的数据帧记录相同
我认为你的代码没有错