Python 用叶标绘

Python 用叶标绘,python,json,folium,Python,Json,Folium,任务是为莫斯科制作一张地址流行图。基本上,它应该是这样的: 对于我的地图,我使用公共geojson: 我仅有的数据是点坐标,没有关于它们所属地区的信息 问题1: 如果该点属于每个District,我是否必须手动计算该点,或者有更有效的方法进行计算 问题2: 如果没有更简单的方法,那么,如何从上面的geojson文件链接获取每个District的所有坐标?多亏了@BobHaffner,我尝试使用geopandas来解决这个问题 以下是我的步骤: 我使用此链接为莫斯科下载了一个形状文件 从包含x、y

任务是为莫斯科制作一张地址流行图。基本上,它应该是这样的:

对于我的地图,我使用公共geojson:

我仅有的数据是点坐标,没有关于它们所属地区的信息

问题1: 如果该点属于每个District,我是否必须手动计算该点,或者有更有效的方法进行计算

问题2:
如果没有更简单的方法,那么,如何从上面的geojson文件链接获取每个District的所有坐标?

多亏了@BobHaffner,我尝试使用geopandas来解决这个问题

以下是我的步骤:

我使用此链接为莫斯科下载了一个形状文件 从包含x、y纬度和逻辑坐标的元组列表中,我创建了点列表 假设在第一个链接的数据帧中有多边形,我可以编写一个简单的循环来检查点是否在该多边形内。详情请阅读。 使用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')

关于问题1,我想利用Geopandas之类的工具,它可以使用geojson文件,并具有一个名为sjoin的函数,您可以使用该函数确定坐标所在的区域。您好,您有解决方案吗?顺便说一句,您走对了。第3步可以用sjoin@BobHaffner步骤3根本无法完成。当我使用.contains方法时,我的json中没有包含任何点的多边形。这很奇怪。在步骤2中创建点时,请确保传递的坐标顺序正确经度、纬度我以前犯过这个错误:-好的,我将发布一个可能有帮助也可能没有帮助的解决方案
gpd.sjoin(districts, my_gdf, op='contains')