我刚刚创建了一个非常简单的 geopandas 示例(见下文)。它有效,但我注意到能够拥有世界的自定义部分对我来说很重要。有时是德国,有时只是柏林。 (另外,我想按我在 geopandas 文件中定义为多边形的区域聚合我拥有的数据,但我将在另一个问题中添加它。)
如何获得与
不同的“底图”world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
用于可视化?
# 3rd party modules
import pandas as pd
import geopandas as gpd
import shapely
# needs 'descartes'
import matplotlib.pyplot as plt
df = pd.DataFrame({'city': ['Berlin', 'Paris', 'Munich'],
'latitude': [52.518611111111, 48.856666666667, 48.137222222222],
'longitude': [13.408333333333, 2.3516666666667, 11.575555555556]})
gdf = gpd.GeoDataFrame(df.drop(['latitude', 'longitude'], axis=1),
crs={'init': 'epsg:4326'},
geometry=[shapely.geometry.Point(xy)
for xy in zip(df.longitude, df.latitude)])
print(gdf)
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
base = world.plot(color='white', edgecolor='black')
gdf.plot(ax=base, marker='o', color='red', markersize=5)
plt.show()
geopandas.datasets.get_path(...)
文档中所写,必须执行
>>> geopandas.datasets.available
['naturalearth_lowres', 'naturalearth_cities', 'nybb']
哪里
搜索“germany shapefile”给出了arcgis.com url,该网址使用“Bundesamt für Kartographie und Geodäsie”作为来源。使用
vg2500_geo84/vg2500_krs.shp
的结果如下所示:
来源:
© Bundesamt für Kartographie und Geodäsie,美因河畔法兰克福,2011 年 Vervielfältigung、Verbreitung und öffentliche Zugänglichmachung、auch auszugsweise、mit Quellenangabe gestattet。
我还必须设置
base.set_aspect(1.4)
,否则看起来不对。值 1.4
是通过反复试验找到的。
柏林此类数据的另一个来源是 daten.berlin.de
当 geopandas 读取 shapefile 时,它是一个带有列的 geopandas 数据框
['USE', 'RS', 'RS_ALT', 'GEN', 'SHAPE_LENG', 'SHAPE_AREA', 'geometry']
与:
USE=4
适用于所有元素RS
是一个字符串,如 16077 或 01003RS_ALT
是一个字符串,如 160770000000 或 010030000000GEN
是一个类似 'Saale-Holzland-Kreis'
或 'Erlangen'
SHAPE_LENG
是一个类似 202986.1998816
或 248309.91235015
SHAPE_AREA
是一个类似 1.91013141e+08
或 1.47727769e+09
geometry
是一种形状优美的几何形状 - 主要是 POLYGON只有纽约(nybb)可以吗?或者,其他城市还有其他代码吗? 我的意思是它不是通过从外部 url 导入的。