用 folium 绘图
Plotting with folium
任务是制作一张莫斯科的地址流行图。基本上,它应该是这样的:
对于我的地图,我使用 public geojson:http://gis-lab.info/qa/moscow-atd.html
我拥有的唯一数据是点坐标,但没有关于它们所属地区的信息。
问题 1:
如果该点属于它,我是否必须为每个区域手动计算,或者有更有效的方法来执行此操作?
问题二:
如果没有办法更简单地做到这一点,那么,我怎样才能从 geojson
文件(上面的 link)中获取每个分区的所有坐标?
感谢@BobHaffner,我尝试使用 geopandas 解决问题。
这是我的步骤:
import pandas as pd
import numpy as np
import geopandas as gpd
from shapely.geometry import Point
用 geopandas 读取莫斯科地区的形状文件
districts = gpd.read_file('mo-shape/mo.shp')
构建模拟用户数据集
moscow = [55.7, 37.6]
data = (
np.random.normal(size=(100, 2)) *
np.array([[.25, .25]]) +
np.array([moscow])
)
my_df = pd.DataFrame(data, columns=['lat', 'lon'])
my_df['pop'] = np.random.randint(500, 100000, size=len(data))
从用户数据创建点对象
geom = [Point(x, y) for x,y in zip(my_df['lon'], my_df['lat'])]
# and a geopandas dataframe using the same crs from the shape file
my_gdf = gpd.GeoDataFrame(my_df, geometry=geom)
my_gdf.crs = districts.crs
然后使用默认值 'inner'
加入
gpd.sjoin(districts, my_gdf, op='contains')
任务是制作一张莫斯科的地址流行图。基本上,它应该是这样的:
对于我的地图,我使用 public geojson:http://gis-lab.info/qa/moscow-atd.html
我拥有的唯一数据是点坐标,但没有关于它们所属地区的信息。
问题 1: 如果该点属于它,我是否必须为每个区域手动计算,或者有更有效的方法来执行此操作?
问题二:
如果没有办法更简单地做到这一点,那么,我怎样才能从 geojson
文件(上面的 link)中获取每个分区的所有坐标?
感谢@BobHaffner,我尝试使用 geopandas 解决问题。
这是我的步骤:
import pandas as pd
import numpy as np
import geopandas as gpd
from shapely.geometry import Point
用 geopandas 读取莫斯科地区的形状文件
districts = gpd.read_file('mo-shape/mo.shp')
构建模拟用户数据集
moscow = [55.7, 37.6]
data = (
np.random.normal(size=(100, 2)) *
np.array([[.25, .25]]) +
np.array([moscow])
)
my_df = pd.DataFrame(data, columns=['lat', 'lon'])
my_df['pop'] = np.random.randint(500, 100000, size=len(data))
从用户数据创建点对象
geom = [Point(x, y) for x,y in zip(my_df['lon'], my_df['lat'])]
# and a geopandas dataframe using the same crs from the shape file
my_gdf = gpd.GeoDataFrame(my_df, geometry=geom)
my_gdf.crs = districts.crs
然后使用默认值 'inner'
加入gpd.sjoin(districts, my_gdf, op='contains')