繁体   English   中英

将 geojson url 转换为 pandas(解析)

[英]Turn a geojson url to pandas (parsing)

我正在尝试将 geojson 文件从 URL 转换为数据框(熊猫)。 我已经阅读了该文件,但是,当我尝试将其转换为数据框时,它并不像我预期的那样。

!wget -q -O 'wuppertal.json' https://offenedaten-wuppertal.de/sites/default/files/Stadtbezirke_EPSG4326_JSON.json
print('Data downloaded!')


import urllib.request, json 
with urllib.request.urlopen("https://offenedaten-wuppertal.de/sites/default/files/Stadtbezirke_EPSG4326_JSON.json") as url:
wuppertal_data = json.loads(url.read().decode())
print(wuppertal_data)

out: "{'type': 'FeatureCollection', 'name': 'Stadtbezirke_EPSG4326_JSON', 'features': [{'type': 'Feature', 'properties': {'NAME': 'Langerfeld-Beyenburg', 'BEZIRK': '8', 'FLAECHE': 29391400}, 'geometry': {'type': 'Polygon', 'coordinates': [[[7.2510191991, 51.2917076298], [7.2505557773, 51.292270028], [7.2500517827, 51.2927158789], [7.2494997409, 51.2930461331], [7.2490203901, 51.2932752364], [7.2486303801, 51.2934148015], [7.2485802227, 51.2934327502], [7.2485234407, 51.2934518902], [7.2480306248, 51.2936180109], [7.2474431132, 51.293759494], [7.2471658102, 51.293788208], [7.2470561109, 51.2937995666], [7.24715411, 51.2937666386],...."


  neighborhoods_data = wuppertal_data['features']
 out: {'geometry': {'coordinates': [[[7.2510191991, 51.2917076298],
[7.2505557773, 51.292270028],
[7.2500517827, 51.2927158789],
[7.2494997409, 51.2930461331],
[7.2490203901, 51.2932752364],
[7.2486303801, 51.2934148015],


for data in neighborhoods_data:
neighborhood_name = data['properties']['NAME']
coordinates = data['geometry']['coordinates']
neighborhoods = neighborhoods.append({'Neighborhood': neighborhood_name,
                                      'Coordinates': coordinates}, ignore_index=True)


out : Neighborhood  Coordinates
0   Langerfeld-Beyenburg    [[[7.2510191991, 51.2917076298], [7.2505557773...
1   Uellendahl-Katernberg   [[[7.1677144694, 51.3126516481], [7.1674618797...
2   Cronenberg  [[[7.1173964686, 51.2337079198], [7.117197067,...

问题是,在我表的每一行中,我都有一个邻居,所有坐标都聚合在一行中。

我希望每一行都有:邻里/纬度/经度

e.g: barmen/32,34/21,34
 barmen/..
 ...
So duplicate the neighborhood

如果你能帮助我谢谢!

可能是一种更有效的方法,但这确实有效:

import urllib.request, json 
import pandas as pd


with urllib.request.urlopen("https://offenedaten-wuppertal.de/sites/default/files/Stadtbezirke_EPSG4326_JSON.json") as url:
    wuppertal_data = json.loads(url.read().decode())

neighborhoods_data = wuppertal_data['features']

results = pd.DataFrame()
for data in neighborhoods_data:

    neighborhood_name = data['properties']['NAME']
    temp_df = pd.DataFrame(data['geometry']['coordinates'])
    temp_df = temp_df.T
    temp_df = pd.DataFrame(temp_df.iloc[:,0].tolist(), columns=['Latitude', 'Longitude'])

    temp_df['Neighborhood'] = neighborhood_name

    results = results.append(temp_df).reset_index(drop=True)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM